Non-binary Pronoun Discussion

From Introducing Ourselves - #1296 by sadiedemight.

1 Like

Yeah, that extension really isn’t meant to solve the non-binary issue.

Your extension looks excellent and looks like it might do more than what I added to Nathanael’s. Does it handle conjugation for people using they/them?

Edit: I must add that @Zed contributed critical code for getting the singular they working.

1 Like

What I’ve got so far overwrites the Standard Kits’ PronounNotice() which in effect updates each “them” form’s current target to be the mentioned noun (the one either just named by in the command or the one passed to “[regarding the…]”), if that “them” is one of the pronouns that the “pertentent pronouns” rulebook says the object should match.

E.g. a story can say “Pertinent pronouns about Chris: they-them appertains.” and then when the player says “x chris”, future uses of “they” refer to Chris.

1 Like

Oh, yes. You can say “[Chris] [is] here. [They] [is] non-binary.” and it’ll print “Chris is here. They are non-binary.”.

(I’ve overwritten “[they]” to remember to conjugate with the pronoun form rather than the person it refers to. It should work for all verbs, including new ones, without any additional change.)

2 Likes

Sounds perfect. I’ve got a v9 WIP that uses my/Nathanael’s work, but when I do a follow-up on v10 I’ll look into what you’ve done.

My plan for next steps on my code were to improve documentation (which interface tweaks as needed) and making it work with Z-machine (I’m not ever sure it doesn’t, but something in my testing layer is dying before I get far enough to tell.) and checking what older versions it’s compatible with. The v10 extension mechanism seems to be smarter than v9, so I don’t have any code indicating where to interpolate my replacements, which might be a problem, but I don’t think I’ve relied on any v10 features in the I6 I’ve written, so I’m hopeful.

What do you use as a testbed for your extension? How do you check “if it works” for any definition of “works”?

I’d also like in the much longer term to move a bunch of code from runtime startup to imperative time, but that’s a much bigger undertaking.

Ah testing. My big failing when it comes to I7. Which is weird because I’m an obsessive unit tester in my paid work. The v9 version of Inclusive Gender Options I’ve road tested pretty well (though still incompletely) using it in my WIP, but I can’t say the same for the v10 version.

My intent is to work on unit tests for some of my extensions, but life and working on competition games keeps interfering.

Bah. I was hoping there was some grand trick I was missing.

My bad solution was to define an Extension project, which let me write several different short story files in one physical file, but have that project have no code itself, instead having the real extension and re-used testing code as resources to the dummy project. It’s working, and it lets me do regression tests, but it feels wrong. And at least currently, I’m just manually duplicating certain things, like the examples in the documentation of the extension proper.

I was wondering if I needed to go learn some other tool like Intest, but that seemed like yet more work, and as much as I appreciate the theory of “literate” code, I find the Inform codebase rather hard to navigate.

1 Like

@zarf has a script for testing inform 7 games at least, that for the life of me I cannot remember the name of (and cannot Google for some reason), and I’m hoping he’ll pop in here and tell us.

ack! never mind I found it: RegTest: Simple IF Regression Tester

Also refer to Latest on unit testing in Inform 7

1 Like

Nothing to add here on the technicalities, I’m just really glad to see people still talking about this. I messed around with some ideas a few years ago, but I had absolutely no clue what I was doing, a fact immortalized on this very forum. I tried to learn more and continue with it, but found myself quickly exhausted by the apparent complexity of the task and obscurity of some of the needed information. Since I gave up, I’ve noted a few people continuing to work on additional pronoun support, and to all of those people I’m very grateful. The lack of this feature has been a pretty significant barrier to the stories I want to tell when writing in Inform 6 and 7, and the amount of extra effort required to do something linguistically trivial has been both distracting and a little discouraging. “I want to get on with writing the actual characters! Why is pronoun control not a feature of the parser!” And other such complaints.

So my sincere thanks to everyone working on this. Your work is important and appreciated. :heart:

6 Likes

Please give my extension a try!

I think I’ve got a decent handle on making it do things I can imagine authors doing, but what I don’t know is if I’m missing features and which features need to be easier to access.

3 Likes

I certainly will, will let you know how it goes! :smiley:

Sadie – This is absolutely great. This is what I would have made if I could have.

When I wrote my extension, I ended up in the guts of the I6 code working out how to replace innards, and I did not have the time or energy to do more than the minimum I6 rewrite. In particular, I did not dig into the parser deep enough to figure out how to get it to recognize new words as pronouns. I see that you have done the extensive I6 rewriting, including the new tables which are necessary.

I was also much more focused on recognition of input from the user than on printing.

I’d like to see if I can rewrite everything from the City Park test from Gender Options, including the ship (which can be referred to by the player as “she” or “it” but text printed by the game uses “it”), to work with your code. I’m not quite sure how the interface on your extension works for stuff like this despite the documentation, but I’m going to give it a shot.

I have one more conceptual use case I’d like to test. A room with a single character, “Chris”, whose preferred pronouns are revealed partway through play – before the reveal, the game refers to them using they/them, but recognizes him & her when typed by the player (while recording them in order to keep track of the player’s unconscious assumptions). After the reveal, the game only accepts the preferred pronouns, but redirects other pronouns to a “You remember that’s not the right pronoun” message. It looks like this is close to being possible with your extension?

I will give one piece of advice from experience: don’t try to backport this to any version before 10.1. Although the actual relevant algorithms in Core Inform hasn’t changed in yonks, there have been tedious interface changes repeatedly which have required constant updating just to keep it compiling; you really don’t want to bother to try to backport it.

Oh. Also, problems with Z-machine are likely to be related to differing ARRAY format. :frowning: There’s some subtle but game-breaking low-level differences. I’d look there first when trying to get it working for Z-machine.

4 Likes