Extensions & Contractions

This week I’ve been working on updating my Inform 7 Handbook. It’s rather discouraging process.

Central to my discouragement is the chaotic state of the Inform extensions arsenal. In chapter 3 of my Handbook (which is a full-length book that has been, and presumably will be, available as a free PDF), I had guided the reader toward using a handy extension called Consolidated Multiple Actions by John Clemens. Published in 2008, this extension was designed to convert ugly 1980s-style output of this sort:

>drop dollars
silver dollar: Dropped.
silver dollar: Dropped.
silver dollar: Dropped.
silver dollar: Dropped.
silver dollar: Dropped.

…into something much more tidy:

>drop dollars
You put down the five silver dollars.

Needless to say, this extension doesn’t work with the current version of Inform. It’s a fairly complex extension — frankly, it’s beyond my ability to fix it. There is apparently no currently functional extension that does this. As a result, the new version of Inform 7 is actually less capable than previous versions when it comes to giving the author some basic control over the output text.

As a writer, I care about making the output look presentable. Call me eccentric if you like.

Inform 7 was designed from the ground up to encourage third parties to extend its fairly basic functionality by writing clever extensions. This is a valid approach to designing a programming language, I suppose. But it works better if you have a user base that’s, oh, let’s say a hundred times larger than the tiny, scattered community of interactive fiction authors. With such a minuscule pool of qualified programmers (of whom I am not one) to call upon for maintenance tasks, the result is sadly predictable: Stuff doesn’t get fixed.

As the author of Inform 7, Graham Nelson really ought to have understood this long ago. Inform is his creative project — perhaps, in some sense, his life’s work. I don’t know Graham, so I don’t know what other work he may engage in, but he has certainly put a massive effort into Inform, over the course of more than 20 years. And yet it’s not enough.

Knowing that numerous clever extensions would be broken by his new version, he ought to have taken definite steps to insure backward compatibility. Rather than eliminating numerous phrases from I7 syntax (and some features such as the Library Messages from the underlying I6 code base), he ought to have worked out a way to keep those phrases and features available, so that older extensions could continue to use them if need be.

Either that, or he ought to have revised all of the potentially useful extensions himself.

His failure to do either of those things sabotages his end users — the community of Inform authors. He has ignored authors’ legitimate needs.

Graham is a very bright guy. He’s certainly smarter and harder-working than I am. But it’s hard for me to feel enthusiastic about supporting aspiring Inform 7 authors by rewriting my Handbook, when the mastermind who created the entire authoring system shows so little evident interest in supporting them.

I’m strictly a bumble-fingered amateur programmer, not a computer scientist, but I can easily imagine a simple way that he could have preserved the functionality of those old extensions. Edit each extension to put the line “Allow deprecated syntax and features” at the top. An intern could update the whole library in less than an hour. Then tell the compiler that when it encounters a separate .i7x file with that line, it should, for that file only, switch to a different compilation mode — a mode that already exists as a code base, because it’s what the old compiler did.

If he had done it that way, wretches like me wouldn’t have to thrash around for hours trying to make things like Consolidated Multiple Actions work. I’m told Graham teaches at Oxford. Perhaps the words “ivory tower” would not be misplaced here.

Advertisements
This entry was posted in Interactive Fiction, Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s