Hello,

As this effort is primarily driven by social factors, I would like to remind 
folks of the social events surrounding the original shift from master to other 
primary branch names (usually main). This effort originated at Microsoft's 
GitHub, with the expressed effort to be more inclusive with their terminology. 
However, this occurred just several months after they were being heavily 
scrutinized for their ICE contract renewal. The shift away from master appeared 
to be an obvious PR stunt to me with the intent of deflecting attention away 
from the ICE contract situation, rather than a case of people truly being 
offended by the usage of the term "master copy".

Perhaps continuing to use "master" rather than supporting the PR efforts of 
Microsoft would actually be the more socially just path forward. I am 
absolutely open to learning otherwise, and I hope that if we do switch, I was 
actually wrong in my understanding. It's hard for me to look at the timeline of 
events and see things otherwise though.

Sincerely, 
Robby

On February 15, 2025 3:42:33 AM EST, Liliana Marie Prikler 
<liliana.prik...@gmail.com> wrote:
>title: Rename "main" branch
>id: 003
>status: draft
>discussion: https://issues.guix.gnu.org/<number assigned by issue tracker>
>authors: Liliana Marie Prikler
>sponsors:
>date: <date when the discussion period starts>
>SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-only
>---
>
># Summary
>
>Currently, much of Guix's development takes place on the ���master��� branch.
>This name is neither particularly meaningful nor inclusive; choosing to
>use it may inadvertently alienate potential contributors.  To mitigate
>these effects, we should more clearly communicate, what the ���main��� branch
>is all about.
>
># Motivation
>
>It is well known, that Git works with whatever branch name one chooses.
>However, for historical reasons, the default/initial/main branch for
>development used to be ���master��� ��� particularly in 2012, when the first
>commit to Guix was made.
>
>Recent versions of Git support arbitrary initial branches and the default
>branch name is subject to change upstream, at least in part because the
>current default ��� ���master��� ��� may be perceived as harmful.  In the 
>meantime,
>Guix adopted a Contributor Covenant, pledging to interact in ways that
>contribute to an open, welcoming, diverse, inclusive and healthy community.
>Hence, as a proactive step, we should choose a default branch that reflects
>the vision the Guix project has for the kind of development that takes place
>on this branch.
>
># Detailed Design
>
>This section explains the chosen solution among the available options,
>the scope of the proposed migration, and a migration path.
>
>## Choice of branch name
>
>Several options exist, such as ���main���, ���trunk���, ���base���, 
>���development���,
>���stable���, ���unstable��� and the currently-used ���master���.  The 
>important part
>is that Guix contributors, as a whole, should be able to agree on one such
>name and feel comfortable with it.  The name ���master��� does not fulfil this
>requirement.
>
>The names ���main���, ���trunk��� and ���base��� are comparatively neutral 
>options.
>- ���main��� is a little more abstract and signifies that the branch is the
>   most important one,
>- ���trunk��� and ���base��� serve as a visual metaphor to signify that a large
>  chunk of development takes place there.
>
>���stable��� and ���unstable��� may be chosen if a decision is made that 
>certain
>stability guarantees are to be upheld on particular branches.  These require
>greater changes to our branching strategy and are thus outside the scope
>of this GCD.
>
>Finally, ���development��� is a loose qualifier stating that development takes
>place.  As development happens also e.g. on team branches, this name may not
>be that fitting.
>
>We choose ���main��� simply because it is currently the explicit initial branch
>for a git checkout as per `git-fetch` in `(guix build git)`.  Another name
>could be chosen by any means that support achieving a consensus, e.g. comments
>on this GCD or a popular vote.
>
>## Manual Updates
>
>Sections 19 (Security Updates) and 22 (Contributing) would need to be reworded
>to reflect the new main branch.  Other sections mentioning ���master��� 
>branches
>may be reworded at any time regardless of this GCD.  Some mentions of the word
>���master��� are tied to particular services and thus subject to rewording only
>once upstream adopts a different terminology.
>
>## 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 main 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.
>
>## Continuous Integration
>
>The jobset for the `master` branch would be removed and a jobset for the
>`main` branch with the highest priority and the same set of architectures
>would be created.
>
>## Timing in Accordance with other Guix Consensus Documents
>
>Since this change has the potential to affect users and contributors in
>ways that will disrupt their workflow for some amount of time as they
>reconfigure their local checkouts to point at the new branch, it should
>best be adopted as the same time as other, similar changes.  In particular,
>an adoption at the same time as GCD 002 ���Migrating repositories, issues,
>and patches to Codeberg��� is desirable.
>
>## Cost of Reverting
>
>This change mostly affects contributors, who would have to run the following
>command once to pull from (and in the case of committers push to) the new
>main branch:
>
>  $ git branch --set-upstream-to <origin>/main
>
>Users of the `guix` CLI would be advised to run `guix pull` again to fetch
>the latest commit from the main branch.  Users of old installation media
>(e.g. disk images for version 1.4.0) would continue to use the "master" branch
>and the default channel URL of said installation media until they run
>`guix pull`.  A new release may mitigate this annoyance somewhat.
>
>The main branch may be renamed to any other name (including "master") by
>repeating the steps laid out in the Repository Update Path and
>Continuous Integration above, using <name> instead of "main".
>
># Drawbacks and Open Issues
>
>There is an ongoing political debate as to whether the name ���master���,
>standing alone, should be considered harmful.  Similar debates may
>well surround other names given enough time and particular circumstances.
>
>It is unclear, what effect, if any, the name of the main branch has to
>contributor satisfaction.  The choice of a name may well appear similar
>to choosing the colour of a bikeshed.  What constitutes a meaningful
>branch name will inevitably be a matter of opinion.
>

Reply via email to