Subject: [bug#76407] [GCD] A better name for the default branch

From: Liliana Marie Prikler <[email-masked]>
Date: Sun, 23 Feb 2025 16:48:17 +0100

Hi Ludo’,

Am Sonntag, dem 23.02.2025 um 15:42 +0100 schrieb Ludovic Courtès:
> Hi Liliana,
> 
> Liliana Marie Prikler <[email-masked]> skribis:
> 
> > +For Guix itself, we would decide on a **flag day** 14 days after
> > +acceptance of this GCD at the earliest, and 30 days at the latest.
> > +On that day, the main development branch would become "main".
> > +A commit would reflect that by updating:
> > +
> > +  1. the `branch` field in `.guix-channel`;
> > +  2. the `branch` field of `%default-guix-channel` in `(guix
> > channels)`;
> > +  3. any other reference to the "master" branch of the Guix
> > repository
> > +     that may appear in the repository (in particular the Manual
> > Updates
> > +     above).
> 
> Consider this scenario: I have a machine that I upgrade once every
> two months.  By the time the switchover is done, my machine still has
> ‘master’ in its ‘%default-guix-channel’ in its Guix.  Thus, when I
> run ‘guix pull’, I’ll end up pulling ‘master’, which (the GCD does
> not clarify this) will either fail because the branch has been
> removed altogether, or will give me an old snapshot.
Actually, the GCD does specify this:

> Even after the `master` branch no longer syncs up to main, it may be
> important to still have it pointing at some commit.  Old installation
> media, handcrafted `channels.scm`, external documentation and scripts
> may all still be referring to the `master` branch even long after the
> rename (see also Cost of Reverting below).  To ensure that these do
> not fail immediately, the old branch shall not be deleted until
> 
> 1. at least one year has passed since this GCD has been accepted, AND
> 2. enough Guix releases have been made in the meantime, meaning
>    a. at least one major release, OR
>    b. at least three minor releases.

> Thus, I think the GCD should propose to keep updating the ‘master’
> branch as a mirror of ‘main’ for, say, a year (a cron job can take
> care of that).
Fair enough.  Keeping it updated for one year and then phasing it out
should give folks more time to adopt.

> Also, instead of changing the ‘branch’ field, I would suggest
> adopting and finalizing <https://issues.guix.gnu.org/49252> and
> leaving ‘branch’ unset so that the server-side default branch is
> taken.
SGTM.

> > +## Choice of branch name
> 
> I’m not convinced this section is necessary.  :-)
How do we achieve consensus on the proposed name itself, then?

> > +The repository update path in this GCD is only valid as long as it
> > is
> > +simultaneously upheld by other, similar GCDs.  Again GCD 002
> > ‘Migrating
> > +repositories, issues, and patches to Codeberg’ needs to be
> > considered as
> > +a possibly simultaneous change.
> 
> I don’t think this has to be simultaneous: both changes bring the
> potential for breakage if we’re not careful enough, but it’s probably
> best to deal with a single class of breakage at a time.
Perhaps I am missing something crucial here, but IIUC most breakages
would result from the same record; with just one field between them. 
Since most configuration ends up being "fire and forget", reducing the
number of times they need to be edited sounds like a benefit to me.

> Also, perhaps clarify that this GCD is valid whether or not GCD 002
> is adopted.
Sure.

Cheers