This a wiki post for a roadmap to improve documentation content and infrastructure, spearheaded by @danielsidhion. It can be updated with links to tracking issues, so anyone can follow progress or find something to help out with.
Based on A vision for the manuals (and other documentation), I outlined this roadmap to work towards.
This isn’t a fixed roadmap.
I’ll adapt and change it as needed, but I plan to keep following it at my own pace (I’m a volunteer after all).
It’s also not a complete roadmap, it only has items that I’m particularly interested in working and fits the vision.
Getting to the state outlined in the vision involves a lot of work, and sometimes requires multiple layers of effort to sustainably deliver the vision.
The items below are high-level items and don’t break down or describe in details all the actual work required to complete them.
It’s also possible that some ground-level work can make progress or help multiple of these high-level items.
- A. Update the content on each manual.
- A.1. Effort to pay off content debt:
- [Tracking issue] Nixpkgs
- NixOS
- Nix
- A.2. Effort to improve maintainability:
- Build some sort of tool that points out when content might be out of date.
- Once this tool exists and is proven to work well, integrate it in the Nixpkgs contribution process to force new documentation to be written as soon as code is changed in a PR.
- A.3. Effort to reorganise content:
- Reorganise sections in all manuals.
- Expose internal Nixpkgs READMEs as an “internal” Nixpkgs manual and move some content from the “external” manual into READMEs.
- Create a standard for anchor links (currently it’s free form and there all sorts of anchor ids) and build a tool to enforce it.
- A.1. Effort to pay off content debt:
- B. Documentation renderers overview I’m currently investigating other documentation frameworks to help with multiple points:
- Producing manuals in different content formats.
- Providing multiple ways to navigate content.
- Provide a unified interface.
- Point C.1. below.
- Point D.2. below.
- C. Improve maintainability of the manuals.
- C.1. Build or integrate a tool to ensure that every possible link on the manual can still be reached after every change.
- C.2. Move code from every example in the manuals to their own
.nix
files and add them to a testing suite. - C.3. Document guidelines for documentation writing and enforce a process for reviewing documentation changes, possibly with automatic linting or something similar.
- C.4. Improve RFC 145 with things we learned from working on it:
- How to merge doc-strings of functions and their arguments, including attributes of their arguments.
- How to document default values for arguments and their attributes.
- How to document attributes/arguments from partially-applied functions.
- C.5. Unify the toolset used to generate all of our documentation, with ideally as few tools as possible.
- D. Improve content discoverability.
- D.1. Expose the manpages for every package built in Nixpkgs on a site, and make the manuals link to it (there might be a GSoD project for this).
- D.2. Introduce a shared glossary among all manuals and make it easier to link terms to the glossary definitions.
- D.3. Provide a map of documentation content that people can refer to whenever they feel lost.