[HN Gopher] Inform 7 v10.1.0 is now open-source
       ___________________________________________________________________
        
       Inform 7 v10.1.0 is now open-source
        
       Author : nickmain
       Score  : 117 points
       Date   : 2022-04-28 18:12 UTC (4 hours ago)
        
 (HTM) web link (intfiction.org)
 (TXT) w3m dump (intfiction.org)
        
       | foogered wrote:
       | This is so exciting to see! I became obsessed with Inform7 a
       | while back after I learned about it from "The best things and
       | stuff of 2014" [1]. I remember scouring the web for its source
       | code and being really bummed it wasn't open source. I can't wait
       | to finally dive in! I've never seen a literate program of this
       | scale before.
       | 
       | [1] http://blog.fogus.me/2014/12/29/the-best-things-and-stuff-
       | of...
        
       | davidjhall wrote:
       | Waited a while for this -- exciting! Uses Artistic License 2.0
       | license
       | 
       | The GUI isn't available until 3rd party developers release it in
       | May --- currently it's command line only.
        
         | EMIRELADERO wrote:
         | Seems like the UI repos are already public
         | 
         | https://github.com/TobyLobster/Inform for MacOS, maintained by
         | Toby Nelson
         | 
         | https://github.com/DavidKinder/Windows-Inform7 for Windows,
         | maintained by David Kinder
         | 
         | https://github.com/ptomato/inform7-ide for Linux, maintained by
         | Philip Chimento
        
           | dfabulich wrote:
           | They're not yet updated to use the new open-source version.
        
             | EMIRELADERO wrote:
             | Is there any significant difference in the compiled
             | binaries that would make it incompatible?
        
       | anthk wrote:
       | And the English library?
       | 
       | Ah, maybe it comes bundled.
       | 
       | Great news. I prefer Inform6, but having free languages to code
       | IF it's always good.
        
         | PaulHoule wrote:
         | Inform 7 open source could be big news outside of interactive
         | fiction. I met a EU air traffic control regulator who badly
         | wanted "Inform 7 for business rules"
        
           | KerrAvon wrote:
           | My first thought was "isn't that COBOL?"
           | 
           | But I think there's room for another attempt after 60 years.
        
             | PaulHoule wrote:
             | I am thinking about this sort of thing
             | 
             | https://en.wikipedia.org/wiki/OPS5 https://en.wikipedia.org
             | /wiki/IBM_Operational_Decision_Manag...
             | 
             | Inform 7 has a very primitive rules engine and (to me) a
             | very interesting model in which defaults and the overriding
             | of defaults is a major strategy of control. For instance
             | the default response to you typing in a command is
             | basically                  printf("huh?\n")
             | 
             | and then the commands you can type in are defined in terms
             | of exceptions to that rule, exceptions to those exceptions
             | and so forth.
             | 
             | I tried to write a text adventure in Drools in a way
             | inspired by Inform 7 and got to the 30% mark of a demo, I
             | was convinced it was possible but that it wasn't for me
             | because I couldn't make head or tail of the error messages
             | I was getting because Drools syntax is an unholy mixture of
             | the host language (Java) plus Drools-specific
             | constructions. (One reason we can't have good things in
             | programming languages is that we're still using your
             | father's parser generators.)
             | 
             | (The other time I wrote something unconventional with
             | production rules, which was the control plane for a stream
             | processing engine, I had no trouble coding it and little
             | trouble with the error messages because I could read and
             | understand the source code for the Jena Rules Engines...
             | That didn't stop the Jena maintainers from telling me that
             | my use case was unsupported.)
             | 
             | It's sad that production rules became unfashionable when
             | Duran Duran did because between the RETE algorithm,
             | improvements on the RETE algorithm, and keeping rules in a
             | hash table, production rules engines have improved
             | dramatically since "expert system shells".
        
               | munificent wrote:
               | _> (One reason we can 't have good things in programming
               | languages is that we're still using your father's parser
               | generators.)_
               | 
               | I don't think it's the parsing technology that's the
               | problem. It's that designing a good grammar is actually
               | quite difficult. It's like doing UX design, API design,
               | and mathematics all at the same time.
        
               | eismcc wrote:
               | you could go back to the original LISP
               | 
               | https://github.com/briangu/OPS5/blob/master/demo/ops-
               | demo-ma...
        
           | anthk wrote:
           | Yeah, I tought that. You can create a pretty small (ye hugely
           | playable) game even for MSDOS and a 286 with Inform6
           | targeting the V5 version of the machine, and the V8 _may_
           | requiere a 386 and up (any 24 /32 bit machine in the end,
           | think Amiga/Atari with m68k), but IF7 it's overkill, you can
           | do a lot more than games.
           | 
           | Most games made with Inform6 are many times more complex than
           | Infocom games (not to mention Zork/Dungeon and Adventure), so
           | this is a crazy tool.
           | 
           | It's like a literarian Prolog.
        
       | Decabytes wrote:
       | excited for someone much smarter than me to write a blog post
       | going over some of the details of this!
        
       | gtirloni wrote:
       | If you, like me, have no idea what this is about, this page might
       | be easier to understand:
       | 
       | https://ganelson.github.io/inform/
        
         | [deleted]
        
       | adamrezich wrote:
       | very cool. Inform 7 is a lot of fun to use, and open-sourcing it
       | is exciting.
        
       | cxr wrote:
       | > For Inform that human-readable format is a website, rather than
       | a printed book
       | 
       | I dunno. I think hypertext, while well-suited to model
       | traditional non-literate programs, really punts on the promise of
       | literate programming. Even ignoring that--
       | 
       | Previously:
       | 
       | > _Have a look at this slide in particular:
       | <http://inform7.com/assets/images/NS2/slide036.jpg> Here's an
       | excerpt:_
       | 
       | > "Once The Historian is done, the instructions are passed to
       | Instruction::read, which parses them more fully (see below) and
       | returns an intest_instructions object".
       | 
       | > _It goes on in that style. This is reminiscent of every bad
       | attempt I saw during Java 's heyday to ensure that a given
       | codebase was 100% commented. People just end up writing
       | "documentation" that consists of low-level repetition of what the
       | code is doing_
       | 
       | <https://news.ycombinator.com/item?id=25594817>
       | 
       | The problem, it seems, with people who try to do literate
       | programming, is that they're too close to the thing to be
       | effective at fulfilling the promise that literate programming
       | sets for itself. I'm curious to see if the 3 years' overhaul
       | changed Inform 7 substantially so that it's no longer on this
       | track. Keep in mind that at the time, the slide containing that
       | snippet was supposed to be a _good_ example of literate
       | programming--instead of what it actually was, i.e. an example of
       | how not to do it...
        
       | kragen wrote:
       | This is wonderful news! Inform has been one of the most
       | interesting programming languages for a long time, but it was
       | always a fatal flaw that it was unfree. I'm so happy to hear that
       | problem has finally been solved!
       | 
       | It's under the Artistic License 2.0:
       | https://github.com/ganelson/inform
        
       | hlandau wrote:
       | 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.
        
         | anthk wrote:
         | >(though I believe that source is now released for those with
         | historical interest).
         | 
         | No. There was (and still it's) a huge ecosystem made with
         | Inform6, even targetting the web if you chose GLULX and some of
         | the settings which export the game for you.
         | 
         | The Guide:
         | 
         | https://www.inform-fiction.org/manual/download_ibg.html
         | 
         | There's Inform6, the Inform6 English Library (and some other s
         | such as INFSP6 for Spanish, kinda close to the English one, the
         | syntax is the same, even for the objects), and two manuals: the
         | IBG, and DM4, the Designers' Manual, for hardcore people who
         | want to create for example new libraries doing unusual things.
        
           | hlandau wrote:
           | I'm unsure what you're responding to. The part you quoted
           | refers to the original language used to produce Z-Machine
           | files, ZIL. We know what ZIL looked like:
           | 
           | https://www.filfre.net/2012/01/zil-and-the-z-machine/
        
             | anthk wrote:
             | Ah, ok you meant ZIL and Muddle. Yes, I've know them, but I
             | never used them.
             | 
             | Nowadays I've tried to ask some Dungeon/MIT maintainers to
             | set Dungeon (Pre-Zork prototype which has the Zork I-II-III
             | games condensed) under a free license, but I had no luck.
             | 
             | EDIT: Also, IF6 it's pretty good by itself, the included
             | English library it's pretty good for a common game,
             | reimplementing new objects it's trivial.
             | 
             | IF7 makes that easier, but forget about playing your games
             | on DOS and Amiga machines.
        
       | mycroftiv wrote:
       | I'm happy and excited to see this happen, I have used Inform 6 in
       | Plan 9 for interactive fiction development for years now, and
       | with Inform 7 becoming open, I'm hoping the core compilation
       | pipeline can be ported, reading source code for games like
       | Counterfeit Monkey by Emily Short is quite amazing.
        
       | dwheeler wrote:
       | This is great news!
       | 
       | Inform 7 is really intriguing.
        
       ___________________________________________________________________
       (page generated 2022-04-28 23:00 UTC)