-
-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC #TBD] Rename the unstable branches/channels #153
Conversation
I think we first need to find agreement on what it is actually meant for. Some see it as the development branch leading to a stable release, others see it as the branch for a rolling distro. |
I think that even if treated as a "development" branch, the amount of testing we do in Hydra produces a result that's extremely usable as a rolling release distro. I don't actually remember unstable being outright broken basically ever? |
I'd say this is about managing people's expectations. Given we have the release schedule along with restrictions of what is mergable in certain periods and what not, I'd argue the current |
What is our reference point for «unstable» in distributions? Debian unstable which is also more or less a rolling release distro in practice? |
I don't think one exists, really. Debian's "unstable" is also mostly named that because it's API unstable, not "has bugs" unstable. |
I think we should be making a distinction here. Breaking API changes are always allowed on unstable. Introducing major bugs should not be allowed anywhere, and if we get one, that really just means we need more tests. |
No, it's fine in staging. (Which corresponds to Debian experimental, I guess) |
I mean major bugs that make their way to a channel. It's obviously unavoidable that we will have major bugs in any branch, the goal is to make the tests catch them before they impact users. |
Ah, as your title is about branches… (and with staging, I did mean intentionally introducing bugs to fix them step by step) |
Actually, thanks, the title should explicitly mention channels, as they are not quite the same as branches. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In my opinion the unstable
term is accurate enough. (Worst case we are under promising and over delivering.) I think it is unlikely that a new name will be worth the effort and confusion a rename brings.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One thing we don't have which we would need at least for me to feel comfortable with a less scary name like "rolling" is continuous management of release notes. Currently, we have the release notes entry as one of the checkboxes in the PR template, but I don't think all reviewers pay attention to it, and only ahead of each release do we actually have a systematic effort around trying to get the release notes into an accurate and reasonably complete state.
|
||
## Aside: on the naming of cats | ||
|
||
This RFC intentionally does _not_ propose a new name to replace "unstable". The intent of this RFC is to not focus on the exact naming, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should pick a name as part of the RFC. It is hard to evaluate the benefits a better name brings without knowing what the name is. Therefore we can only evaluate the downsides without evaluating the upsides. So unfortunately we have to assume that this RFC has negative value. I don't feel comfortable accepting an RFC with just a "it will be great, trust us" promise for the advantages.
Hm. If the reasoning relies on tests, |
OK, what major software project uses «unstable» to determine something that is much buggier than NixOS unstable (which is not that polished even in the things we control, and also we sometimes fail at mind-reading upstreams)? I just think that if we are in line with the terms of art, the renaming is not worth the hassle. Our learning curve has an inherent part, and some general prerequisites, if someone is scared away by «unstable», maybe they are better off on the release version? We are not Debian, our releases are aiming to package stuff less than a year old. |
Are you implying that Nixpkgs does not contains bugs? |
I can now see that the RFC was based on my mistaken assumption that there is already widespread consensus on what the reliability guarantees of |
My impression is NixOS unstable seems more stable than Debian unstable, but that might be n=1 anecdotal. It might be relevant to take into account "how scary it is to run unstable": because of easy rollbacks, it's much less scary to run NixOS unstable compared to many other unstable things. For that reason something "less scary" like |
Expanding on that, Arch Linux only is ambiantly "rolling" (testing excluded), and is prone to more breakage and maintenance (if you don't read the news) than NixOS unstable, so my judgement is rolling is more appropriate for NixOS since it's less breaking than the most popular(?) rolling distribution. We could even be cute (maybe don't) and call it walking, or sprinting, or running (yes it runs!), since we're not tumbl(eweed?)ing down uncontrollably rolling! |
Expanding even further: Other than upstream new version breakage/behaviour changes, the same guarantees of software stability and boot-readyness exists for "stable" than "unstable", at branch-off time, the same test suite checks the channel can go forward. So for all intents and purposes, "unstable" is just as much "ready to run" (running?) than stable until new tests makes it even more guaranteed to continue being ready. In other words, the backports policy makes non-major upgrades just as breaking in "stable" than "unstable". |
At the risk of going offtopic, that 'new version breakage' might be significant though: while indeed the same test suites are applied, for example the "zero hydra failures" process hopefully makes the stable channels actually more stable than some points in time on unstable. Also processes like https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/python.section.md#cpython-update-schedule-python-cpython-update-schedule (IIRC we have something similar for the major desktop environments?) are timed so that there might be some breakage to expect on unstable, which should have some time to stabilize before it makes it into a stable channel. I think that's sensible (and doesn't stop me from using unstable even for environments that I don't want to break :) ) |
Note that I agree with what you said, @raboof, but also, that describes the usual rolling release guarantees in practice! |
Or we could do "NixOS blizzard", "NixOS snowfall" or something like that to have a play on the snowflake thingie :) |
I think "unstable" is fine, since both interpretations ("can have bugs/regressions" and "can break interfaces") apply to our master branch. (Of course the "stable" branches can have regressions too, but our backport policy tries to minimize the chance of that happening.) The (mostly speculative) advantages of other names are vastly outweighed by the huge pain of a rename. Renames of this nature are almost never worth it. Names are interfaces and we shouldn't break them unless there is a really compelling reason.
That's a good question, since most people shouldn't be using unstable. |
When people say a software is "unstable", they really mean that it crashes, or contains a lot of bugs, or has flaky and non-reproducible bugs, or is just of poor quality. I think only the software people mean "often changes" by "unstable".
Could we consider renaming stable? Technically, we don't have "stable": we have a release number (and a release name technically, but I don't think anyone ever refers by it specifically?). If we could come up with a general term for releases that emphasizes their set-in-stoneness, I think it help people understand the "unstable" while not breaking the interface. Some of the names I immediately think of (and those seem pretty bad lol) are: "Snapshot", "Freeze", "LTS", "Branched", "Static", "Traditional".
Why? I'm genuinely interested, because the most popular desktop OS by far is "unstable" (Windows), one of the most popular Linux distros is "unstable" Arch Linux, and then there's SteamOS which is getting traction (and is also "unstable"). Ubuntu also has moved to "unstable" direction with their snaps (which are a hack to bypass dependency hell of introducing new software to older system, and contain auto-update). Damn, a lot of software auto-updates in general: Chrome, Discord, VSCode, etc. I think focusing on "stable" releases is a long-lived tradition of Linux people that does more harm than good, to be honest. People are used to all of the stuff updating quite often (because they used Windows for a long time, for example), and breaking changes too. People don't quite like it, but not updating your browser or messaging apps (that would gladly lock you out if you don't update for a while) or stuff like Steam or Lutris is impossible. And providing new versions of all of that stuff together with "stable" software is challenging due to a lot of factors. I think NixOS really excels at the fact that it is a rolling-release distro that rarely breaks (and when it does, you just rollback). I think there's a decent portion of people who use Arch Linux and hate themselves for having to fix the system very often, and people who use Ubuntu/Debian and hate themselves for having to use Flatpaks/Appimages/Snaps to use critical software like browsers and messengers with a modern version (and not a version that was last in use one year ago). |
Going to close this for now because I don't really have the brain juice to work on the follow-up. Sorry everyone :( |
That's why we keep updating such packages even on "stable" releases ;-) EDIT: as for "more harm than good", I'd agree with 10-year support but our half-year cycles are very short. Probably still too short for people who "don't like updating often". |
A few things:
As vcunat pointed out, software that needs to be updated to continue to work (or be secure, etc.) does still get updated on the stable releases.
It's quite trivial to run NixOS on a stable channel, and still install a few packages from unstable, which is likely the better approach for the latter group of people, assuming said software isn't updated enough on the stable channel to begin with... Also, not really NixOS-related, bu it's amusing to me that you mention Flatpaks here: Flatpak releases of application updates are often months or years behind distro releases, particularly when it comes to security patches in dependencies. Even for the subset of Flatpak applications that get frequently updated, the runtimes they're based on don't get updated nearly as often. The core freedesktop runtime, for example, has stable release channels on a yearly cycle and a 2-year support period (I think?), it's not a rolling-release system. |
Aliasing nixpkgs to the nixpkgs-unstable branch in the flake registry seems like a strange choice then. |
This pull request has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/2023-11-09-documentation-team-meeting-notes-93/35244/1 |
Users often interpret Nixpkgs "unstable" as "contains bugs", not the intended meaning of "can have breaking changes".
To avoid this confusion, we should rename the "unstable" branch to something that doesn't have those connotations.
This is an early RFC, intended to gauge consensus and identify possible technical issues. Please refrain from actual naming discussion (if you have a name suggestion, DM me on Matrix - I'm collecting those in advance).
Rendered