Subject: Re: GCD005: Regular and efficient releases

From: Steve George <[email-masked]>
Date: Sat, 10 May 2025 18:08:47 +0100

Hi Reza,

On 10 May, reza wrote:
> Hi Steve
> 
> Thanks for the effort you put into this, I just wanted to add my
> thoughts when reading it...
(...)

Appreciate you reading it and taking the time to send your thoughts!

(...)
> > ### 4. Toolchain and transition freeze
> > No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
> > (e.g. java).  There should be no changes that will cause major transitions.
> >
> > Debian defines a transition as one where a change in one package causes changes
> > in another, the most common being a library.  This isn't suitable for Guix since
> > any change in an input causes a change in another package.  Nonetheless, any
> > change that alters a significant number of packages should be carefully
> > considered and updates that cause other packages to break should be rejected.
> >
> > No alterations to the Guix daemon or modules are accepted after this point.
> > Packages and services in the 'minimal' package set should not be
> > altered.
> 
> Should this not be done on a separate release branch as soon as we start
> with the release? There seems to be no need to freeze master as soon as
> we branch off a release branch. Or did I understand something wrong?
(...)

It definitely _can_ be done that way, it wouldn't be my preference.

In my experience, if we want the whole group to focus on doing a great release then branching off as late as possible is the best option. The social signal is that "we're all focusing on creating a release now". As we know people have different motivations and priorities, if everyone isn't focused on the release, then there's a tendancy for people to keep hacking (introducing lots of changes etc) and that can make creating a release very difficult as new instability is brought into the archive.

We kind of had a version of this a few months ago when Ludo asked for volunteers to work on doing a release 

From a technical perspective, the later that we branch off from master the better since that limits the divergence between what's in the release and what package versions the user gets when they do a 'guix pull'. It's also, I think, quite difficult managing multiple branches, so I would limit the over-head as much as possible.

That all said, it's definitely possible to branch earlier and then do everything that way. In a way that's the "Debian" approach of having a "testing" branch and then moving it towards a release. So if the group wanted to try that approach ...

(...)
> I am missing the automation aspect a little in this GCD. As I understand
> the release take so long because there is a lot of manual effort
> involved in doing one. I think it is worthwhile to also work towards
> more automation in preparing a release and testing it. I have by no
> means a lot of insight into doing a release but my impression is that
> automation could drastically improve the time to relase.
(...)

The main piece of automation that limits our ability to do a release is to do with the architectures and `make dist`. See this thread from February:

https://lists.gnu.org/archive/html/guix-devel/2025-02/msg00184.html

The commercial distro's do have a lot of release automation that goes beyond the common tools (e.g. CA/QA/Bugtracker). At least when I was involved we had a lot of automation for automating package updates, complex hardware testing, installation testing, and various forms of upgrade testing. This short section from OpenSUSE's 'Factory development model' might give you some ideas:

https://en.opensuse.org/openSUSE:Factory_development_model#Development_Process_Overview

But, please note that the the core work of creating a release - packaging, testing packages install/work, integration between packages (services in Guix), testing the release and solving bugs - is mostly developer effort (even for RedHat or Canonical).

I personally, think we should focus on the foundations of our developer experience first and automate in that area.  Things like QA, visibility into package build/regressions, automated updates of packages. We have some of these things, and the Codeberg migration may help us improve in other areas. Here's a great example from Gentoo (similar type of volunteer distribution to Guix) of tying everything together in a clear way:

https://packages.gentoo.org/packages/mail-client/neomutt

It's true then that this GCD does not suggest any automation. It's trying to move forward through organisational (project plan) and some technical (reducing work through package sets/supported architectures).  I would love to see the project improve developer tooling - it's important - but not specific to releases. For example, I would love to see automated update testing [0] where some of the base work has already been done.

Do you have any particular areas where you think "automation" would improve releases? And/or (outside of the GCD) do you see the value of improving our developer tooling?

Steve / Futurile

[0 https://lists.gnu.org/archive/html/guix-devel/2024-12/msg00011.html