This is an old revision of the document!
Project Documentation
This guide describes our general approach towards documentation. On a high level, we distinguish several types of documentation:
- Dynamic Documentation
- Project Specific Documentation
Dynamic Documentation
Dynamic documentation includes notes and docs
- whose scope is not well defined
- that require frequent changes
- that don't have a clear definition of done, but are rather a snapshot of certain point in time
- that do not require semantic versioning or a browse-able history of older versions
An example for such a type of documentation are the IT inventory, or the usage instructions for the coffee machine. Keeping a list of devices such as servers and network routers requires constant updates to reflect the most recent changes. Since the IT infrastructure undergoes continuous development, it does not make sense to think in terms of fixed releases. (If a device breaks, it needs to be replaced, possibly by another type of device that has a slightly different configuration).
We keep this type of documentation in a Wiki as it can be quickly edited.
Our Wikis
We organize content into separate department-specific wikis:
Project-specific Documentation
On the other hand we have documentation for specific projects (software, hardware, combined, …). In contrast to the examples before, these project follow a different lifecycle and therefore need a different approach when it comes to documentation.
To improve project documentation in general we aim to:
- create consistent templates
- define a standardized workflow
- provide infrastructure to project contributors and users
On a high level, we can define several groups of documents that are necessary to fully document a project.
Core Documents
System Documentation
The developer's technical lifeline:
- Technical Requirements & Dependencies
- Architecture documentation: System structure and reasoning
- Code documentation: API docs, inline comments, specifications
- Setup and deployment guides: Environment configuration
- Database schemas and data flow diagrams
- User documentation
- Adjacent projects
Process Documentation
The *How we work* knowledge:
- Responsibilities
- Documentation guidelines
- Coding standards and testing procedures
- Benchmarking
- Git workflows and branching strategies
- Code review processes
- Release procedures and deployment pipelines
Key strategic Documents
- Product Requirements Document (PRD): Team roles, business objectives, user stories, acceptance criteria
General Worflow
The workflow should serve the main three goals of Creation, Maintenance, and Discoverability.
Creation
Bootstrapping: When starting a new project, the workflow in general looks like this:
- Iterative project brainstorming (organized by project owner)
- Project Setup (Docs, Code, Hardware, other dependencies)
- Project planning setup (collaborative)
Tool: Use the collaborative Sketchpad at sketch.rekonas.com
You can use the following template to get started: https://sketch.rekonas.com/E9x2lhChRIOgP-eTI10bMg#
Progress Documentation: Planning documentation milestones is an integral part of project planning. It is up to the project owner to decide what level of documentation is required at a certain milestone.
Project organization summary: Provide a short summary of project documentation setup (visual and written) that can serve as an inspiration for future projects.
Maintenance
Keep Docs in Sync: Make sure that the project documentation is not lagging behind your project releases
Docs as integral part of project: Make documentation updates part of Definition of Done. It is up to the project owner to decide the exact scope the documentation at a specific stage of the project.s
Discoverabilty
Single landing page: The project docs should serve a single entry point to all resources regarding this project such as:
- Getting started instructions
- Architecture Overview
- API References
- Deployment Guides
- Contributor Guidelines
Project Directory: Our documentation site will provide an overview over all existing projects, making it easier to find other content.
Implementation
To help with the creation of documentation, we provide a setup including a template.
Stack
Our solution is based on:
- MkDocs (Material)
- Gitea Template
- Gitea Action
- Docs website (auto-deploy)
Project Structure
The template is already populated with a basic structure that should help us reach a certain level of consistency between the docs for different projects:
1. Getting Started: Setup and Quickstart guides 2. Architecture: Explains the architecture of the project 3. Components: Details about individual components 4. Deployment: Explains hos to build, package and release the project 5. Contributing: This is where all the process documentation for the project goes 6. User Documentation: User manuals
Template & Tutorial
To get started easily a template is provided together with a tutorial:
- Gitea Template: https://code.rekonas.com/rekonas/docs-template
- Online Version: https://docs.rekonas.com/template/latest/
Before starting a new project, it is recommended to have a look at the Tutorial: https://docs.rekonas.com/template/latest/Help/Tutorial/
