Choosing the right distro can feel like choosing the right romantic partner. The pain involved during the break up / switch seems to be the same.. :heavy_heart_exclamation:
As I’m writing this article, I’ve just passed through a distro crisis. A distro crisis is a crisis where one feels as if the distro he has chosen was the right distro to choose to begin with. All of it because of this issue.
My X-distros are:
Current distro: NixOS
With Arch Linux I’ve had the most fulfilling, long lasting and meaningful relationship. I’ve managed to configure it to the bare bones, create custom packages of mine including a personal repository and maintaining a set of packages in the AUR. The experience was interesting and very teaching but after a while I figured that the way packages are managed there is very tiring and becomes impossible when the set of packages gets large.
Trying out GNU Guix was an interesting experience. I’ve finally had the empowering feeling of using a real programming language in order to define packages, declaratively. Not only that, the command line usage of guix
is beautiful and intuitive - much better then nix
’s tools.
The deal breakers for me and Guix were:
Only after I started to get involved in NixOS, I’ve finally realised that a good community is important for the GNU/Linux experience. I think what makes us so friendly and helpful is the fact we know NixOS is far from being perfect. Thus, even with the most easy-to-solve-it’s-so-obvious-what’s-wrong-with-you question, it’s easy to understand how someone might miss something.
Arrogance is a source of toxins. Back when I tested Guix, something stopped working for me and I got very frustrated by it. I talked about it with the community and some people tried to help me. By the time we realised what was wrong, I was still frustrated a little so I wrote what I think is wrong in the current design of their main repo. The big maintainers suddenly joined the discussion, and they were polite but I felt the toxic in their words. Reference.
After I switched to NixOS, I was surprised to see that exactly what I’ve found was designed wrong in Guix’ main repo was built exactly as I thought should be right, in NixOS.
Yes, that’s not obvious. NixOS uses:
It’s somewhat unbelievable that some popular distos are still using Mailing lists and [phpBB forums](https://www.phpbb.com/).
The project is developed and maintained at several repositories under the NixOS GitHub Organization:
nix
and the other executables is developed.
This design attracts contributors because the OS and the packages - where most contributed are attracted to are configured in a single repo. Not to mention that GitHub Pull requests are familiar to almost every person in the FOSS world, as opposed to mailing lists patches. Guix puts both the package manager and the packages themselves.
Nix’s command line interface is not intuitive, there are many executables that Nix brings to your $PATH
:
nix
nix-build
nix-channel
nix-collect-garbage
nix-copy-closure
nix-daemon
nix-env
nix-hash
nix-instantiate
nix-prefetch-url
nix-shell
nix-store
This is somewhat confusing for new users as they each have a somewhat different syntax. From what I’ve heard, @edolstra plans to make Nix consist of only a single executable nix
with a git like syntax.
Nixpkgs is bloated, with around 1500+ pull requests open all the time (ever since I started to use NixOS and until today). It’s hard to get attention from mergers like that. Most notably, small versions bump also fill up the PRs pool, making it hard to give attention to bigger PRs with more significant improvements / fixes. Moreover, many PRs are stale because their author hasn’t responded to reviewers’ comments and it’s hard for mergers to see which PRs are ready and which aren’t.
There are some ideas how to handle this in NixOS/rfcs so I’m optimistic :). Notably: