Types of documentation

end-user documentation

Documentation for end users of a given Lino site. Written in the language(s) requested by the site operator.

developer documentation

Documentation written for developers and motivated site experts. Only in English. May include tested source code snippets and part of the test suite.

site documentation

Documentation that was automatically generated for a given Lino site.

Technical documentation includes topic guides, technical specs, the changelog and generated API documentation. For some applications we maintain also end-user documentation in different languages. These are independent doctrees, not a translation of the technical docs.

The developer documentation for lino, lino_xl and getlino is grouped in the "Lino Book". The book repository contains Python source code for a package lino_book. This package is not installable via PyPI because it contains only fictive example projects.

The book also includes the developer documentation for a set of "privileged" applications (Lino Noi, Lino Tera, Lino Avanti, ...) because it's difficult to explain Lino without examples, and because real applications are the best example.

Otherwise every newer typical Lino application has its own doctree. Lino Amici is an example. The doctree of amici can refer to the book via Intersphinx.

We also maintain the atelier and etgen packages, which come "before" Lino in the dependency chain. These packages have their own doctree, which doesn't "know" about Lino. But the book "knows" about them and wants to refer to them.

Most conf.py files use atelier.interproject.configure() to configure intersphinx dependencies, and rstgen.sphinxconf.configure() to install default Sphinx settings that are common to all doctrees.

Python dependencies :

  • book -> xl -> lino

  • book -> noi -> lino

  • lino -> etgen -> atelier

  • amici -> xl -> lino

Doctree intersphinx dependencies:

  • amici -> book -> atelier

Documenting Django models.py modules has the particular challenge that they cannot be imported without a DJANGO_SETTINGS_MODULE, and this setting may not change within one Sphinx doctree. That's why the doctree of the book uses lino_book.projects.max as its DJANGO_SETTINGS_MODULE during build.