
Open-Sourcing Inform 7 - sp332
http://emshort.com/narrascope/talk.html
======
kragen
The punch line is that Graham Nelson still has not open-sourced Inform 7, but
hopes to do so in 2019. So, if you decide to build your work on Inform 7 and
Graham gets unexpectedly run over by a tram like Gaudi, you're very likely out
of luck; you won't have the legal right to fix problems in the platform, port
it to new platforms (such as, as he notes, iOS), or remove whatever spyware
his heirs decide to add to "monetize the platform".

So, it's nice to hear that he's making concrete steps forward, but the bottom
line is that he's still not open-sourcing it, just continuing to promise to
open-source it, as he has been doing for many years.

With that in mind, I think the title of the HN post is misleading; it would be
more accurate to entitle it "Not Open-Sourcing Inform 7", and still better to
entitle it "Not Yet Open-Sourcing Inform 7."

And that's a shame, because Inform 7 looks like one of the most interesting
experiments in programming-language design today, and has been for years.
Years that I haven't tried it, because downloading and installing proprietary
software is not my idea of a fun pastime.

~~~
dwheeler
It is perfectly reasonable to be skeptical for all the reasons you've noted.
However, I see two things that have changed. Most importantly, he has set of
specific month and year. He is also stating a specific license, which I don't
recall him doing before. Finally, he did release inform 6 as open source years
ago.

So again, you have reason to be skeptical. But there are also reasons to hope.

~~~
kragen
I agree.

------
Adaptive
This past year I taught Python to 7th and 8th graders.

But to __6th graders __I taught CLI basics and Inform7 (all on the command
line).

It was one of the most successful "programming and computer basics" courses
I've ever run. A fair amount of custom tooling to make it run smoothly, but a
shared VPS for the students and some deploy scripts made it possible to not
only make individual games but also collaborate on a larger scale game written
collaboratively (each user writing their own set of rooms which was compiled
automatically into a full game).

~~~
aldoushuxley001
Sounds awesome. You’re a good teacher.

