8 ms·
People have tried with things like guix and there's a few other Nix spinoffs. The issue is that: Nix/NixOS is here and JUST good enough. So replacing it will
by ilc 2y ago
People have tried with things like guix and there's a few other Nix spinoffs.
The issue is that: Nix/NixOS is here and JUST good enough. So replacing it will be hard. What is come up with has to solve things so much better that the community who has invested in NixOS and others sees enough light that it is worth moving over.
That's gonna be rough. Given how hard nix (the language) is to deal with, I won't call it impossible, but... I will say, the successor is more likely to succeed if NixOS totally implodes, and I might go as far as to say... only if it implodes or offers substantial back compatibility so people can migrate.
- generalizations 2y agoAs someone who has been vaguely watching the NixOS ecosystem, but never looked closely enough to see what those sharp edges are - is there a writeup somewhere, maybe a blog post or two, that goes over what's so good and bad about Nix?
- pxc 2y agoIt's not exactly a writeup or review, but Ian Henry's blog series How to Learn Nix captures the surprises, good and bad, that a newbie exploring Nix is likely to encounter. Some of the problems he encounters may be outdated, as Nix and its documentation have both evolved since the start of the series. His experience is also somewhat shaped by his decision to rely solely on the documentation and the software itself for guidance, which he held to for quite a long time-- if you seek help from others earlier on you may get stumped less often. But overall it captures very well what getting to know Nix and its docs is like, including the emotional reactions to sharp edges. https://ianthehenry.com/posts/how-to-learn-nix/ https://ianthehenry.com/posts/how-to-learn-nix/
- mtndew4brkfst 2y agoThe most common critiques I personally see are that the syntax and language is unappealing for many folks, and that the docs are pretty frequently some combination of sparse/haphazard/stale. In my time I very often had to go read raw source to understand how to properly use some less-trivial constructs. I have enough of an FP background to find the language tolerable but not yet pleasant, or even particularly capable. It's absolutely a fair thing to not enjoy. The other major criticism that I think is even more defensible and less subjective is that incremental adoption is not very fun. Many things that are well supported on a mainstream Linux distro will not work OOTB in NixOS until some kind soul contributes the Nix-specific implementation of that thing. In some cases that's not even fundamentally possible. So you run into lots of cases where the first hit on a Google search will solve this thing if you're on Debian, but you're looking at hours of triage to do the same thing on NixOS instead. I have plenty of examples about things that are uniquely possible with NixOS too, but I don't like to evangelize anymore.
- ilc 2y agoThe biggest one is: There's 1001 poorly documented ways to do things. So until you learn to read nix, have a nix LSP etc. It is a major PITA. You can be reading a .nix file and be like... "What the ... is that?" And sadly, you know you'll inflict it on some poor person later.
- pxc 2y agoI've never used a language server for Nix but I do use the repl. Are any of the language server implementations good these days?
- mtndew4brkfst 2y agoI most frequently used https://github.com/oxalica/nil https://github.com/oxalica/nil and there is a C++ one I haven't tried that reuses code directly from the NixCpp implementation.
- aliasxneo 2y agoI've been in the ecosystem for years, including working with core maintainers and using it professionally in a large context. I'll just summarize what ultimately turned me away: 1. The community is extremely polarizing. Not just politically, but even from just being a general contributor. Depending on who reviews your PR, you can have a very pleasant experience to a downright demeaning one. I get that every community isn't perfect, but after years of dealing with generally the same problem people, I just quit contributing. 2. The Nix language itself is relatively simple to grasp, but for one reason or another people tend to build it up into a rat's nest that becomes nigh impossible to reverse engineer. Because of it's laziness, the error messages are generally unhelpful, and debugging is nothing but pure pain. 3. The thing that makes Nix great (reproducibility) is also it's greatest pain point. Depending on your language, your packaging experience may be simple to downright infuriating. At one point I just stopped packaging NodeJS/Typescript applications and resorted to other means (and this, of course, tended to anger the fanatics). Bottom line is that most software wasn't built with Nix's constraints in mind which means it's generally always a battle to get things packaged correctly. 4. The kingdom building has continued to be a major problem. Just watch the Nix Discourse for a week and you'll likely see the same problem space reinvented at least a few times. For whatever reason, in the Nix world, it feels like _everyone_ thinks they can do it better. This becomes a serious problem when it comes time to actually producing things in Nix. In my time using it professionally, I had to change "libraries" dozens of times due to lack of maintenance/abandonment. I swear each programming language must have a dozen different libraries for packaging, each with strange bugs and missing implementations. I am one of the hopeful that something new and better will come out of Nix, but I have high doubts it will come from the community itself.
- mtndew4brkfst 2y agoEvery point matches my experiences to a T. Well said.
- ilc 2y agoThis matches what I see when I read the code base.
- kstenerud 2y ago
- ilc 2y agoTo answer the good part: If you've used a normal linux distro and installed GNOME.. and then decided "That was dumb." and wanted to go back...and realize, you can't. There is no real way to get rid of Gnome sanely. (I can say the same of KDE and other massive packages.) On Nix, I can, I just remove it from the configuration, and basically reapply my config. No damage done. For tools I'll want to try out or maybe use 2 times in my life, I can just run them in shells that have them, and not add them. This all adds up to a much more pleasant experience. I won't say flawless, but... it beats much of what is out there. I do think people can take it to an extreme which isn't useful. I still have declarative dotfiles, unlike some. But, for just managing the OS and packages. I've found nothing better. Realize: Things that are clusterfucks to package like python are still clustefucks. But... otherwise... 9/10 would install again, language can take a long walk off a short pier.
- dangus 2y agoReplacing it is easy. I replaced it by never using it, and just using traditional Linux and traditional configuration management. Or for every use case where that setup sucks, using the containerization ecosystem of my choice instead. I personally struggle to figure out where the combination of those tools is failing anyone where Nix comes in and saves the day. All I ever hear about it is that it's a great concept and a great thing ruined by excessive difficulty and too many downsides. In that sense I'd rather stick to the devil I know.
- crvdgc 2y ago> only if it implodes or offers substantial back compatibility so people can migrate. Yeah, at this point, any successor would have to be compatible with nixpkgs, which means to embed the nix language in some way. My best migration experience is the vim->neovim one. It (almost) fully supports vimscript and yet runs Lua side-by-side, paving a great way to the full Lua adoption.