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

From: Simon Tournier <[email-masked]>
Date: Fri, 21 Feb 2025 19:16:33 +0100

Hi,

On Tue, 18 Feb 2025 at 23:14, Liliana Marie Prikler <[email-masked]> wrote:

> +## Repository Update Path
> +
> +For a complete list of repositories associated with the Guix project,
> +see GCD 002 ‘Migrating repositories, issues, and patches to Codeberg’.
> +Most repositories can rename their default branch with no issue
> +(see also Cost of Reverting below).
> +
> +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).
> +
> +Following this commit, an entry in `etc/news.scm` would explain the
> +migration.  The `master` branch would then point at the commit of said
> +news entry, and would need to be updated only after said news are
> +translated into another language.  The `master` branch may keep following
> +the `main` branch for a grace period of 30 days anyways.
> +
> +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.

My current profile is:

        $ guix describe
        Generation 8	Sep 09 2024 15:14:29	(current)
          guix 056910e
            repository URL: https://git.savannah.gnu.org/git/guix.git
            commit: 056910ec864cb7cf3225a0c27679d94405db7dcd

And many people upgrade guix-daemon less than once a year. :-)

My point is: I’m not sure that a grace period of 30 days will be enough
considering the time to spread the word.  But, hey we need to bound
somewhere. :-)

Therefore, maybe we could imagine that the last commit pushed master
introduce a double pull.

Assume I still run this 056910e and we are after the grace period.  I
run “guix pull” so it fetch the last commit of master.  Now, when I run
again “guix pull”, I will get the last commit of main.  This second pull
could be transparent for me.

In other words, I still run this 056910e and we are after the grace
period, then when running “guix pull”, I automatically get the latest
up-to-date commit of main.  Obviously, I pay the unavoidable price of a
first pull but under the hood pull.

This might avoid: Oops why don’t I get the last?  Because you’re after
the grace period. :-)

I don’t know if my suggestion is worth.

Cheers,
simon