Subject: Re: GCD005: Regular and efficient releases

From: Greg Hogan <[email-masked]>
Date: Mon, 12 May 2025 11:34:44 -0400

On Fri, May 9, 2025 at 5:55 PM Steve George <[email-masked]> wrote:
>
> I hope the initial user experience wouldn't be to "break on the user's first pull", since with annual releases we wouldn't have release artefacts that are 2.5 years out of date. And, we'd also degraft regularly which would be beneficial for all users.
>
> As you can tell I would _love_ us to be able to have a slower moving branch, but purposefully have kept the GCD more limited. For now focusing on the step forward of regular releases.

I have not updated a 2.5+ year old Guix system, but what is the issue
here? How is this any different from updating a week old system? If
the archive contains broken packages then the user upgrade experience
will fail just the same. And clearing the archive of broken packages
also breaks user manifests!

> > 2) The project is currently unable to keep up with the teams workflow,
> > and now we are introducing an additional, quite long pause into the
> > calendar.

> I agree this is a problem, for the purposes of focusing discussion on this GCD let's keep it out of the remit. Perhaps a separate discussion or separate GCD!

Performance of the teams workflow is integral to this proposal. We can
barely get a handful of teams processed in a month, and now we propose
allowing all teams a go within a four week window. And it seems to me
the biggest issue with the teams workflow is the indeterminate nature
of moving to the head of the queue. This proposal synchronizes many
activities to an annual process for which the volunteer developers may
likewise not be available.

    ### 2. Notify teams of upcoming release
    Make sure all teams are aware of the upcoming release.  This gives
them 4 weeks
    to undertake any large transitions or major changes.

> > 3) Package cleanup is a problem that I believe we are afraid to
> > address. I agree that we should not have package "ownership", but
> > perhaps "sponsorship" or (to borrow from this GCD) "advocate" with
> > notifications when builds break on CI. I believe this proposal is too
> > aggressive in pruning packages without considering alternatives (in
> > another GCD).
>
> Can you point me to the part where you think it's too aggressive? Maybe it's overstating it in some way. In my mind I think the release is a checkpoint where we can use the package sets and the project plan focus to do what we should be doing using our existing process.

The removal of any broken package:

    Packages or services that do not build for the Primary
architectures as part of a release
    would be removed from the archive using Guix's deprecation policy.

> > I think we should greatly reduce the scope and initially try (as I
> > noted in December buried in the "On the quest for a new release model"
> > discussion) creating a release team which would:
> > 1) operate as any other team
> > 2) be responsible only for building and improving release artifacts
> > 3) operate with a cadence sufficient to build and retain this
> > expertise (which would currently be one cycle of the queue, but
> > ideally every ~3-4 months)
> >
> > By using the teams queue everyone will know when the release is
> > coming, and whether their branch will be merged before or after the
> > next release.
>
> In a way this does create a team in the way you brought up in December [0]. It creates a "release team" for one project and tries to limit the "toil" by keeping the project to 3-4 months of effort. It defines a specific time when a release will happen so everyone knows when it's happening, can get involved and help.
>
> Where it differs is that realistically the release artifacts involve the kernel, core packages, networking, base utils, guix daemon, and graphical environments [1]. I don't think this can be done by 3-4 volunteers, there has to be some co-ordination and energy from all teams - we are a small team after all!

Yes, those teams are involved if packages or the release scripts are
broken? I'm with Ekaitz on this one, the process to build the release
artifacts should be automated. We already do this for the binary,
which is why I have not had to install a 2.5+ year old system :)

I see Andreas' response that we need a big release hullabaloo to rally
around since tidying up and testing the release is "probably not much
fun". But this process simply codifies the pre-teams workflow that did
not work. And while I certainly welcome this discussion, I don't see
this as a whole qualifying as a GCD (from 001: "A change may be deemed
*significant* when it could only be reverted at a high cost or, for
technical changes, when it has the potential to disrupt user scripts
and programs or user workflows").

This proposal simply takes the processes which are performing poorly
and stuffs them into a very manual annual release process. Ungrafting
can and should be coordinated on feature branches. We need better
methods to identify, track, and notify users of their broken packages.
The teams workflow needs to be clarified (QA vs CI) and coordinated
(thanks, Andreas!) and possibly preemptive.

We tested codeberg before the GCD to switch over. We should likewise
test this release schedule before codifying in a GCD.

Greg