Inform 7 v10.1.0 is now open-source
Amazing news. It's great this is finally open.I have quite a bit of respect for the fact that this is a successful, real-world program developed using Literate Programming. It's a style of programming which has interested me before, but like many other people, I've found it hard to do in practice, and tools to be lacking.As an aside, the interactive fiction community is from a technological perspective a fascinating microcosm, including from a CS perspective. You have not just one toolchain, but an entire ecosystem of competing virtual machine specifications (Z-Machine, Glulx, TADS, Hugo), compilers, and source languages, all intending to deliver architecture-independence and the ability to preserve IF for the ages, yet apart from all general-purpose technologies typically used for the task.Glulx is a simple, 32-bit virtual machine created to replace the Z-Machine. Both have numerous implementations. Glulx is itself used with an extensible I/O abstraction layer, and as I recall has been used with numerous I/O systems. Usually it is used with Glk, but I recall some outfits trying to sell commercial IF defined their own custom I/O system using the same Glulx virtual machine to provide greater capabilities.Inform 7, as people are probably aware, is itself an experiment in source languages which read like natural language. The compiler produces Inform 6 as an intermediate language, and then invokes the Inform 6 compiler. The Inform 6 language as far as I'm aware was a product of reverse engineering the Z-Machine, and is completely different to the language Infocom originally used to produce Z-Machine images (though I believe that source is now released for those with historical interest).It wasn't all Inform, though. TADS was an interesting second fiddle and one I personally preferred, being designed to appeal as far as I can tell more to programmers. The downside is it probably led to less popularity; though I personally don't really find myself thrilled at the prospect of writing Inform 7 with its unusual language, it's clearly won.TADS 3 in particular featured an extremely sophisticated object-oriented virtual machine, which was very complex compared to the simplicity of the 32-bit Glulx machine. It's an impressive piece of technical work which I find fascinating, but my understanding is that despite fairly good documentation on the system's internals, nobody besides its original author ever managed to write their own implementation due to its intricacy. The VM is open source so this isn't the biggest deal, but having multiple implementations is a big deal, especially for something intended to allow works to be preserved through the ages.Whereas the Inform ecosystem went with Glulx and the Glk I/O system, TADS chose to adopt HTML to facilitate formatting and multimedia functionality. This seemed like a natural choice, yet I distinctly recall finding it hard to find HTML TADS implementations for non-Windows platforms years ago. In the modern era, where people want to play IF in a browser, you would expect TADS to come into its own, but this has not been so. In a remarkably strange and in my view mistaken move, TADS chose to add web functionality by allowing (if I recall correctly) TADS projects to be recompiled so that the VM hosts a web server. Since it requires projects to be recompiled, and for two images to be shipped - one non-web, one web - it seems like an incredibly bad decision and undermines the whole point of having a universal image.There are countless other engines, of course - ADRIFT, which was popular due to its GUI-based editor. "Hugo", which was used for the commercial game "Future Boy" and which emphasized multimedia capabilities.Another angle to consider is sandboxing - all of these VM systems were designed to offer good sandboxing. Arguably the wider world is only just catching up with this now with the rising popularity of WebAssembly for non-web applications. The growth of the non-web WebAssembly ecosystem and sheer availability of different runtimes is really nice to see and the ready availability of VM systems which are both sandboxed and architecture-independent seems to be enabling all sort of interesting research and development. Who knows,  maybe we'll see WebAssembly be adopted for IF-related use in the future.