Several aspects of documentation are related to the life-cycle of our products. As a very basic foundation, it is mandatory to have a kind of in-place documentation, for example by appropriately verbose function documentation.
A good documentation `SHOULD` focus on several target groups (when applicable): developer, operator and user of the software.
Also it is `RECOMMENDED` to create and update a general overview of the software architecture accompanied by at least one
graphical representation of the major components and their interaction.
### Docs-as-code
Documentation should be placed within the software repository. Furthermore for the documentation writing, building, testing and publication process, all quality criteria, workflows and pipelines `SHOULD` be set up alike those for the software itself. In this way documentation is treated the same way as code including the usage of version control, issue tracker, code reviews and automated tests.
A presentation of the usage of this approach for a long-term scientific software project is available at [zenodo](https://zenodo.org/records/7260347). In general, this approach can be applied to small-scale projects as well.
Docs-as-code is not an out-of-the-box environment for creating neat documentation. It is up to the project to decide for a markup format and a static site generator.