||1 day ago|
|docs||1 day ago|
|docs-src||4 weeks ago|
|inblorb||3 weeks ago|
|inbuild||1 day ago|
|indoc||3 months ago|
|inform6||2 weeks ago|
|inform7||1 day ago|
|inpolicy||4 months ago|
|inrtps||8 months ago|
|inter||1 month ago|
|notes||1 day ago|
|resources||1 month ago|
|retrospective||3 months ago|
|scripts||1 month ago|
|services||3 weeks ago|
|.gitignore||8 months ago|
|LICENSE||7 months ago|
|README.md||1 day ago|
|build.txt||1 day ago|
|colony.txt||3 months ago|
Version: 10.2.0-beta+6W02 'Krypton' (7 December 2022)
Inform is a programming language for creating interactive fiction, using natural language syntax. Using natural language and drawing on ideas from linguistics and from literate programming, Inform is widely used as a medium for literary writing, as a prototyping tool in the games industry, and in education, both at school and university level (where Inform is often assigned material for courses on digital narrative). It has several times ranked in the top 100 most influential programming languages according to the TIOBE index. Created in April 2006, it was open-sourced in April 2022.
Inform is itself a literate program (written with inweb), one of the largest in the world. This means that a human-readable form of the code is continuously maintained alongside it: see ★ Inform: The Program
|To consult...||Turn to...|
|Brief news about ongoing work||notes/working_notes.md|
|Licencing and copyright policy||notes/copyright.md|
|Branching and versioning policy||notes/versioning.md|
|Language evolution policy||https://github.com/ganelson/inform-evolution|
|Version history and release notes||notes/version_history.md|
|Pending changes not yet released||notes/release/pending.md|
This is the "core Inform" repository, holding source code for the compiler, and for everything needed to run it on the command line. However:
- 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:
- Most Inform authors use Inform as an app, not at the command line. While the UI looks similar on each platform, they are independent code-bases and each has its own repository:
- Proposals for changes to Inform are at the repository:
- The server-side content for the Inform Public Library (a selection of downloadable extensions displayed within the apps) is here:
main branch of this repository generally holds "unstable", that is,
unreleased work-in-progress versions of Inform. See notes/versioning.md.
Make a directory in which to work: let's call this
- Change the current directory to
- Build Inweb as
work/inweb: see its repository here
- Build Intest as
work/intest: see its repository here
- Clone Inform as
git clone https://github.com/ganelson/inform.git
- Change the current directory to this:
- Run a first-build script:
- Check executables have compiled:
- Run a single test case:
../intest/Tangled/intest inform7 -show Acidity.
- If you have time (between 5 mins and 2 hours, depending on your system),
make checkto run the full suite of 2500 test cases.
Issues and Contributions
The 2006-2021 Inform bug tracker, powered by Mantis, has now closed, and its issues and comments have been migrated to a a Jira tracker. The curator of the bug tracker is Brian Rushton, and the administrator is Hugo Labrande.
Members of the Inform community are welcome to open pull requests on this repository to address minor issues - for example, to fix bugs at the tracker, or to correct clear-cut typos or other errors. Contributions of this sort do not need an Inform Evolution proposal, but anything on a larger scale is likely to.
Inventory of this Repository
"I can't help feeling that if someone had asked me before the universe began how it would turn out, I should have guessed something a bit less like an old curiosity shop and a bit more like a formal French garden - an orderly arrangement of straight avenues, circular walks, and geometrically shaped trees and hedges." (Michael Frayn)
Inform is not a single program, but an assemblage of programs and resources. Some, including the inform7 compiler itself, are "literate programs", also called "webs". The notation ★ marks these, and links are provided to their human-readable forms.
Source for command-line tools
This most important contents of this repository are the source webs for the following command-line tools:
- inbuild - version 10.2.0 - ★ Web - ▶ Documentation
A simple build and package manager for the Inform tools.
- inform7 - version 10.2.0 - ★ Web - ▶ Documentation
The core compiler in a natural-language design system for interactive fiction.
- inter - version 10.2.0 - ★ Web - ▶ Documentation
For handling intermediate Inform code.
- inblorb - version 4.1 - ★ Web - ▶ Documentation
The packaging stage of the Inform 7 system, which releases a story file in the blorbed format.
- indoc - version 4 - ★ Web - ▶ Documentation
The documentation-formatter for the Inform 7 system.
- inpolicy - version 1 - ★ Web - ▶ Documentation
A lint-like tool to check up on various policies used in Inform source code.
- inrtps - version 2 - ★ Web - ▶ Documentation
A generator of HTML pages to show for run-time problem messages in Inform.
Kits shipped with Inform
The following webs are the source for kits of Inter code shipped with Inform (at the subtree inform7/Internal/Inter). Kits are libraries of code needed at run-time, and whose source is written in Inform 6 notation:
- BasicInformKit - Support for Inform as a programming language - ★ Web
- WorldModelKit - Support for modelling space, time and actions in interactive fiction - ★ Web
- EnglishLanguageKit - Support for English as the natural language used - ★ Web
- CommandParserKit - Support for parsing turn-by-turn commands in interactive fiction - ★ Web
- BasicInformExtrasKit - Additional support needed only if the Standard Rules are not used - ★ Web
- DialogueKit - Additional support for dialogue (under construction) - ★ Web
Extensions shipped with Inform
The following webs are the source for the two most important extensions shipped with Inform:
Other extensions shipped with Inform are not presented as webs, but as single files:
- Basic Help Menu by Emily Short - v1
- Basic Screen Effects by Emily Short - v9
- Complex Listing by Emily Short - v9
- Glulx Image Centering by Emily Short - v4
- Glulx Text Effects by Emily Short - v6
- Inanimate Listeners by Emily Short - v1
- Locksmith by Emily Short - v13
- Menus by Emily Short - v3
- Punctuation Removal by Emily Short - v5
- Skeleton Keys by Emily Short - v1
- Epistemology by Eric Eve - v9
- Approximate Metric Units by Graham Nelson - v1
- English Language by Graham Nelson - v1
- Metric Units by Graham Nelson - v2
- Rideable Vehicles by Graham Nelson - v3
Website templates and interpreters shipped with Inform
These are templates used by Inform to release story files within a website:
- inform7/Internal/Templates - Template websites for Inform 7's 'release as a website' feature
Documentation shipped with Inform
Two books come with the Inform apps. The source code for these books is in indoc format: the indoc tool makes those into ePubs, mini-websites, or the pseudo-websites inside the apps.
- Changes to Inform - A detailed change history of Inform 7. Ebook in Indoc format, stored at path resources/Changes.
- Writing with Inform and the Inform Recipe Book - The main Inform documentation, as seen in the apps, and in standalone Epubs. Ebook in Indoc format, stored at path resources/Documentation.
In addition, there are:
- resources/Outcome Pages - Inrtps uses these to generate HTML outcome pages (such as those showing Problem messages in the app)
- resources/Sample Projects - Two small interactive fictions, 'Disenchantment Bay' and 'Onyx', presented as samples in the app
Retrospective builds of Inform
New in 2022 is the ability for apps to use past instead of present versions of the core Inform software when compiling a project. This means the core software distribution needs to contain some form of those past versions - at minimum, the extensions and compiler tools for (say) versions 9.1, 9.2 and 9.3.
That material is held in the "retrospective" directory. Note that documentation from past versions (e.g., past versions of "Writing with Inform") is not included.
Resources copied here from elsewhere
Stable versions of the following are periodically copied into this repository, but this is not where development on them is done, and no pull requests will be accepted. (Note that these are not git submodules.)
- inform6/Tests/Assistants/dumb-frotz - A dumb-terminal Z-machine interpreter. - unversioned: modified from Alembic Petrofsky's 1998 Teletype port of Frotz
- inform6/Tests/Assistants/dumb-glulx/glulxe - A dumb-terminal Glulx interpreter. - 0.6.0 - erkyrath/glulxe, maintained by Andrew Plotkin
- inform6/Tests/Assistants/dumb-glulx/cheapglk - A basic Glk implementation to support dumb-glulxe. - 1.0.6. - erkyrath/cheapglk, maintained by Andrew Plotkin
inblorb/Tests/Assistants/blorblib - Code for examining blorb files, including blorbscan, used here for validating inblorb's output in tests. - version 1.0.2 - by Andrew Plotkin, but not currently elsewhere on Github
Binary resources (such as image files)
- resources/Imagery/app_images - icons for the Inform app and its many associated files, in MacOS format
- resources/Imagery/bg_images - background textures used in the Index generated by Inform
- resources/Imagery/doc_images - miscellaneous images needed by the documentation
- resources/Imagery/map_icons - images needed for the World pane of the Index generated by Inform
- resources/Imagery/outcome_images - images used on outcome pages
- resources/Imagery/scene_icons - images needed for the Scenes pane of the Index generated by Inform
- resources/Internal/Miscellany - default cover art, the Introduction to IF and Postcard PDFs
Other files and folders in this repository
- docs - Woven forms of the webs, for serving by GitHub Pages
- scripts/inform.giscript - Inweb uses this to generate the .gitignore file at the root of the repository
- scripts/inform.mkscript - Inweb uses this to generate the makefile at the root of the repository
- scripts/inform.rmscript - Inweb uses this to generate the README.md file you are now reading
This README.md file was generated automatically by Inweb, and should not be edited. To make changes, edit inform.rmscript and re-generate.