Objects and interactions in the Nix ecosystem
This is based on the UX workshop from the 23.11 ZHF hackathon in Zurich as well as the results of the 2024 community survey. Thanks again to @EltonUX for guiding us through the workshops and to @Arsleust for the survey analysis and graphs.
The ultimate goal is of course to better understand and cater to users’ needs, but as a first step we’ll assess the current state of affairs: what is the system like and how do people work with it? For that, we identify the most important objects and interactions in the ecosystem.
This will help scaffolding a UX discovery and research phase that aims at designing an information architecture and optimise user and contributor workflows.
Objects
Sources of help, in approximate order of relevance:
- Reference manuals
- Wiki articles
- Source code
- GitHub issues
- Free-form discussion
Objects of interest, in approximate order of relevance:
- Package search
- NixOS option search
- NixOS configuration examples
- Development environments and command-line interfaces
- Reference manuals, tutorials, guides
- Package and module source code
Interactions
This part is an interpretation of the survey data: Which interactions are implied by the use of certain object or resources?
It seems that the typical workflow is roughly like this:
-
Discover what’s available
Use package or options search, or look up terms in the reference manuals.
-
Find out how to configure or customise
Search for examples or guides that help with building an integration.
-
Iterate on a setup in a development environment
This is where the command line comes into play.
-
Work around obstacles
Look up more detailed information in reference documentation or study the source code.
-
Solve problems with the underlying system
Discuss implementation details in the forum or issue tracker.
Interpretation
The free-form answers to the questions as to what prevents full adoption of Nix or NixOS from the 2024 survey indicate that it’s:
- a lack of discoverability in reference documentation (a listing of what exists)
- a lack of reliable examples (showing how to use what’s there)
- a too long chain of interactions to get to the desired result (what may lead to confusion, frustration, or a perception of high difficulty)
The survey doesn’t capture as much detail about the contributor workflow, which should be a goal for the next survey. The question which identifies user types shows that not only more than half of the respondents want to get productive with the Nix ecosystem, but also more than a third want to contribute to it.