This article was originally published, in modified form, at Opensource.com.

I am president and co-founder of the Interactive Fiction Technology Foundation (IFTF), a non-profit organization dedicated to the preservation and improvement of the technologies enabling the much-storied digital artform we call interactive fiction. OpenSource.com approached us earlier this year to suggest our writing an article about IFTF, the technologies and services it supports, and how it all intersects with open source. I find this a novel angle to the decades-long story I’ve grown quite used to telling, as IF has a history rather older than — but nonetheless quite enmeshed with — the modern FOSS movement. I hope you’ll enjoy my sharing it now.

Definitions and history

A screenshot of the game 'Counterfeit Monkey' by Emily Short
Starting a new game of Emily Short’s “Counterfeit Monkey”, running on the interpreter Lectrote: both open-source software.

By interactive fiction, I include any video game or digital artwork whose primary interaction with its human audience involves pushing text back and forth, one way or another. The term originates from the time in the 1980s when parser-driven text adventure games — epitomized in the United States by Zork, Hitchhiker’s Guide, and the rest of Infocom’s canon — defined home-computer entertainment. Its mainstream-commercial viability had guttered by the 1990s, allowing online hobbyist communities to pick up the banner and carry on the tradition, releasing both games and game-creation tools into the world as they went.

After a good quarter-century of work, criticism, and play, the term “interactive fiction” now embraces a broad and sparkling variety of work, from puzzle-laden text adventures to sprawling and introspective hypertexts. Regular online competitions and festivals provide a great place to peruse and play new work: the English-language IF world enjoys annual events including Spring Thing and IFComp, the latter a centerpiece of modern IF since 1995 — which also makes it the longest-lived continually running game-showcase event of its kind, in any genre. IFComp’s crop of judged-and-ranked entries from 2017 shows off the amazing diversity in form, style, and subject matter that text-based games can boast today.

(I specify “English-language” above because, as a perhaps inevitable effect of its focus on writing, IF communities do tend to self-segregate by language. There exist also annual IF events in French and Italian, for example, and I hear tell of at least one Chinese IF festival gearing up soon. Happily, these borders are porous: during the four years I myself managed IFComp, it welcomed English-translated work from all these international communities.)

Largely due to its focus on text, IF also presents some of the most accessible platforms for both play and authorship. Most anyone who can read digitally presented text — including users of assistive technology, such as text-to-speech software — can play the majority of IF work. Likewise, IF creation is open to all writers with a willingness to learn and work with the tools and techniques involved.

This brings us to examine IF’s long relationship with open source, which has long helped enable the art form’s ongoing and highly adaptive availability in the decades since its commercial heyday. Allow me to present an overview of contemporary open-source IF creation tools, and then move on to consider the ancient and sometimes curious tradition of IF works that share their source code as well.

The world of open-source IF tools

A screenshot of the Inform 7 IDE.
The Inform 7 IDE, loaded up with documentation and a sample project.

For creating traditional parser-driven IF — where the user types in commands to interact with the game’s world, such as GO NORTH or GET LAMP or PET THE CAT or ASK ZOE ABOUT QUANTUM MECHANICS — a number of development platforms exist, most of which are open-source. The early 1990s saw the emergence of several hacker-friendly parser-game development kits, and those still in use today include TADS, Alan, and Quest — all open, with the latter two bearing FOSS licenses.

But by far the most prominent of these is Inform, first released by Graham Nelson in 1993 and now maintained by a team Nelson continues to lead. Inform source is semi-open, in an unusual fashion: Inform 6, the previous major version of this system, makes its source available through the Artistic License. This has more immediate relevance than may be obvious, since the otherwise proprietary Inform 7 holds Inform 6 at its core, translating its remarkable natural-language syntax into its predecessor’s more C-like code before letting it compile the work down into machine code.

Inform games run on a virtual machine, a surviving relic of the Infocom era when that publisher targeted a VM so that it could write a single game that would subsequently run on Apple II, Commodore 64, Atari 800, and all the other flavors of home computer one might have back when people said things like “home computer”. There exist fewer popular operating systems today, but Inform’s virtual machines — either the relatively modern Glulx or the charmingly antique Z-machine, a reverse-engineered clone of Infocom’s historical VM — bring a similar benefit, letting Inform-created work run on any computer for which someone has created an Inform interpeter. Right now, popular cross-platform interpeters include desktop programs like Lectrote and Gargoyle, or browser-based ones like Quixe and Parchment — all of which are open-source.

If the pace of Inform’s development has slowed down in its maturity, it remains vital through an ever-active, many-handed, and transparent ecosystem — just like most any other popular open-source project. In Inform’s case, this includes the aforementioned interpreters, a collection of language extensions (usually written in a mix of Inform 6 and 7), and, of course, all the work created with it and subsequently shared with the world, sometimes with source included. I’ll return to that latter topic later in this article.

