ganelson / inform
- воскресенье, 1 мая 2022 г. в 00:32:44
The core software distribution for the Inform 7 programming language.
v10.1.0-beta+6U94 'Krypton' (30 April 2022)
Inform 7 (April 2006-) 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.
Inform is itself a literate program, one of the largest in the world. This means that a complete presentation of the code, in human-readable form, is continuously maintained alongside the code itself. So to read this, along with technical documentation and other useful resources, turn to the companion web page to this repository: ★ Inform: The Program
Writing and presenting Inform as a literate program was beyond the capabilities of existing LP software, so a new system for LP called Inweb has been spun off from Inform, and that has its own repository.
Except as noted, copyright in material in this repository (the "Package") is held by Graham Nelson (the "Author"), who retains copyright so that there is a single point of reference. As from the first date of this repository becoming public, 28 April 2022, the Package is placed under the Artistic License 2.0. This is a highly permissive licence, used by Perl among other notable projects, recognised by the Open Source Initiative as open and by the Free Software Foundation as free in both senses.
For the avoidance of doubt, the Author makes the further grant that users of the Package may make unlimited use of story files produced by the Package: such story files are not derivative works of Inform and do not inherit the Artistic License 2.0 as an obligation. (This further grant follows the practice of projects like bison, which also copy substantial code into their outputs.)
A condition of any pull-request being made (i.e., to make suggested amendments to this software) is that, if the request is accepted, copyright on any contribution made by it immediately transfers to the project's copyright-holder, Graham Nelson. This is in order that there can be clear ownership. It does not apply to the programs duplicated here from other repositories (such as dumb-frotz) or to the Inform GUI apps: those have their own copyrights and licences.
This is the "core repository", holding source code for the compiler, and for everything needed to run it on the command line. However:
Make a directory in which to work: let's call this "work". Then:
If that passes, probably all is well. The definitive test is "make check", which runs nearly 2500 cases through the executables, but takes 10 minutes on an 8-core desktop and half an hour on a 4-core laptop (which will sound something like a helicopter taking off).
Current status: All tests should pass on Linux, MacOS and Windows.
The old Inform bug tracker, powered by Mantis, has now closed, and its issues and comments have been migrated to the new one, powered by Jira and hosted at the Atlassian website.
The curator of the bug tracker is Brian Rushton, and the administrator is Hugo Labrande.
Note that Inweb and Intest have their own bug trackers (here and here). Please do not report bugs on those to the Inform tracker, or vice versa.
Inform is only just emerging into the light of being open-source, but it is not new software. It has a mature and well-used feature set, so that new or changed functionality requires careful thought. For the moment, its future direction remains in the hands of the original author. At some point a more formal process may emerge, but for now community discussion of possible features is best kept to the IF forum. In particular, please do not use the bug trackers to propose new features.
Pull requests adding functionality or making any significant changes are therefore not likely to be accepted from non-members of the Inform team without prior agreement, unless they are clear-cut bug fixes or corrections of typos, broken links, or similar. See also the note about copyright above.
The Inform licence is highly permissive, and forks which develop in quite different ways are entirely within the rules. (But one of the few requirements of the Artistic Licence is that such forks be given a name which is not simply "Inform 7", to avoid confusion.)
"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.
This most important contents of this repository are the source webs for the following command-line tools:
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:
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:
These are templates used by Inform to release story files within a website:
These are Javascript interpreters used to release such websites in a form which can play the story files interactively online:
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.
In addition, there are:
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.
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 - The Inform 6 compiler (used by I7 as a code generator). - 1636 - from [https://github.com/DavidKinder/Inform6], maintained by David Kinder
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
This README.mk file was generated automatically by Inweb, and should not be edited. To make changes, edit inform.rmscript and re-generate.