Open-source project
ganelson/inform avatar
ganelson/inform

Inform 7 is a compiler written as a literate program in inweb

The core software distribution for the Inform 7 programming language.

1,665 stars100 forksCArtistic-2.0

At a glance

What is it?
The ganelson/inform repository holds the core Inform distribution, a natural language for interactive fiction, and the unusual thing about it is how it is written: the compiler is a literate program tangled from a web, so a readable form of the code is maintained alongside the C. Building it takes three repositories and a first-build script.
Who is it for?
Adopt the core Inform repository if you want to build the Inform 7 compiler yourself, to read how a natural language compiler is put together, or to work on the language itself. Do not adopt it as a way to write interactive fiction, since most authors use the desktop applications, which are independent code bases with their own repositories.
Can I use it commercially?
Yes. Artistic-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 136 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • ganelson/inform1,665 ★ · +11
Star history
Repository2026-10-162026-11-07
ganelson/inform1.7k1.7k

11 Stars in the last 22 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The compiler is a web, not a source file

The unusual thing about this repository is stated in the README. Inform is itself a literate program, written with inweb, one of the largest in the world, and this means a human-readable form of the code is continuously maintained alongside it, published as Inform: The Program. The repository is described as an assemblage of programs and resources rather than a single program, and some of them, including the inform7 compiler itself, are literate programs, also called webs. The README marks these with a star symbol and links to their readable forms. The practical consequence is that the code you read in the repository is not the code the compiler runs, and a change to the compiler starts as an edit to prose.

Six command line tools, each a web

The inventory section lists the command line tools this repository provides, and it reads like a small toolchain rather than a single program. `inbuild` is a simple build and package manager for the Inform tools. `inform7` is the core compiler, described as a compiler in a natural-language design system for interactive fiction. `inter` is the interpreter, which is what runs the finished story. `inblorb` packages the output, and the build instructions tell you to check that it compiled by running `inblorb/Tangled/inblorb -help`. There is also an `inform6` directory for the earlier language generation and an `inpolicy` directory, alongside `notes/`, `resources/`, `docs/`, `services/` and a `retrospective/` directory. The tools are separately tangled and separately versioned, and the inventory lists each at version 10.2.0.

Building it needs three repositories, not one

The build instructions are unusually explicit about the surrounding context, because a core Inform build pulls in two sibling programs. To build and test the compiler on the command line you also need Inweb and Intest, programs spun out from the Inform project with their own repositories. The sequence is a directory layout first, then three projects side by side:

bash
cd work
git clone https://github.com/ganelson/inform.git
cd inform
bash scripts/first.sh
inblorb/Tangled/inblorb -help
../intest/Tangled/intest inform7 -show Acidity

Inweb has to be built as `work/inweb` and Intest as `work/intest`, with the Inform clone at `work/inform`, and the first-build script at `scripts/first.sh` does the initial tangle. The test command is a single case, `intest inform7 -show Acidity`, and the full suite is `make check`, which the documentation says takes between five minutes and two hours depending on the system and runs 2500 test cases.

gcc has caused trouble, so use clang

There is a second caution in the build instructions, and it is the kind of note that saves a day. The `inform7` compiler is written in standard C99, but it is described as a challengingly large task for a C compiler. The project states that in the past they had difficulties using gcc to compile it, and although they believe these may now be resolved, they recommend compiling the core Inform tools with clang rather than gcc where possible. The version shown in the README is 10.2.0-beta+6Y13 'Krypton', dated 24 June 2026, and the last push to the master branch was on 2026-06-24. The version history in the release tags is older, with v10.1.2 from 2022-08-31 as the most recent tagged release, which is the gap between the released line and the development line.

The main branch is work in progress, by policy

