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

[package]
name=foo
version=0.1
tags=algo,android
maintainer=John Doe <doe@example.com> (http://example.com/~doe)
license=GPL
[source]
include=src
[upstream]
homepage=http://example.com/foo
git=https://git.example.com/doe/foo.git

package

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

package.name

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

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

package.version

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

package.tags

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

package.maintainer

List of the persons that are responsible for the package.

By default it is the empty list

Note that there is no author field.

package.more_contributors

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

package.license

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

source

The source section describe files in the directory of the package

source.include

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 "."

source.exclude

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

source.bin

Where executable are compiled if any.

By default, it is "bin/"

source.assets

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/"

sources.po

The directory containing translation files used by the module gettext.

By default, it is "po/"

upstream

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

upstream.git

An URL to the git repository of the package

By default it is the empty string

upstream.git.branch

The git branch of the package

By default is is master

upstream.git.directory

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 .

upstream.homepage

The URL of the public homepage of the package

By default it is the empty string

upstream.contact

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)

upstream.issues

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

upstream.browse

An URL to browse the repository containing the sources.

upstream.apk

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.

upstream.tryit

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.