Open iFreilicht opened 1 month ago
Frankly, I'd go for converting Docker users the most. Show users why Nix can be easier than Docker, but much more powerful, while maintaining some type of Docker compatibility, and we'll get tons of people switching over. The trick is reducing the work required, because few teams will put the time in. It may be a stretch, but doing symbolic execution of Dockerfile commands and ending up with something that Nix can ingest would be awesome.
Should we focus more on UX than we currently are? What actions would you take to do so?
I think the steering committee should support any initiatives for improving UX, and should there be any UX experts in the community willing to lend a hand improving the UX experience, they shouldn't be gatekept for being "non-technical", but brought into various projects (such as NixCpp), and their reviews of pull requests should be encouraged and valued deeply.
As authorities on the technical direction of the project, we should aid support and advocate for UX issues contributors raise, and ensure their voices are heard and not dismissed. We should also do so in a way that doesn't become scope creep, where we unduly add new work onto PRs and issues that didn't introduce some problematic UX, but we should strongly encourage new developments to listen to UX concerns, and we should support and encourage making changes that are purely UX related, with whatever tools we find available in the given situation.
I think being able to improve UX will be much easier with a stronger release engineering culture, as it will allow introducing more planned breaking changes.
I think contributors incorporating user journeys and personas into how they are thinking about UX would be great, and the topic of analytics deserves its own question, which I will post and and link here (https://github.com/NixOS/SC-election-2024/issues/122).
Where I see Nix failing most significantly in terms of UX is demanding too much from new users, and making it easy for them to go down the wrong path. Quoting from my candidate form:
The intended user experience should be clear and guided, instead of showering users with information and choices.
Let's look just at installation for example:
flakes
and nix-command
, or find out they are missing, and successfully enable themI have seen people get stuck in this process, or coming out of it with something that's not working. I think people are also getting overwhelmed, confused or loosing confidence in us during this process, and walking away as a result.
What they wanted to do was probably give Nix a try, or build some project with a flake.nix
, default.nix
or shell.nix
file, and not learn all of the fine details of the Nix installation process. We should try harder to not get in their way.
Should we focus more on UX than we currently are?
Definitely
What actions would you take to do so?
I think taking three steps would do a lot for end users: encouraging the use of nix-command
, improving documentation, and providing more channels for feedback
Nix (IMO) already has a lot of good UX in the nix3 CLI with clearer, more defined subcommands, better logs by default, and overall "prettier" output. It has also been consistently improving with changes made to nix flake update
/nix flake lock
, nix eval
, and nix profile
that help all of them fall more in line with what people would expect (i.e., nix eval <installable>
not exploding, updating individual inputs with nix flake update <input>
, and being able to nix profile remove
packages the same way you nix profile install
'd them). In contrast, the stable Nix CLI has a lot of functions put into few, individual commands that encourage the usage of vague shortform arguments, which in turn makes things pretty incomprehensible for users unfamiliar with it. This can become quite a major blocker for people trying to become proficient with the tool, all the while nix3 has almost solved many of these core usability issues
Other aspects of the Nix ecosystem (Nixpkgs, NixOS) also have a very good base for making things easier for users (like setup hooks and basically all of the modules system), but without proper documentation their impact is way less than it could be. As I previously explained here, I believe this is one of the most important factors in the future of Nix, and we must improve sources such nix.dev and wiki.nixos.org to fill this gap -- else much of this work may go to waste
Lastly, hearing what the community wants must play a pivotal role in how current and future systems are implemented and changed. A good way to do this would be something similar to the yearly community survey, but more focused on specific parts of the project. These should include things like ranked choices for questions regarding usage and free form answers to more general, "big picture" questions. I would also be interested in possibly collecting some broad usage statistics as mentioned in https://github.com/NixOS/SC-election-2024/issues/122
I mentioned in my answer to #83 that I'd support a desktop UX team to work on improving and upstreaming home-manager, and I believe such a team should also be responsible for gathering data about how people use Nix today and how they'd like to use Nix in the future, then defining personas and user journeys with that information.
We need to meet people where they're at, and that requires actually finding out where that is. I'd want a UX team focused on clarifying these questions and developing good answers.
I agree with proofconstruction in that we need a dedicated team focusing on UX, with improving and potentially making official home-manager, as it is a core project driving Nix adoption. Outside of surveys, I think one of the best ways to try and improve the UX situation would be to look at all of the different projects that wrap Nix/NixOS commands, and see if there are commonalities in how they handle making their own UX improvements. I personally wrote my own shortcut CLI, and the biggest commonality I've noticed while looking at the work of others is the volume of nixos-rebuild
implementations. As such, it seems to me that NixOS Rebuild is one of the biggest sticking points.
Question
We all have opinions on the Nix UX, but I think we can agree that it needs improving. I've noticed that in many discussions, we talk about "the user" and our assumptions for what they would expect or understand, without really knowing.
We have no user journeys, no personas, no analytics about how people are actually using Nix which makes good decisions difficult.
Should we focus more on UX than we currently are? What actions would you take to do so?
Candidates I'd like to get an answer from
No response
Reminder of the Q&A rules
Please adhere to the Q&A guidelines and rules