Updating extensions in the GitHub repo for Inform7 v10

The version of Vorple in master (and thus in 9.3) has been behind the current version for a while. @Juhana, do you still want Vorple in the Friends repo, or would you prefer to leave the Vorple repo as its canonical home? Should it be removed from 9.3 ?

1 Like

I’ve submitted pull requests to 10.1 to incorporate most of the missing Aaron Reed and Eric Eve extensions, as well as Approaches and a few others. And I made a wiki page on the Friends extensions repo to list what’s in the 9.3 branch but not in the 10.1 branch. And now maybe I’ll stop futzing with other people’s extensions so much and get to updating my own.

I don’t mind either way, but it has never made much sense to me to have a copy in the extensions repo. I’m certainly not planning to keep it up to date there in the future.

1 Like

So, I was trying to think of downsides of removing Vorple from the Friends repo, and I didn’t come up with much.

The only annoyance I can think of in removing it is potential difficulty with the strategy of making the primary “Extensions” folder in their install a checkout of the Friends repo (a strategy I use for doing work on extensions). Since Juhana’s got other non-Vorple extensions in the Friends repo, one can’t just overwrite their folder locally. But I think anyone doing that and using Vorple could drop the Juhana Leinonen folder from Vorple into the game-specific Extensions folder; Vorple’s extensions don’t change that often, and probably nobody but Juhana is going to be hacking on it much.

So: we should add a reference to Juhana’s Vorple repo in the “Where to find extensions” post on this forum, and delete all the Vorple stuff from the master and 10.1 branches. I’m not sure what should be done about the 9.3 branch, since Juhana has clearly already dropped 9.3 support – maybe pull the last version of Vorple v3 ( 3/181103 ) from Juhana’s repo and leave that in the 9.3 branch?

2 Likes

That sounds like the best solution. You’re right that the 6M62-compatible 3.x branch won’t get any updates unless someone finds a major bug there, and Inform v. 10 has “nests” which lets you have as many extension sources as you like so everything doesn’t need to be in the same place.

1 Like

I’ve updated Where to find Inform 7 Extensions to mention the Vorple downloads page for Vorple, and finally updated Inform 7 documentation and resources to replace most of its Extensions section with a link to the Where to find I7 Extensions post.

I’ve brought this up before, but I think v10’s imminence makes it more relevant – there are 3 separate sticky threads about extension updating and compatibility dating to 6L02/6L38 in the Inform Extensions subcategory. I think their stickiness has outlived its value at this point.

Should we go through and see how many of those “most wanted updates” extensions can/should be updated for 10.1 (and how many have been already) before dropping the stickies?

Maybe make a To-Do list and leave it here?

It’s a pity we never achieved the dream of an extension census. But also little surprise: I can’t think of any decent ways to meaningfully effect it either. Maybe just a direct appeal to the authors of the I7 games in the major competitions for the past 3 years. (Something could be attempted with running ‘version’ on them all, but so many extension authors are so often modest.)

But rereading those threads and looking for correspondence with the unupdated extensions is a great idea (if not one I’m volunteering for. :slight_smile: )

1 Like

I’m not sure I can say I’m working on Print Stage Detection Fix! I’m feeling a little stymied.

I’d like to get the code into the main repo, but I’d also like to preserve Taryn Michelle’s extensive documentation. That’s probably quite copyrightable. And I don’t think we have a license release from Taryn Michelle? Does someone know how to reach Taryn Michelle?


On the topic of “Most Wanted” from way back when: what I see mentioned, removing those which are already updated to 10.1 or have a mentioned replacement already updated to 10.1, is:

Title Screen -- I can find no record of this, even in the archive repo
Simple Glulx Window -- I can find no record of this, again
Approaches -- added to your wiki page of stuff needing ports from 9.3 to 10.1
Scheduled Activities -- added to your page of stuff needing ports from 9.3 to 10.1
Consolidated Multiple Actions -- already on your page
Hypothetical Questions -- is in the archive repo only
Glulx Input Loops -- is in the master branch, but didn't work in 6M62

So not a long list. Hypothetical Questions is only in the archive repo. Scheduled Activities is in the 9.3 branch but apparently was missed by your wiki list… so I added it to the list. Same with Approaches.

Thanks for looking for the most wanted. I’ve done Approaches, Scheduled Activities, and Hypothetical Questions. That’s why I left them out of the list. But my pull requests haven’t been approved yet.

And Title Page, Simple Glulx Window, and Glulx Input Loops are all Glk-stack things.

I took a quick look at Consolidated Multiple Actions and have to conclude that Hypothetical Questions isn’t as done as I thought it was – CMA’s use of it resulted in some gibberish I6 being generated.

Taryn Michelle has an account here, but seems to have shown up, written that module, and then disappeared forever all in the span of February 2014.

1 Like

Thanks. I’m probably going to use the other one (Indefinite Article Substitution Fix) as my basis after further investigation, so it may not be a problem. Still debating the approach.


I’m going to suggest that while you’re updating, you make some adjustments in keeping with my Style Guide. Specifically, each say-phrase, and each to-phrase really ought to have their own section, for replaceability by story files. The verbs and “Understand” phrases should be sectioned off for potential replacement too. Approaches, in particular, isn’t subdivided at all. (Most of the others are.)


Text Capture is extremely basic and in use by a lot of extensions. Is there consideration towards submitting it to be part of Core Inform’s standard extensions, if Eric Eve is willing?


I suspect “Title Screen” was a reference to Jon Ingold/Title Page.i7x. For which, note that Daniel Stelzer had to modify it for Scroll Thief, so we should roll in said modifications.


