From patchwork Tue Feb 18 22:14:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Liliana Marie Prikler X-Patchwork-Id: 38836 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id CACFB27BBEA; Tue, 18 Feb 2025 22:24:38 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-5.6 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,MAILING_LIST_MULTI, PP_MIME_FAKE_ASCII_TEXT,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 43DBF27BBE2 for ; Tue, 18 Feb 2025 22:24:37 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tkW0b-00033E-UR; Tue, 18 Feb 2025 17:24:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tkW0Z-00032m-HF; Tue, 18 Feb 2025 17:24:03 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tkW0Z-0001oi-8W; Tue, 18 Feb 2025 17:24:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:From:To:In-Reply-To:References:Subject; bh=ZaeYlgY2s5TuLkWCzuY9MFac7MrS2eaafx227e8ABsY=; b=NZA1YetKdC47vjOqxQtCBOYB9batZBW4m0gFC6/3ifq6B87Eird9UrT9vSmLt8n/AbBQqVAjwIxvgUPBXgmjnMuAjbeL+kX0UJW112LYvS9RVKaSxDJQ/LbQcLWr5nDnHbn64wKeLdtwTHwxYB0sCYgGEuOBbCRQ7qqkSN8UYYYEklQWClbUTx6vsaJ0KYKP4Aszv+Nf78dgYfSO0FDvQX/vgdSRG6+pYZBJW4e9rSheb9KPQ0BmNzJNLkmhV7N/D9IuI36zITew3N9qBoW42Sd20HTyx3uYAg2OVhs16CIma9Yzmv4ID5AMAF6Lq9gzeZeUBwgW0+MCp1OmE1GdfA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tkW0Y-0007de-Kn; Tue, 18 Feb 2025 17:24:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#76407] [GCD] A better name for the default branch References: In-Reply-To: Resent-From: Liliana Marie Prikler Original-Sender: "Debbugs-submit" Resent-CC: info-guix@gnu.org, guix-patches@gnu.org Resent-Date: Tue, 18 Feb 2025 22:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 76407 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 76407@debbugs.gnu.org Cc: info-guix@gnu.org X-Debbugs-Original-Xcc: info-guix@gnu.org Received: via spool by 76407-submit@debbugs.gnu.org id=B76407.173991741529232 (code B ref 76407); Tue, 18 Feb 2025 22:24:02 +0000 Received: (at 76407) by debbugs.gnu.org; 18 Feb 2025 22:23:35 +0000 Received: from localhost ([127.0.0.1]:35278 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tkW06-0007bN-FI for submit@debbugs.gnu.org; Tue, 18 Feb 2025 17:23:35 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:51488) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tkW02-0007ab-TD for 76407@debbugs.gnu.org; Tue, 18 Feb 2025 17:23:32 -0500 Received: by mail-wr1-x441.google.com with SMTP id ffacd0b85a97d-388cae9eb9fso3129468f8f.3 for <76407@debbugs.gnu.org>; Tue, 18 Feb 2025 14:23:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739917405; x=1740522205; darn=debbugs.gnu.org; h=mime-version:message-id:to:subject:date:from:from:to:cc:subject :date:message-id:reply-to; bh=ZaeYlgY2s5TuLkWCzuY9MFac7MrS2eaafx227e8ABsY=; b=CAEM4kV2NxKbxFTi53yo4vgPLTsd5nA0d/VplpAe4qAoHmTyrSPh+DNdcmeoNHH8Wp bjxVSZ4C9OpsJaC9RanOTWrhv6MZzRP+qwfL4VrjfjxjeAc6t5gCQh8UtchZypkjj1vn uZsE9jeNTKAur3ShbzVnEhToPPwyafURq/oY3bPUpa2sGSWIOCvz8Em0xtmwiqKS2F0L 90GxN0AJuBGm699u5l3aHqjhybfjIJJjxg7GcztOWdUA4FXYD5+ClAiZ2Rw85wq+6jG7 vncI5TutIMUOZfuwzhvbvYEusSWp/YHxfikBgDLjXicWPycBBZ6lX6YLdpBN1YlH9pJD HloQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739917405; x=1740522205; h=mime-version:message-id:to:subject:date:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZaeYlgY2s5TuLkWCzuY9MFac7MrS2eaafx227e8ABsY=; b=DqU7vTA06/tPGwJbs9eY/RXTr+yNokzyth8j08no8sVhMAqI/MUObdkEqecsfdZN4x 15+I34GYDINhpplQefR9MpzKrGSaT2gIDTQly5pmPhPX4F+2SYXlHTW4a9aWfU8ulhV1 ZwC//20tPL9dKj6cKyXtAxgs65IP/xtc4z9nTTTF9j69+U5coTVIWTTCKlH7jnsFXk00 TjpQb3m8yitOcsHiqK6y3hmjulgdxWhhI1BQWcEI39HrWtPrxbZ8TAVtvOdHVm8um/lf Ngeyf7dpC166IoFIfg9kh/k7gpRrGeorjhvDuWvlNhxEnn3UYUb1M+fY8ndEwuW/Kg8O HdsA== X-Gm-Message-State: AOJu0YxSSxzWv4uVXEapIuivkJJUB/mSUDInFdZSDGj/1ciJd4969YgU b93nLNxq13hPbN/b7ekeOGAr/2jkdfRiC8/+Zw/FEplQAP+OR6HFlseY2uYq X-Gm-Gg: ASbGncs+JJzAsX222TYk6puxv5ie10p7h1FkDE98Jt5/P4BFnE92x4SSUU+5O+mEwo7 AIRw8J0zGMzNRTHT6Vezlut9+x0MRGVrRop1E6sOUuriJj8xWzqYEh7DQFVmIEHcQU50/XSzZhc Udzi9ydNYs722Fgf/80+VRcDGyiexFMZyMWFZLUyTThgzoF39MGdpg0y9OVyVk3e/jdglbbCLro OLCVWcUExZzKK3avungORcTWRuB31SINKJAE9U9iykk9bB2U9D6WAGJGO/TE2CPUZuGw39HlGrH YoXS28VmORSj/sK1/sQtOAwcBs1bg7VOWsIEJZlDIB2XPeOUjS2YfRg13VYCMOofeyE= X-Google-Smtp-Source: AGHT+IGL0wh4DWKHDgJWXwK4FJFzdmvHpu0TNgrLN2sOLiiF4N2pbHvzpLqSWhzXAUyFZhi8uqEgHg== X-Received: by 2002:a5d:64ed:0:b0:38f:2a84:7542 with SMTP id ffacd0b85a97d-38f33f5234emr13424869f8f.28.1739917404376; Tue, 18 Feb 2025 14:23:24 -0800 (PST) Received: from lumine.fritz.box (85-127-114-32.dsl.dynamic.surfer.at. [85.127.114.32]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f258b4491sm15813347f8f.7.2025.02.18.14.23.22 for <76407@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 14:23:23 -0800 (PST) From: Liliana Marie Prikler Date: Tue, 18 Feb 2025 23:14:29 +0100 Message-ID: <79bad06a6410932dd6c7785256fd589cfaff40f6.camel@gmail.com> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches Hi Guix, this patch introduces GCD 003 “A better name for the default branch”. I've taken the comments on guix-devel into account (most of them anyway) and updated the document accordingly. Note that references to GCD 002 are made. That GCD was drafted earlier, but may or may not already be submitted by the time you read this. Do be patient :) Cheers --- 003-better-default-branch-name.md | 187 ++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 003-better-default-branch-name.md diff --git a/003-better-default-branch-name.md b/003-better-default-branch-name.md new file mode 100644 index 0000000..95952a5 --- /dev/null +++ b/003-better-default-branch-name.md @@ -0,0 +1,187 @@ +title: A better name for the default branch +id: 003 +status: submitted +discussion: https://issues.guix.gnu.org/76407 +authors: Liliana Marie Prikler +sponsors: Simon Tournier, Ian Eure, Vagrant Cascadian, Ludovic Courtès +date: 2025-02-18 +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 +default 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. +While the intended meaning is something close to “an original, from +which copies are made”, there are several other meanings of the word +that spring to mind more easily, some of have a racist or sexist +connotation. + +One goal of the Guix community is to foster a healthy community around +the software we use. Using clear language that does not pertain to +harmful stereotypes is a key towards achieving this goal. Thus, as a +proactive step, we should rename the default branch. + +# Detailed Design + +This section explains the chosen solution among the available options, +the scope of the proposed migration, and a migration path. + +## Scope of this document + +This document discusses only to change the name of the default branch, +not to change the branching strategy. Such ideas, e.g. to have a +“stable” branch containing only bug-fixes and well-tested features +and an “unstable” or “experimental” branch would need to be discussed +in a separate document. + +## Choice of branch name + +In this section, we discuss potential branch names that have been +considered. The goal is to find a name that Guix contributors, as a +whole, feel comfortable with. + +While this GCD is still being reviewed, new suggestions may be added, +and benefits and drawbacks for each name discussed. Once this GCD is +accepted, these benefits and drawbacks shall be shortly summarized, +and a final decision with a short justification as the one at the end +of this section shall be the last paragraph of this section. + +- The currently used “master” has more than ten different meanings, + some of them pertaining to slavery, others to dominance, and yet + others merely to skill and expertise. It is understandable that some + contributors would feel uncomfortable with this name, given that not + all uses are equally frequent. + +- The currently proposed alternative “main” has several meanings + relating to “importance”, the most obvious being “most important”. + +- Other alternatives would be “trunk” as a visual metaphor from + which “branches” spawn, and “base” with the same meaning. + +- “guix” being the name of the project also serves as an option, + albeit one that is not clearly defined (are the other branches + not guix as well?) + +- Similar to “guix”, “development” merely signifies that some sort + of development happens on the branch; a fact that should hold for + most, if not all branches. + +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) of the Guix manual +would need to be reworded to reflect the new default 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 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. + +## 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. + +## Relation to 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. + +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. For the sake of clarity, the promises +made in the repository update path w.r.t. the availability of the old +branch shall not exceed those of any other accepted GCD and instead +be updated to match. + +## 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 /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 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. More generally, as language continues to evolve, +meanings that appear obvious today may no longer remain so in the +future. + +It is unclear, what effect, if any, the name of the default 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.