a fun language for serious programming

Package Meta-data

In Nit, the package is the unit of distribution and versioning of software. A package is made of coherent modules that are developed and should be used together.

Nit tools need information to associate a module to its packages and be able to look for dependencies inter-packages. These information are given in a package description file, called package.ini located in the root directory of the package.

An example of a package.ini file is

maintainer=John Doe <doe@example.com> (http://example.com/~doe)


The package section describe core information about the package, as listed in a catalog of packages


The name of the package, should be a valid identifier.

By default, it is the name of the root directory.


The version number of the package. Free-style for the moment but will be used latter with a semantic versioning approach http://semver.org/

By default it is the empty string


Comma-separated list of tags used to categorize the package. Tools like auto-documentation and archive networks may use them to classify the package.

By default it is the empty list

Some tags:

  • ai: artificial intelligence
  • algo: data structure and algorithms
  • cli: command line interface
  • crypto: cryptography
  • database: database
  • debug: debugging, profiling, testing, logging
  • devel: development and software engineering
  • educ: education
  • embedded: embedded system
  • encoding: encoding, decoding, conversion
  • example: example of code, proof of concepts
  • format: read, write and manipulation of file formats
  • game: video games
  • graphics: graphics and display
  • i18n: internationalization and localization
  • io: input-output
  • java: Java related
  • language: related to other programming language
  • lib: library and frameworks
  • mobile: cellphones and tablets
  • network: networking
  • parallelism: parallelism, threads, clusters
  • platform: special platforms
  • sound: sound, audio, music
  • terminal: terminal, console
  • text: manipulation of text
  • ui: user interface
  • web: web, http
  • wrapper: wrapping of third-party software
  • xml: manipulation of XML


List of the persons that are responsible for the package.

By default it is the empty list

Note that there is no author field.


List of additionnal contributors.

The final list of contributors is computed and include the maitainers, authors collected by the vcs (git shortlog) and persons. This field is expected to hold contributors thal falled trought the cracks of the vcs (e.g. non programmer contributors, bad csv history, etc.)

By default it is the empty list


The main license of the software. Free-style, feel free to use the identifier of license listed by SPDX https://spdx.org/licenses

By default it is the empty string


The source section describe files in the directory of the package


The list of directories to scan to find Nit source files. Paths are relative to the root directory of the package.

By default it is "."


The list of directories excluded from the scan of files for the package.

Unless specific conditions, there is no reason to set it.

By default, it is the empty list


Where executable are compiled if any.

By default, it is "bin/"


For libraries mnit and app.nit, the directory contained assets. On some platform like android it is used to locate and bundle assets in the generated .apk files

By default, it is "assets/"


The directory containing translation files used by the module gettext.

By default, it is "po/"


The section upstream groups information about accessing resources about the software and its development on the Internet


An URL to the git repository of the package

By default it is the empty string


The git branch of the package

By default is is master


The subdirectory of the repository that is the root directory of the package.

While it is expected that each package is developed in its own repository, a package could be located is a subdirectory.

By default is is .


The URL of the public homepage of the package

By default it is the empty string


Which person, mailing list, forum, to send e-mail messages in the first place.

By default it is the email of the first author (see package.autor)


A URL to the list of known bugs and issues for the package.


An URL to browse the repository containing the sources.


An URL that points to a dry apk, or an install page on some store, for the main Android application offered by the package.

When set, an implicit tag apk is added to the list of tags.


An URL that points to an aofficial demo version or the official live version of the main web service offered by the package.

When set, an implicit tag tryit is added to the list of tags.