IF creation tools invented in the twenty-first century tend to explore player interactions outside of the traditional parser, generating hypertext-driven work that any modern web browser can load. Chief among these is Twine, originally developed by Chris Klimas in 2009, and under active development by many contributors today as a GNU-licensed open-source project. (In fact, Twine can trace its OSS lineage back to Tiddlywiki, the project from which Klimas initially derived it.)

Twine represents a sort of maximally open and accessible approach to IF development: beyond its own FOSS nature, it renders its output as self-contained websites, relying not on machine code requiring further specialized interpretation but the open and very well-exercised standards of good old HTML, CSS, and JavaScript. As a creative tool, Twine can match its own exposed complexity to the creator’s skill level. One can create simple but playable IF work with essentially no programming knowledge, and more sophisticated work for those bringing in more coding and design skill — including those developing these skills by way of making Twine games. Little wonder that Twine’s visibility and popularity in educational contexts has grown quite a bit in recent years.

Other noteworthy latter-day open-source IF development projects include the MIT-licensed Undum by Ian Millington, and ChoiceScript by Dan Fabulich and the Choice of Games team — both of which also take Twine’s tack of targeting the web browser as the gameplay platform. Looking beyond strict development systems like these, web-based IF gives us a rich and ever-churning ecosystem of open-source work, such as furkle’s collection of Twine-extending tools, or Liza Daly’s Windrift, a JavaScript framework purpose-built for her own IF games.

Programs, games, and game-programs

A screenshot of the opening of Harmonia by Liza Daly.
The opening of Liza Daly’s “Harmonia”, created with the Windrift open-source IF-creation framework.

Twine benefits from a standing IFTF program dedicated to its support, allowing the public to help fund its ongoing maintenance and development. IFTF also directly supports two long-time public services, IFComp and the IF Archive, both of which depend upon and contribute back into open software and technologies.

The Perl- and JavaScript-based application that runs the IFComp’s website has been a shared-source project since 2014, and one that reflects the stew of FOSS licenses used by its IF-specific sub-components, including the various code libraries that allow parser-driven competition entries to run in a web browser. The IF Archive — online since 1992, and an IFTF project since 2017 — is a set of mirrored repositories based entirely on ancient and stable internet standards, with a little open-source Python script taking care of its indexing.

Measured by mass, the bulk of the Archive lies in games, of course: years and years of games, reflecting decades of evolving game-design trends and IF tool development. So, at last, the fun part: let’s talk about open-source text games!

Lots of IF work shares its source code, and the community’s quick-start solution for finding it is simple: search the IFDB for the tag “source available”. (The IFDB is yet another long-running IF community service, in this case run privately by TADS creator Mike Roberts.) Those unshy about a rather more bare-bones interface may also wish to browse the /games/source directory of the IF Archive, which groups its content by development platform and written language, as well as a whole lot of work either too miscellaneous or too ancient to categorize floating at the top.

A little bit of random sampling of these code-sharing games will reveal an interesting dilemma: unlike the wider world of open-source software, the IF community lacks a generally agreed-upon way of licensing all the code that it generates. Unlike a software tool — including all the tools we use to build IF — an interactive fiction game is a work of art in the most literal sense, meaning that an open-source license intended for software would fit it no better than it would any other work of prose or poetry. But then again, an IF game is also a piece of software, and one that exhibits source-code patterns and techniques that its creator may quite legitimately wish to share with the world. What is an open-source-aware IF creator to do?

Some games address this by passing their code into the public domain, either through explicit license or — as in the case of the original, 42-year-old Adventure by Crowther and Woods — through community fiat. Some try to split the difference, rolling their own license that allows for free re-use of a game’s exposed business logic but forbids the creation of work derived specifically from its prose. This represents the tack I took when I opened up the source of my own game, The Warbler’s Nest. Lord knows how well that’d stand up in court, but I didn’t have any better ideas at the time.

Naturally, you can find work that refuses to overthink all this and just puts everything under a single common license anyway, and never mind the naysayers. A prominent example here is Emily Short’s epic Counterfeit Monkey, released in its entirety under a Creative Commons 4.0 license. CC frowns at its application to code, but one could make the argument that the strangely prose-like nature of Inform 7 source makes it at least a little more compatible with a CC license than a typical software project.

What now, adventurer?

If you have read this far and find yourself eager to start exploring the world of interactive fiction, open-source and otherwise, allow me to collect a few next-stop links for you:


Thanks to VM Brasseur for inviting me to write this article for Opensource.com and helping me to develop it, and to Jen Wike Huger for editing and facilitating its publication on that website.

Share or reply to this post on Twitter, or elsewhere.


Next post: I played Virtue’s Last Reward

Previous post: I read The Book of the New Sun (and re-read From Hell)

Loading responses...

Share a response

To share a response that links to this page from somewhere else on the web, paste its URL here.