Extension Pain

This will sound like a rant and I guess it is. But given what seems to be a multi-year release cycle of Inform, it’s very unclear to me why extensions are such a pain. Case in point. I use this line:

Include Common Commands Sidebar by Alice Grove.

That’s an extension from the Public Library that a new user may very well want to try out. I compile. I’m told:

"I can't find the extension 'Flexible Windows by Jon Ingold', which seems not to be installed, but was requested by: 'Include version 15/160122 of Flexible Windows by Jon Ingold"

So I guess shouldn’t the system work like literally any other dependency system and grab the dependencies it needs automatically? This is especially the case because when I look in the Public Library, there is no such extension at all. Flexible Windows is not there. So even if there’s no automatic dependency grabbing, why would the public library not have the extensions that other extensions need? I would think that’s a requirement for any extension being in the public library: that dependent extensions are also in the library. What would be the argument for that not being the case?

So I guess it’s up to the user to search around and stumble upon it. And I do mean stumble.

I say that because then I do a search and come up with this:

github.com/i7/extensions/blob/m … indows.i7x

But that’s Version 15/170131 of Flexible Windows. Which is not what I need based on the original extension, apparently.

I do another search. I come up with this:

inform7.com/extensions/Jon%20Ing … index.html

But that’s version 13/130803 of Flexible Windows. Also not what I need, apparently.

I do a search on “15/160122 of Flexible Windows” and all that comes up is this:

github.com/I7-Standard-Examples/Bronze/issues/3

I realize I could keep searching and probably find something. But I’ll turn to the crew here: what’s the normal way of handling these situations? Do I update my local extension of Common Commands Sidebar to ask for a more updated version of Flexible Windows? Then download that more updated version and install it in Inform?

I know it’s easy to bitch and whine about something but Inform clearly chose a design path of extensions and making a public library, so a base level of consistency seems reasonable. And it’s not like releases are so frequent that extensions would have trouble keeping up. If that’s not the case, it would be interesting to hear why not. I’ve encountered more than one situation where the experience is very much like the above.

When an extension depends on another extension the version numbers don’t need to be exact. If the main version number before the slash is the same then that should indicate general compatibility. If the number is higher than what you need it will probably be okay, although occasionally version updates aren’t backwards compatible. Then for the date number after the slash, you just need it to be as high or higher than what is request. So when you need 15/160122 installing 15/170131 is fine.

Okay, good to know. That gets me a little farther. Next error was:

“I can’t find the extension ‘Alternative Startup Rules by Dannii Willis’, which seems not to be installed, but was requested by: 'Include version 1/140516 of Alternative Startup Rules by Dannii Willis”

Find that. Install it. Then I get:

“You wrote ‘Include version 10/160919 of Glulx Entry Points by Emily Short’ : but my copy of Glulx Entry Points by Emily Short is only version 10/140425.”

So here, it appears the version included by default with Inform is not recent enough? I guess not. So I grab that; install it. Then I get:

“I can’t find the extension ‘Glulx Definitions by Dannii Willis’, which seems not to be installed, but was requested by: ‘Include version 1/160919 of Glulx Definitions by Dannii Willis’”

… and so on and so forth. Maybe the original extension I’m trying is a particularly problematic one. But all of this cannot possibly be the experience intended by making a public library and having an extension based system.

Just to cap off the experience. Beyond the ones I mentioned I also needed to get Glk Object Recovery and Glk Events. When I finally seem to get every extension installed and a compile going, I get:

In Part - Glk Window Attributes in the extension Common Commands Sidebar by Alice Grove:
Problem. I am reading the sentence ‘The rock of the sidebar is 225’ as saying that a thing called ‘rock of the sidebar’ is a value, but this makes no sense to me - it would be like saying ‘the chair is 10’.

So, basically, until I debug an extension, it looks like I’m going nowhere. But if an extension doesn’t work, does that mean it should be removed from the Public Library? Or, rather, should there be tests to make sure that an extension works before being included in the Public Library?

The public library mustn’t have the latest version of CCS: github.com/i7/extensions/blob/m … idebar.i7x

Needing to rely on one person to approve updates to the public library is not ideal. Plans for a better library which will let authors update their own extensions are in the works.

Some kind of npm/bower/yarn like system would be nice.

Of course this would change how I7 is constructed, but it’s such a common thing on the web these days that most people would be able to learn it.

Apologies. The version of Common Commands Sidebar that’s in the public library works with the version of Flexible Windows that was current at the time it was released. But Flexible Windows has undergone changes since then. So if you’re using the latest version of Flexible Windows, you’ll want this version of Common Commands Sidebar that has been updated to reflect the changes in Flexible Windows. Really, the only difference is that “rock” has been changed to “rock number”.

The main reason I haven’t submitted the new version to the public library is that I haven’t been able to test it. I’m using an earlier version of Inform and earlier versions of various other extensions. At this point I’m not sure if I should ask someone to test it, or what.

(If anyone wants to volunteer to confirm that the examples work in the latest version, please let me know!)