------
dwheeler
Awesome! Inform7 is intriguing. You can learn more about it here:
[http://inform7.com/](http://inform7.com/)

What is very unusual about it is that it creates a programming language for
interactive fiction that looks very much like natural language. Its tools are
very friendly for new users.

If you're curious about what the language looks like, you could look at my
tiny game Accuse [https://dwheeler.com/accuse/](https://dwheeler.com/accuse/)
and in particular read its source code:
[https://dwheeler.com/accuse/source.html](https://dwheeler.com/accuse/source.html)

~~~
dhx
You may also be interested in Object-Process Language (part of [1]) which is a
similar concept to Inform7, but without the domain specific focus of
interactive fiction.

[1]
[https://en.wikipedia.org/wiki/Object_Process_Methodology](https://en.wikipedia.org/wiki/Object_Process_Methodology)

------
mherdeg
Wow, this is embarrassing.

I've read plenty of Inform 7 source code (see e.g.
[https://github.com/i7/counterfeit-
monkey/blob/master/Counter...](https://github.com/i7/counterfeit-
monkey/blob/master/Counterfeit%20Monkey.materials/Extensions/Counterfeit%20Monkey/Act%20I%20Among%20Sightseers.i7x)
).

And I read Knuth's book "Literate Programming" in formative years and loved
the idea.

But somehow I never connected Inform 7 as generically a live, working modern
example of literate programming. That's pretty silly! The language is full of
dozens of good examples of worked programs, albeit nearly all written as one
kind of text in/text out/parser interaction.

One difference I maybe see is that Knuth writes a book about a program which
is built in a very didactic fashion such that every single bit of source code
is commented with a detailed explanation of what it does. In real life,
though, most Inform games have a bunch of utility code that is not super well
commented but is needed to glue things together; and the way that real large
Inform games are written means that the program isn't quite as narrative as
the example Knuth gives. The program certainly tells a story when interpreted,
but the source code of the program itself doesn't tell a story in quite the
way that I kind of read Knuth's book as promising.

About half of some of the best IF of 2018 was written in Inform 6 or 7 (
[https://ifdb.tads.org/poll?id=mryx4c8bzwym7rvy](https://ifdb.tads.org/poll?id=mryx4c8bzwym7rvy)
), so it's doing fairly well, even if many good authors have been tempted by
other options, up to and including roll-your-own.

Separately, I have struggled to find an interpreter on latest OS X that loads
all of those 2018 games reliably -- what is the community's preferred Mac
interpreter now?

~~~
sympodius
This is a bit random, but I have a cameo appearance in Counterfeit Monkey as
my rockstar alter ego 'Nexami Engeo.' Cool to see the game being mentioned on
Hacker News

~~~
6thaccount2
Wait...are you Emily Short? Or were there multiple authors for that work?

~~~
sp332
Sounds like she wrote him into the game, not that he wrote the game.

~~~
6thaccount2
Ah thanks!

------
logicprog
I've spent a long time messing around with Inform7, for quite a few years on
and off, and then I kind of stopped after realizing a few things: 1) it's
incredibly frustrating and inefficient to write games in an English like
language when you're a perfectly capable programmer, 2) if I try to do any
even slightly more complex programming I'll be shot in the foot, and 3) I'm
_terrible_ at writing puzzles.

I did try to solve the first two problems by trying Inform 6, but it's just
not a great language and that third problem is a sticky bugger. (:

Anyway, Inform has an extremely powerful and featureful IF engine, and one
that I dearly wish I could tap into using some kind of decent programming
language (even ZIL!). It going open source gives me hope that that might
become possible in the future.

If anyone knows of any good IF libraries for existing programming languages
(especially Lisp) that would be awesome.

~~~
Eli_P
IIRC Inform 7 _.i7x_ is internally translated to Inform 6 _.i6t_ source which
is more low-level C-like language. Have a look at code pieces formatted as _(-
... -)_ in installed Inform extensions. You can mix 6 and 7 together.

BTW I tried to feed some Inform 7 code to APE[1], which is a parser of an
English subset written in Prolog, without much success as I recall.

As for existing IF tools the first come to mind are Twine and Ren'Py.

[1] [https://github.com/Attempto/APE](https://github.com/Attempto/APE)

~~~
logicprog
Yeah, I have actually tried I6, the problem is it's much lower level and
doesn't get a lot of the power of I7. I want the power of I7 but without the
COBOL-tastic syntax.

------
svnpenn
Looks like it’s decidedly not open
[https://github.com/ganelson](https://github.com/ganelson)

~~~
sp332
"It's nearly there: I'm only a few momths [sic] away, and the next public
release will certainly be in 2019. Simultanously [sic] with the next public
release, the Github repositories will all be made public."

------
BeetleB
This is amazing. Inform, TADS and others have worked miracles in keeping
interactive fiction alive.

Curious: Is TADS3 open source?

Nice to see literate programming used in the project.

~~~
chipotle_coyote
It doesn't appear that TADS 3 is open source, no, just closed-source freeware.
I can't find any reference to either source code availability or license
information.

~~~
mrob
It's source-available proprietary software, not closed-source:

[https://github.com/realnc/frobtads/blob/master/tads3/LICENSE...](https://github.com/realnc/frobtads/blob/master/tads3/LICENSE.TXT)

~~~
dwheeler
Usually closed source simply means it's not open source. Since it is not open
source, I I think many people would normally call it closed source.

~~~
mrob
"Open source" is widely accepted to mean "licensed under terms that meet the
Open Source Initiative's Open Source Definition", instead of the obvious
meaning of "source available", only because many people put a lot of effort
into correcting everybody who assumed it was plain English and not jargon.

"Closed source" has not had a similar education campaign, so it still defaults
to the common-sense meaning of "source not publicly available". The opposite
of "open source" is "proprietary".

------
vincent-toups
As a fan of interactive fiction (I used to run a podcast about it) and a
programmer, I've always hated Inform 7. The design philosophy is totally
upside down. I understand the apparent value of making code _look like_
english, but in the end it makes code very hard to write.

Its like literally the only read only programming language I know of.

Code which looks like english makes the implicit suggestion that you can
program it in english, but in fact, like all languages, it only accepts a very
narrow syntax. This makes the language exceedingly frustrating to use.

~~~
vincent-toups
I've got to elaborate: programming languages are for telling dumb machines
_exactly_ what to do. English is for communicating with other intelligent
beings, usually in a more or less interactive way. The two use cases could not
possibly be more distinct. One way to see this is to observe how much
redundancy and ambiguity is built into natural languages. Redundancy is there
because natural communication is lossy and ambiguity is there because
communicating agents share an enormous amount of common context. Programming
languages have tended towards less and less redundancy and more or and more
precision over their history.

Its more or less a coincidence induced by sloppy human thinking that we are
"communicating" with computers when we program. Honestly, I'd almost rather
program in assembly than in any of these absurd "natural" languages.

~~~
skybrian
Although I broadly agree that other programming languages probably shouldn't
follow Inform 7's example, I think Inform 7's similarity to English can be fun
to play around with [1], so I'm glad it exists.

Perhaps after it's open sourced, someone will look into grammar improvements?

[1]
[http://slesinsky.org/brian/code/i7_poetry.html](http://slesinsky.org/brian/code/i7_poetry.html)

------
_emacsomancer_
Relevant quote from the previous talk from last year:

"(4) The unreleased tools needed to build and test Inform were far worse, some
being huge Perl scripts which were just mazes of twisty little passages. They
were nowhere close to being releaseable in quality. One reason Inform hasn’t
been open source in some years is that this infrastructure was such a mess.
But not being open source is an existential threat right there."

~~~
justinjlynn
Indeed. Nobody cares how awful the tools are - something that exists, is open
source, and can be improved is infinitely better than that which doesn't exist
and has to be reverse engineered.

------
whitten
This is great news. I thought Inform 7 had a built-in expert system. Does
anyone know for sure ?

~~~
skybrian
It has a rules engine. I don't think it's the same thing?

~~~
logicprog
It reads a lot like a special purpose logic programming language, almost as if
it has a prolog engine built in. Expert systems generally use logic
programming. I think that's what the GP means. Rules engines are something
different AFAICT, (all I get on Google is business related stuff) and seem to
use forward chaining, and I'm not sure how you'd get Inform-like behavior with
that.

------
ajna91
> But only a few, since Inform has no dependencies on third-party code. You
> need a modern C compiler, ideally clang, but gcc will do; and you need basic
> Unix tools. But that's all.

> Core Inform is written in ANSI C, properly speaking C99. That was the first
> decision I took, in 2001, and it was the wrong choice. I had my reasons, but
> C++ would have been better for the heterogenous tree structures you need
> inside of compilers. I feel much happier about my other early decision,
> which was to adopt literate programming.

> Literate programming was invented by Donald Knuth in the 1970s: he was
> responsible for the slightly insulting name, as if all other programmers are
> illiterate. The idea is to write a program like an essay, with a narrative,
> so that its source code can be read by humans as well as computers. This is
> not just about commentary: it's about making long or complex functions more
> comprehensible.

> Literate programming is not a popular choice today. The canonical primers on
> software are respectful but basically tell you not to use it: "Code
> Complete", for example, or "The Art of Unix Programming". It failed to catch
> on for several reasons: most programmers do not like to write essays. Most
> code has a short shelf life anyway. Commentary in code is out of fashion
> these days, and some coders even consider it harmful.

------
fanf2
Previously
[https://news.ycombinator.com/item?id=20216073](https://news.ycombinator.com/item?id=20216073)

~~~
sp332
And one day before that :)
[https://news.ycombinator.com/item?id=20204596](https://news.ycombinator.com/item?id=20204596)

------
alpb
Can someone please update the title to be more reflective and less clickbait?

~~~
sp332
The title I picked was just a clarification of the original. If you want
something more reflective, how about "Inform 7 update and roadmap"?

------
zem
ooh, that's awesome!

