Hey I have read a bit on the flakes issue on here and I wanted to ask what the big deal with breaking flakes (opt in, experimental) is. Is it just that there is money in it i.e. it would not be a good look to make breaking changes now hence all breaking changes are blocked? From what I have seen I agree flakes should be separate from the core of what nix is in the sense of the evaluation but I think they shouldn’t be entirely separate in the sense that they are not under the umbrella of nixos. So for me the best way forward seems to be to break and fix flakes and make em good. This entire thing might be very naive, but I am just hoping for a more homogeneous nix ecosystem with that sweet nix cli. Anyways, I thank you for reading and your answers.
Eelco/Detsys doesn’t want to break it, so it doesn’t get broken, essentially.
Well strictly speaking that’s not true - fetchTree
, the flake lockfile format and the nix3 CLI have had breaking changes, and the schema did as well back in ~2021. Thankfully accidentally using the local registry is also being deprecated. But 90% of the fundamental design decisions that put us in an awkward place are not being changed.
The excuse that is usually provided by Detsys is that people rely on it, yet as-many people wouldn’t rely on it were it not for misleading marketing around flakes from Detsys. (Though some of those people simply use flakes out of copy-paste programming mentality.)
Less conspiratorially, “just breaking” the format isn’t necessarily the answer either; a lot of the design decisions that people want to see changes for simply don’t have good, agreed upon alternatives which tick all the boxes. Flakes are entangled with a whole sleuth of other features, making it hard to change any part of the big nix 3.0 umbrella.
There is an agreed upon path to stabilization at this point, which involves splitting apart all these things and reviewing them piece-by-piece, but that’s a ton of work (I’d guesstimate 5 years or so given the scope and usual pace of work) and there doesn’t appear to be enough interest to bring it to fruition.
The lack of will around this is again at least in part because detsys sabotaged it by not participating in the RFC until it was merged and then throwing a hissy-fit, publicly marketing flakes as stable instead… There’s a reason the community is so upset with them, even outside the less technical PR issues.
Detsys are ultimately a consultancy and almost certainly have customers who paid for the format and would not be happy with breakage, exacerbated by further customers who have adopted it since. Their influence on the nix ecosystem is immense on account of employing a majority of the important nix contributors, so if anything it’s surprising the band-aid hasn’t been pulled yet.
The various nix competitors by non-detsys groups are perhaps the best bet to getting this over the line in a way the community likes, but they in turn generally have less interest in flakes. Its main selling point is anyway standardization, which would be broken if any nix implementation decided to introduce breaking changes, so it’s unlikely any project will try to change the status quo anytime soon (except nix, but that would likely just be stabilization without major changes).
Alright :), thank you both of your insights into the situation.