Attendees: @fricklerhandwerk @Mic92 @LucPerkins @brainrake @john-rodewald @yuki_is_bored @milibopp @zupo
Notes: @milibopp @fricklerhandwerk
Motto of the day: It’s documentation all the way down
Brainstorming pain points
-
nixos.org isn’t helpful
- hard to find the manuals
- NixOS is only mentioned two times
- users of specific languages/frameworks don’t find information on stuff relevant for them
- Generate documentation for language specific libraries in nixpkgs manual · Issue #126375 · NixOS/nixpkgs · GitHub
- Bring the Haskell documentation back into nixpkgs · Issue #121403 · NixOS/nixpkgs · GitHub
- Nixpkgs manual: Add section about using CMake · Issue #102104 · NixOS/nixpkgs · GitHub
- Improve documentation around building python packages with poetry · Issue #78442 · NixOS/nixpkgs · GitHub
- nix.dev has all kinds of documentation, not just guides and tutorials
- it’s not visible at first glance what’s available
- there should not be too many options
- the navigation side bar is too long
- the outline is too long
- manual: navigation sidebar · Issue #26932 · NixOS/nixpkgs · GitHub
- Nixpkgs: hard to disvover which functions are available and where they are in the source code
- mkDerivation, mkEnv, mkShell
- generators, in pkgs.lib or outside
- Doc: missing for writeScriptBin etc. · Issue #85885 · NixOS/nixpkgs · GitHub
- Document what callPackage does and its preconditions · Issue #36354 · NixOS/nixpkgs · GitHub
- Document makeExtensible & makeOverridable · Issue #26869 · NixOS/nixpkgs · GitHub
- Documentation for mkDerivation · Issue #18678 · NixOS/nixpkgs · GitHub
- if you search for obvious things, the first result is not helpful
- NixOS passwords
- NixOS Wiki is outdated, disorganized
- for people who want to write derivations: hodgepodge of reference materials
- no explanations on the different concepts
- stdenv documentation is ordered in a way that isn’t helpful for understanding what’s going on
- phases are explained after cross compilation
- shell hooks and environment variables are like magic
- cross compilation is arcane dark magic
- `postHook` is undocumented · Issue #143473 · NixOS/nixpkgs · GitHub
- doc: clarify section on setup hooks · Issue #120998 · NixOS/nixpkgs · GitHub
- contribution process is entirely unclear
- steps to take are not documented
- no overview of what is important, what is noise
- no setting expectations
- CONTRIBUTING.md and `nixpkgs` manual contributing section are redundant · Issue #184971 · NixOS/nixpkgs · GitHub
- How to maintain helper script documentation? · Issue #169570 · NixOS/nixpkgs · GitHub
- Document reverting · Issue #135827 · NixOS/nixpkgs · GitHub
- doc: Explain how to link to options in the manual · Issue #102246 · NixOS/nixpkgs · GitHub
- Document new staging workflow · Issue #83381 · NixOS/nixpkgs · GitHub
- where is generate-shell.nix to be found? · Issue #82500 · NixOS/nixpkgs · GitHub
- Doc missing: Deprecation process · Issue #64296 · NixOS/nixpkgs · GitHub
- search engines do not show Nixpkgs or NixOS manuals
- examples on nixos.org show what you can do, not how it works
- nix.dev does a better job
- explore page only lists features, but not how to make use of them
- working on nixos.org is painful
- should the Nix documentation team own nixos.org
- visuals: Nix manual, Nixpkgs&NixOS manuals, nix.dev look different
- no unified devops story
- searching for Nix CLI docs, many results end up in @ryantm’s fork of the manual
- not clear what’s an authoritative source
- never documented which version the documentation refers to
- no SEO metadata on nixos.org
- no examples for how to use major NixOS modules
- Flakes not mentioned in official documentation
- separation of conerns: Nixpkgs manual addresses both package users and Nixpkgs maintainers
- not documented how to use labels on GitHub
- labels not used consistently, only through automatic assignment through issue templates
- hard to find things
- proposal: manual should link to documentation source (make change) or correct issue template (file issue)
- not very many issues on Nixpkgs/NixOS documentation
- hard to assess what people struggle with
- many terms not linked to their definitions
- deeply nested chapters
- documentation rarely links to relevant source
- no tool for searching documentation
- should documentation make recommendations?
- offer best practices
- recommend external tooling
- endorse flakes
- docker examples live in the source
- https://github.com/NixOS/nixpkgs/blob/c96a0248ca3889f4a8a82872dda78413377745c8/pkgs/build-support/docker/examples.nix
- well done, easy to find, but does not look legit
Categorize and find patterns
- discoverability
- nixos.org navigation, layout
- structure of documentation (separation of concerns)
- search tooling, quality
- interlinking
- contribution process
- where to put what - also structure above
- ease of contribution, technically and cognitively
- guidance
- strategic decisions for documentation…
- make obvious what are official sources
- learning strategy
- examples
- best practices
- what’s useful to know when
Sort out priorities
-
Expectations for documentation team lead
- organize biweekly meetings
- review
- ask annoying questions
- figure out what to work on next
- delegate prioritized work items
- maintain working relationship with important Nix people
- compile list of people responsible for certain parts of the Nix ecosystem
- maintain team handbook
- centralize team efforts into repository
-
How to improve a contribution guide
- get someone to try to contribute
- watch everything they do and take notes
- review notes, find pain points, create issues
- fix at least one issue
- edit contribution guide
- rinse and repeat
Pick a goal for the next 3 months
From looking at the graph and where most arrows lead to, we define the following goals:
-
The roles and responsibilities for maintainers of documentation in the Nix ecosystem are well-defined.
-
The process of becoming a maintainer of documentation in the Nix ecosystem is well-defined.
Break down tasks
-
create overview of what is where
- improve overview of existing contribution guides
- link to “How to contribute to X documentation” from overview (NixOS/nix.dev#350)
- link to sources for manuals, not just manuals themselves
- link to filtered issue lists for each problem domain (e.g. documentation)
- make overview of open issues more visible
- provide guidance how to find existing issues
- (issue: Establish and explain emoji convention · Issue #359 · NixOS/nix.dev · GitHub) explicitly establish convention of labelling issues with emoji to issues
- proposal:
-
I would like to have this fixed
-
I’m aware of this, I’ve seen this
-
- proposal:
- improve overview of existing contribution guides
-
define a central location where the docs team is working
- proposal:
- what we’ve been talking about or doing: Discourse
- results of what we’ve done: pull requests on GitHub
- proposal:
-
refine collaboration process
- discussion should happen on pull requests directly
- meeting agendas a pull requests
- how to subscribe to Nixpkgs notification effectively
- give advice on how to word issue titles and descriptions
- how to subscribe to Discourse categories effectively
- how to deal with Matrix
- where to ask questions (Discourse), where to place proposals (Pull Request)
- protocol:
- merge pull request with agenda for current meeting
- merge pull requests made on last session
- …
- submit pull request(s) with meeting results
- post links to submitted pull requests on Discourse
- update calendar/invitations
-
team lead responsibility
- get write access to NixOS calendar
- remove double book keeping on team info
- get rid of project board, it doesn’t really work
- provide list of contacts
- determine where to put contacts list
- can leverage
CODEOWNERS
onNixOS/nixpkgs
- introduce
CODEOWNERS
onNixOS/nix
- introduce
CODEOWNERS
onNixOS/nix.dev
- introduce
- communicate to team members what’s going on outside the team
- monitor all the other team’s activities (read reports)
- ensure that for each maintainer responsibility there is a guide how carry it out
- …
-
maintainer handbook: I have an hour, how can I use that effectively?
- how to turn questions into issues, how to turn issues into pull requests
- how to keep track of work in progress
- how and when to say no
- when to close an issue or pull request
- is the issue still valid or has it been fixed already
- how to replicate issues
- what if you don’t have time at the moment
- proposal: answer that until X date there is no chance it will be even looked at
- what if you don’t know when you will have time again
- what if you’re not qualified to address the issue or pull request
- how to escalate issues
- when to close an issue or pull request
- when and how to veto changes
- how to triage issues
- how to leave the team
- how to make pull requests
- always use your private fork
-
maintainer responsibilities:
- monitor GitHub notifications, Discourse and Matrix
- have an entry in
CODEOWNERS
- free choice, but recommendation: pick one small thing (e.g. some manual sections, some tutorials) and that only
- get merge access to the respective repository (required for
CODEOWNERS
)
- refine: which categories/channels
- have an entry in
- be responsive to @-mentions on Matrix, Discourse, GitHub
- refine: target response time
- guide potential contributors from discourse questions to writing issues to making pull requests
- reserve time for reviews
- only pick up subjects that fall within what’s in your
CODEOWNERS
entry
- you’re reponsible for everything you merge and have to follow up on regressions
- subscribe to external resources that relate to your area of responsibility
- e.g. documentation on flakes: be aware of support status or timeline to stabilization
- monitor GitHub notifications, Discourse and Matrix
Assign responsibilities
- break down items into issues on nix.dev
- @LucPerkins put up link on nixos.org to nix.dev docs team directory
- @milibopp make pull request for “refine collaboration process” + issues, where more work is required
- @minijackson make pull request and issues for “maintainer responsibilities”
- @zupo create: “I have an hour, how can I help?”
- @LucPerkins update communication architecture diagram and put it on team page
- @LucPerkins make pull request “team lead responsibilities”
- @fricklerhandwerk update How to contribute to documentation to point to nix.dev team page
- @fricklerhandwerk set up a separate directory for maintainers on nix.dev
- @yuki_is_bored move contribution guide on nix.dev to top level
-
@LucPerkins create
CODEOWNERS
on nix.dev and Nix - @fricklerhandwerk move team info to nix.dev
- @yuki_is_bored add filtered issues list to contribution guide