I’m going to make one more suggestion: I think everything which is updated for 10.1 should have the 10.1 version put in the master branch. This is what I’ve been doing, and I think it makes sense, if the master branch is going to be the “hack on the experiment” version, you want to start from the most modern version.

There’s also a Gavin Lambert refactoring by the same name, but I have no clue about the relative merits of either.

In terms of updating third-party extensions for 10.1, my tactic for the short term has been to emphasize getting more working extensions in place over doing fine-grained QA on each, to minimize the extent to which we reproduce the mess of the 6G60 → 6L02 transition.

Also, given how easy it is to introduce bugs with even the most innocent-seeming refactoring, I wouldn’t be comfortable with it without building a test suite first: I really don’t want to break something with someone else’s name on it (something I already did early in this process, but fortunately Dannii noticed it). And making a decent test suite becomes time-consuming. (When my current pull requests are accepted, my Unit Tests extension will be in 10.1; it’s what I needed to update first before I could start with my other extensions.)

3 Likes

The indefinite article issue is a bear and a half, to put it mildly. The sneaky thing is that Inform, internally, is effectively doing a version of Eric Eve’s Text Capture in its core code. I think I’ve figured that part out and now I’m trying to design the appropriate activity for smart handling of words like “herbal” (US pronounciation) or “unicorn”.


@Zed, worth noting: Chapter and Section headings in the documentation need to be “Chapter -” or “Chapter:” to format properly. The punctuation is mandatory. (In fact the “-” version has only been allowed since a patch I submitted last week.) This was probably easy to miss since the formatting has been broken since the release of 6M62. In the code, the dominant style is “Chapter -”.

1 Like

I’ve updated and reorganized the 10.1 Extension status wiki page to reflect recent discussion here, and to say that I’ll claim updating Consolidated Multiple Actions by John Clemens (“claiming” is just letting people know someone’s working on it).

So far as I know, of authors with unported/unclaimed extensions, these are people who aren’t actively maintaining their own extensions anymore: Emily Short, Eric Eve, Erik Temple, Jon Ingold, Ron Newcomb. Does anyone know whether I’m mistaken about any of those, or whether there are others who should be there?

1 Like

I have Indefinite Article Substitution Fix working (and working on Z-machine, and I’ve fixed at least one obscure bug which might hit non-English languages, and it’s cleaner code than before), but it lacks functionality possible in Print Stage Detection. Working on figuring out how to shoehorn that in.

What I really want to do is to be able to call out to an activity which can be optionally programmed by the game author, which looks at a text and decides on the article based on the text. And if the activity hasn’t been programmed or its rulebook returns whatever-value-is-appropriate-to-mean-didn’t-interfere, the default implementation will happen. I can’t figure out how to do the callback from I6.


If I ever finish this, I might take a crack at Disambiguation Control, which I have frequently wanted, but I’m not sure I’ll get to it right away.


Blech. I’m realizing that what I really want to do for the indefintie artilce issue is to create a text from I6 code, and initialize it with the output which has been printed to an array in memory. (The key issue is reentrancy: we really want a new buffer for each call, dynamically allocated; but we also want to give I7 code a chance to intervene, so it ought to be a text.) I have no clue how to do this. I’m poking around in BasicInformKit but the situation remains non-obvious.

1 Like

This is the use case for which activities were designed, really.

I haven’t tried to build one in a long time, but it roughly looks like

if (ForActivity(WHATEVER) == false) {
    ! do default stuff
}
2 Likes

So I’ve finally made some progress on the Glk ecosystem for Inform.

Glulx Entry Points was removed from the built in extensions in Inform 10.1. Instead of basing most of the Glk extensions on this extension, we are planning to incorporate most of it into the core of Inform. This weekend I’ve written up a formal proposal document, and done a rough implementation of the new Glk Kit.

The one part that I’m not planning on incorporating into GlkKit is the command replacement part of GEP. So my first set of questions to the community are about command replacements:

  1. How have you used Glulx Entry Point’s command replacements in the past?
  2. Is there any part of it that is awkward to use as an author?
  3. Is there anything you wish you could do, but haven’t been able to?

Second, I am thinking it would be helpful to add a minimal Glk windows implementation into GlkKit. This would not be the full Flexible Windows sytem (though perhaps in the future we may decide it too should be incorporated.) Instead it would just be a minimal definition of a Glk window kind that would allow all Glk extensions to be multi-window aware. For example, Flexible Windows largely reimplements Glulx Text Effects within itself, because the original extension can’t be simply made to work with multiple windows. By adding a Glk window kind, extensions like Glulx Text Effects can be designed to work whether or not Flexible Windows is used.

The idea is that there would be a Glk window kind with a few essential properties, and the standard built in windows would also be defined. Opening new windows would not be included, that would still be part of FW.

  1. Which properties do you think would be helpful to include in the minimal Glk window kind? At the moment I’m thinking rock number, reference number, and type. Maybe a pending input property, as it could be helpful to track that.
3 Likes

Sounds like a great idea to push some basic subset of Flexible Windows further down the stack, but I’ll have to think more to have an opinion about what. :smiley: Thanks, Dannii – it’s fantastic to hear of progress on the Glk front.

1 Like

When I was implementing the Hyperlinks extension I needed some form of command replacement, but the one in GEP didn’t work for me, so I made my own, which also fixes some fundamental problems with the current event model. It would be nice if this were incorporated into the basic event system rather than having to hack around it.

1 Like

After playing around a little with hyperlinks in GlkKit, I had suggested to Dannii that at least Glk Input Suspending-ish cancellation of existing waits stuff get baked in at a low level.

1 Like