Updating extensions in the GitHub repo for Inform7 v10

As a side note, there are a half dozen different versions of Inline Hyperlinks scattered through different authors’ folders, mostly dealing with different ways to fix version-related bugs. I believe mine just changed “indexed text” to “text”, with “substituted form of…” inserted where appropriate, but I’m not sure what the differences between other people’s versions are.

If we’re updating things for the new version, it might be a good opportunity to get this straightened out and come up with a single canonical version of that extension.

2 Likes

FWIW:

This is the complete list of extensions in the repo with “Hyperlinks” in their names.

./Juhana Leinonen/Vorple Hyperlinks.i7x
./Dannii Willis/Hyperlinks.i7x
./Leonardo Boselli/Tutorial Mode Hyperlinks IT.i7x
./Leonardo Boselli/Basic Help Hyperlinks IT.i7x
./Leonardo Boselli/Tutorial Mode Hyperlinks.i7x
./Leonardo Boselli/Basic Help Hyperlinks.i7x
./Emily Short/Basic Hyperlinks.i7x
./Gavin Lambert/Inline Hyperlinks.i7x
./Gavin Lambert/Hyperlinks.i7x
./Daniel Stelzer/Inline Hyperlinks.i7x
./Erik Temple/Inline Hyperlinks.i7x
./Erik Temple/Glimmr Graphic Hyperlinks.i7x

Only three of them are variants of “Inline Hyperlinks”: Erik Temple’s is the original. Daniel Stelzer’s (yours) is based on that.

Gavin Lambert’s is rewritten from scratch based on that and on Dannii Willis’s Hyperlinks, meaning it is probably the newest. Gavin Lambert also has a Hyperlinks “core event loop” framework, and a Hyperlink Extension Registry to prevent various extensions from stepping on each others’ toes! Possibly this is overbuilt – or possibly this the correct core model to use. IDK.

All depend on Eric Eve’s Text Capture, which we should probably get ported first. I may work on that.

Leonardo Boselli’s suite instead depends on Emily Short’s Basic Hyperlinks (and Text Capture, again).

Juhana Leinonen’s is for Vorple, and is even more generic, potentially opening an actual web site or executing arbitrary code. It is strictly for Vorple.

There’s also Erik Temple’s Glimmr Graphic Hyperlinks, which I didn’t look at but seems likely to be largely unused (IDK?).

And as mentioned previously, Danni Willis’s Hyperlinks.

I admit to having little idea what to make of this zoo. I am determinedly textual and typing and parser oriented. I think (but am not sure) that all (or most?) of these are designed to do some variation of the same thing, which is clickable phrases which enter a new command or do something similar. If it’s this popular, arguably there ought to be a standard extension distributed with Inform, and it ought to be integrated into the language.

But given my tastes, that isn’t a job for me.

I may, however, work on Text Capture; it probably also should be a standard extension given its low-levelness, but it needs to be updated.

1 Like

Huh, fewer than I’d thought. I was probably mixing Basic Hyperlinks and Dannii’s Hyperliks in with the others.

For Text Capture, I admit I have no real idea how to update it to the new version. It relies on a feature of the Z-machine and Glulx that lets output be temporarily redirected to a buffer in memory, and I’m not sure how well-supported raw assembly tricks are in the new Inform. (I am very curious to know, though, if anyone does.)

EDIT: Perhaps I spoke too soon. It does look like kits are written in raw Inform 6 with assembly syntax supported.

1 Like

I have updated versions of Text Capture and several Eric Eve extensions ready to go. I’ll try to get 'em out this weekend, but I can definitely do Text Capture.

re Hyperlinks, I haven’t tried porting any of the Glk stuff 'cause there’s a complication here we should hash out. Flexible Windows and most modern Glk-stuff extensions depend on Glulx Entry Points version 10/200602 as rewritten by Dannii and depending on his Glulx Definitions and Glk Object Recovery and Glk Events.

Inform v10 has as an Internal module Glulx Entry Points version 11 that is essentially the same as 6M62/9.3’s GEP 10/140425 with the I6 inclusion syntax updated.

I think it’d be generally bad and confusing for the bulk of extensions to depend on a GEP forked from the one I7 v10 ships with. Other than making a case for the current stack to be officially adopted, the alternative I see would be to make some kind of shim Glk Stuff extension that would include GEP v11 and something much like the current Object Recovery and Glk Events (but probably not Glulx Definitions, much of which is already in v11). And then it would add/modify whatever bits to (theoretically) make it a drop-in replacement for GEP 10/200602. Which is easy to say, but I don’t know how hard it’ll be in practice till someone tries it.

1 Like

Yeeeeeeah, it makes sense to have the extensions depend on the version of Glulx Entry Points which ships with Inform. Perhaps Dannii could clarify the relative merits of Dannii’s version so we can figure out to what extent and why/where the other extensions are depending on it? @Dannii There may be different approaches wanted for different features.

In the meantime, my utter disinterest in graphics means I’ll be staying away from that stack. I’ll update text-and-parser stuff, someone else can work on graphics.

That is my intention, though probably not till after 10.1 is properly released as it’s lower priority than the other tasks required before then.

2 Likes

IDK, it’s nice to get this sort of stuff rolled into the release. Though there are certainly higher-priority things (such as rolling in everything which is a straight-up bug fix).

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