Subject: Re: [bug#78332] GCD005: Regular and efficient releases

From: Steve George <[email-masked]>
Date: Thu, 22 May 2025 11:01:38 +0100

On 19 May, Jelle Licht wrote:
(...) 
> Steve George <[email-masked]> writes:
(...) 
> >[snip]
> > Many desktop distributions release every six months to align with the major
> > desktop environments (GNOME/KDE) who release two or three times a year. This is
> > why Nix (May/November) and Ubuntu (April/October) align their releases.
> 
> I think that this is a good point to make, but at the same time we may
> not want to have other projects to direct our release cadence. Not
> because we don't want to play along, but rather because it causes undue
> stress and adds arbitrary deadlines that are hard to work around
> w.r.t. our current volunteer group of contributors.
> 
> > Since Guix is used [extensively as a desktop] (https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> > it would make sense to align with these upstream releases.  However, given that
> > Guix is a volunteer project that doesn't have the practise of releasing it's
> > unrealistic to move to two releases a year. Something along these lines could
> > be a future goal [^5].
> >
> > This GCD proposes an annual release cycle, with releases **in May**.
> >
> > To move onto this cycle the first release would be a little later: aiming for
> > the **November of 2025**, with a short cycle to release in May 2026.
(...)

I think you're pointing right to the heart of this proposal, and the main thing we should think about! 

I'm trying to create an intent, a rallying-cry, an impetus for the project's active contributors to attempt and prioritise doing annual releases.  I believe it will help our existing users, potential new users and the project itself, for the reasons I set out in the Motivation section.

But, as you point out we are a volunteer project - maybe "we" don't want to work on releases; find it stressful; or don't have enough participants. I have tried to reflect this at various points, and in the 'Cost of Reverting'. At an individual level none of our contributors _have_ to work on a release, they can continue to work in their team-branches.

So yeah, I agree everyone should think about whether they want to try out annual releases. I also think that the only way to find out if it's positive (a goal) or negative (stressful) is to try it out. If it doesn't work for everyone we simply return back to releasing when we want to.

(...)
> > ## Package Sets
> >
> > There are currently over 30,000 packages in the archive, it's unrealistic for
> > all packages to receive the same amount of QA effort for a release.
> >
> > Many other distributions focus attention on the critical parts of their
> > repository by identifying those packages that are required for a particular
> > user-case.  For example, Arch Linux limits their efforts to a specific
> > repository (called "main").  Ubuntu identifies various seeds for specific
> > use-cases which determines their maintained packages; other packages outside
> > these sets do not receive security updates.
> >
> > Guix is both a package manager that can be hosted on other Linux distributions,
> > and a Linux distribution.  Limiting the range of packages that receive attention
> > is consequently more complicated. Guix already has manifests to track which
> > packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> > , so this proposal extends that concept.
> >
> > For this proposal Guix would identify key package sets which would receive the
> > most attention for QA'ing a release.
> >
> > The package sets would be:
> >
> > * minimal: packages required to boot and install a minimal Guix or Guix System
> > install.  This would include the guix daemon, kernels, boot loaders,
> > file-systems and minimal utilities.
> > * standard: packages that create a core installation for all other uses.
> > * desktop: provides the packages necessary for a desktop.  This would include
> > things like X11/Wayland, desktop environments, key applications and themes.
> > * server: provides packages and services for a server.  This would include
> > standard server packages and services.
> > * hosted: provides packages and services which are necessary in hosted usage.
> 
> My two cents: focus only on minimal, perhaps extended in such a way that
> this is a system that after the first reboot allows one to run guix
> pull.
> 
> Ditto for 'foreign-guix': any version of guix that doesn't burn down the
> house on updating itself seems like it would be 'enough', and still a
> strict improvement over the current situation.
(...)

Yeah, both you and Efraim suggested this, I removed server/hosted from the list in the latest version. I've also focused it on the minimal experience.

I tried not to get too far into the weeds with "release criteria" definitions or similar.

(...)
> > Guix would still make all packages and services part of a release (the entire
> > archive), but only those in the `package sets` could block a release due to a
> > significant bug.  The goal would be for this to be as small a set of packages
> > as reasonably possible.  It would mean that developers could focus on the
> > critical packages and services during a release.  As an example, this would
> > mean that a major issue in the Linux kernel could block a release, but not an
> > issue in a game.
> 
> This makes a lot of sense to me, although I could be centered around
> 'functional' breakage w.r.t. allowing the installation to update itself
> past any major issues via guix pull (+ guix system reconfigure or
> equivalent).
> 
> > [snip]
> 
> Thanks again for the detailed analysis and proposal,

To reflect your comment and some others I've reworded a bit throughout to try and express the focus on the initial install and initial experience: what _has_ to work for someone to install Guix and it not break. There could be more detail but I'm trying to resist the GCD becoming even longer. Also, I think the GCD should be about the main "design" and the implementers (each release team) have the flexibility to make specific decisions.

Thanks for going through it - appreciate it - and hope the later version reflects your comments above!

Steve / Futurile