The first caution in the build section says the `main` branch of this repository generally holds unstable, unreleased work-in-progress versions of Inform, and points at the versioning notes. That policy is documented separately in a set of files under `notes/`, and the README provides a table of where to look for different kinds of question. Brief news about ongoing work is in the working notes, the licensing and copyright policy in its own file, the branching and versioning policy in another, the version history and release notes in another, and the changes not yet released in a pending file. Language evolution has its own separate repository, the inform-evolution one, which is where proposals for changes to the language live. The separation between the compiler repository and the language policy repository is a deliberate governance choice, and it means a change to the language is discussed before it reaches the code.

Most authors never see this repository

The Repositories section draws a distinction that is important for anyone evaluating the project. This is the core Inform repository, holding source code for the compiler and for everything needed to run it on the command line. But most Inform authors use Inform as an app, not at the command line, and while the user interface looks similar on each platform, the applications are independent code bases with their own repositories: a MacOS one maintained by Toby Nelson, a Windows one maintained by David Kinder, and a Linux one maintained by Philip Chimento. The server side content for the Inform Public Library, which is the selection of downloadable extensions shown within the apps, is in yet another repository. So the repository you are looking at is the engine room, and the interface most people meet is assembled from three other projects.

Licence, history and who can contribute what

The software in this repository is copyright Graham Nelson 2006 to 2022 except where otherwise stated, and is available under the Artistic License 2.0. The language itself was created in April 2006 and was open-sourced in April 2022, which explains the copyright range ending in 2022. Inform is described as widely used as a medium for literary writing, as a prototyping tool in the games industry, and in education at school and university level, where it is often assigned material for courses on digital narrative, and it has several times ranked in the top 100 most influential programming languages according to the TIOBE index. On contributions, the rule is proportional: pull requests to fix bugs at the tracker or to correct clear-cut typos do not need an Inform Evolution proposal, but anything on a larger scale is likely to need one. The bug tracker itself has moved from a Mantis instance that covered 2006 to 2021, which has closed, to a Jira tracker, with the curator and administrator named in the README.

Editorial conclusion

Adopt the core Inform repository if you want to build the Inform 7 compiler yourself, to read how a natural language compiler is put together, or to work on the language itself. Do not adopt it as a way to write interactive fiction, since most authors use the desktop applications, which are independent code bases with their own repositories. Verify first that you have a recent enough C compiler, since the documentation warns that gcc has caused difficulties and recommends clang, and note that the main branch generally holds unstable work in progress rather than a released version.

Frequently asked questions

What is in the ganelson/inform repository?

The source for the Inform command line tools, including the inform7 compiler, the inter interpreter, the inblorb packaging tool and the inbuild package manager, all at version 10.2.0. The repository also holds the notes on policy, versioning and release history.

How do I build the Inform 7 compiler from source?

You need Inweb and Intest as well. Build Inweb as `work/inweb`, Intest as `work/intest`, clone Inform as `work/inform`, then run `bash scripts/first.sh` in the Inform directory. Check the build with `inblorb/Tangled/inblorb -help` and run a single test with `../intest/Tangled/intest inform7 -show Acidity`.

Why does the Inform build documentation recommend clang?

The compiler is written in standard C99 but is described as a challengingly large task for a C compiler, and the project states they have had difficulties using gcc in the past. They recommend compiling the core tools with clang rather than gcc where possible.

Is the main branch of ganelson/inform a released version?

No. The build instructions carry a caution that the `main` branch generally holds unstable, unreleased work-in-progress versions of Inform, and point to the versioning notes. The version shown in the README is 10.2.0-beta+6Y13 'Krypton' from 24 June 2026.

Where do I propose a change to the Inform language?

Proposals for changes to the language go to the separate inform-evolution repository. Small contributions to this repository, such as fixing tracker bugs or correcting typos, do not need such a proposal, but anything larger is likely to.

Official sources

  1. ganelson/inform on GitHub
  2. Issues
  3. License: Artistic-2.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ganelson-inform.svg)](https://hysenlabs.com/projects/ganelson-inform)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/ganelson-inform.svg)](https://hysenlabs.com/projects/ganelson-inform)

Was this useful?