3 ms·
Comments here arguing about functional languages etc. really miss the point from my experience. The usability issues for me were: - The Nix homepage didn't exp
by noelwelsh 3y ago
Comments here arguing about functional languages etc. really miss the point from my experience. The usability issues for me were:
- The Nix homepage didn't explain the actual benefit of using Nix.
- Different introductions recommending vastly different ways of getting started. E.g. flakes vs non-flakes.
Even now, the homepage is bad:
> Nix is a tool that takes a unique approach to package management and system configuration. Learn how to make reproducible, declarative and reliable systems.
First sentence tells me nothing. Second sentence doesn't differentiate it from Docker.
This is, I believe, the fatal flaw of Nix: the developers just don't get how to present something that is accessible to users who are not deeply invested in the system. I don't care what language Nix is written in. I understand it's bad for various reasons (and I'm a fan of programming languages and I would probably agree with the reasons) but as a user I just want the equivalent of installing software, configuring it, and rolling back if things are messed up. If I can't do that in a few expressions or commands or whatever, I'm not interested. I don't care about flakes vs whatever. In fact I don't care about flakes at all. I want to type `nix do-the-thing-I-am-actually-interested-in` and have it Just Work.
- puzzledobserver 3y agoI tend to agree. I am comfortable with writing functional programs, but I have tried and failed multiple times to grok the Nix documentation. The complexity is not because "functional programming is hard", but because the documentation is terrible. To get me started with Nix, the documentation needs just a few things: 1. Internal consistency: A large fraction of the documentation is spent talking about how great flakes are, with a (last time I checked) big disclaimer at the top saying that flakes are experimental. Another fraction of the documentation talks about how great declarative installations are, while the third happily uses nix-env which, on the surface, seems no different from [apt / dnf] install. 2. How to use the package manager, for dummies. The last time I tried to install NixOS, I tried to install Z3 and its Java bindings, but got completely lost with the "also install the Java bindings" part. I'd rather just spin up a Docker container with my favorite distribution, and put my trusty magic installations there. 3. How to use Nix the language, for dummies. For people wanting to understand the system better than the dummies from part 2. I remember some magic ellipsis, and remaining confused about what they're about. 4. Really what Nix the language is about, for non-dummies. The documentation currently conflates the last three points, and is internally inconsistent. It is also not clear where users can turn to for help. And then, I install Silverblue on my machine, and for the most part it is rock solid and easy-to-use. Sure, there are some installation commands that I need to run at the beginning of time, but I can put those in a script, and there's my nearly declarative install.
- eternityforest 3y agoA big problem (With everything, not just Mix) is nested config files. Documentation says "Use this snippet" or "Add this to your configuration", but doesn't say where to add it. Sometimes you have to paste the snipped three levels of nesting deep, and the docs assume you already know the language and cns figure it out yourself. Meaning you can't use it without investing the time to learn it. But I don't wanna put too much time into it if nobody else is using it and it's not gonna be a common boring standard corporate choice that Just Works, because I'm not really a tinkerer distro person. I think Python has it right with Flat is Better Than Nested. If you need nested anything, I'd rather things be redesigned to be more high level. Failing that... more complete config examples, not just snippets, would be nice.