Our stable releases cover a large breadth of use cases, this discussion is talk about what should be prioritized for a stable release. And perhaps optimize our release schedule to align with meeting those core criteria.
With the 20.09 release, the biggest delay was around polishing the plasma5 experience, with the last blocking item being closed 3 weeks after the original release date: https://github.com/NixOS/nixpkgs/pull/101078
Why is plasma given so much precedence, even though it’s only one of 17 Desktop managers available?
Because we distribute plasma as our official graphical installer iso (soon to be accompanied by a gnome iso as well). For NixOS desktop users, this is largely going to be their first impression and face of NixOS.
Defining target audiences of the stable release
(This is my personal thoughts, but I’m not an expert in release management; and I don’t have any actual data to back up these assumptions)
The main users for the stable release can broadly be described as, “don’t want to deal with the constant minor breakages in unstable”. More specifically this is likely to be two groups of individuals: people using Nixpkgs in production, and people using NixOS as their daily-drivers.
People using nixpkgs for production don’t want to deal with having to constantly deal with changes in their underlying technology stack, and want to a way to have the latest non-breaking versions for security.
The other large group would be people who use NixOS for their daily driver and want their desktop experience to just “always work”. They are willing to give up having the “latest and greatest” version of a given package for not having to deal with a package being potentially broken.
How do we satisfy these target audiences?
- policies around what will get backported to prevent default versions being bumped
- release notes with upgrade instructions and incompatibility notices
- Upgrade pains are only experienced when switching release channels.
Daily Driver Users:
- Provide working desktop experience
- Provide a wealth of usable packages
- Mostly accomplished through development on unstable and ZHF
How do we fail to satisfy these targets?
- Since their use case is around minimizing version instability, I think we already do a reasonably good job in providing a good experience through the current back-porting conventions.
- In regards to releases, our current timeline lands awkwardly before release for both gnome and plasma. This means that version on the release branch is usually 4-6 months old, and likely to have some incompatibility with some packages.
- For example, many desktops now rely on dbus messages from systemd to determine what should be available to users. This has caused many regressions at runtime. (https://github.com/NixOS/nixpkgs/issues/98141). Thus, it’s imperative that we have a version of systemd that is compatible with major desktop managers.
- In regards to plasma specifically, it may have been faster to package 5.20 than try to remedy all the compatibility issues with 5.18.5 + systemd 246. It may have avoided some of the pain around qt+kdeApplications+plasma5 versions as well: https://github.com/NixOS/nixpkgs/issues/99951, https://github.com/NixOS/nixpkgs/issues/98141, https://github.com/NixOS/nixpkgs/issues/98834, https://github.com/NixOS/nixpkgs/issues/98536, https://github.com/NixOS/nixpkgs/issues/99260, https://github.com/NixOS/nixpkgs/pull/98657, https://github.com/NixOS/nixpkgs/issues/98885
Goal of discussion:
Propose solutions to avoid stabilization complexity. Possibly result in an RFC to change NixOS release schedule or procedures.