From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id uKqlKWtigGfi/wAAe85BDQ:P1 (envelope-from ) for ; Thu, 09 Jan 2025 23:57:31 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id uKqlKWtigGfi/wAAe85BDQ (envelope-from ) for ; Fri, 10 Jan 2025 00:57:31 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=pPXrfSYq; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20230601 header.b=S5nG1tI8; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1736467051; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=rbRj0cz9IfoNCwoM+/ndSulfc23EUvkmGHmJihWWA1o=; b=o6RiWWyI1xblB4IwXfSyCkCZ0Z4M+OXJ/y2VTvZyvHWZWK/zmS+OyhWGGYv0PgdQDtkl9s 31FTxoPn3qrhmZaU/2eAmqu8966IFeWLufEmxxptTBe9ArKKVmiefhD2LvlIJgIVP3gXU+ KpYPGBzyTrwhFupVh3Gkejc1B1Kb+54TeV1sGXNZE399iIHttt+n+HxAAaAQ3gDRR+8ZIZ Fc6zYnb2CaD9fxg/70SKBcg9AUjL1oTiY+sZMODQBCIR60c4S/Tx9wFlFUUiHgXIUwSqOJ R/X/rgiMIddNWx+2mEDGRrDYFlFORTWeupwaE674ze5asgdqXk/9o2wjweNNYQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=pPXrfSYq; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20230601 header.b=S5nG1tI8; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none) ARC-Seal: i=1; s=key1; d=yhetil.org; t=1736467051; a=rsa-sha256; cv=none; b=ur94UmojVbhVTAT2zFMmRIV9alQA8g25ouN6PnUN0HdCE3V96JrK4Hs/sWhxcDeht7HwPT KsLmnMt1AEWKt2iA9Dp/RlwqlEeM88HVexF4cWvqV0DO1bCCG/5mTYq1EXIlIPvwG5gKUL KU//L3S4/Kw+dm6uhWbvJGYcvkcnvFVxW6rYU5btHuI5+ySvs8eGDCOeKBCMUsEgG9IoCN xxiceLJ3HJb7jWw7PJwy3paRzMVerXEFoeFrJ3KvkyBaTKtCvd2opNgaFYSexVj2H5AmlB 9Vp1fXPMF7qEoTQDoe/29X7paz6tg/a7eFhcEM6zWFCKxE1aGqhOmh3i3BwkeA== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id E8A4B5952F for ; Fri, 10 Jan 2025 00:57:30 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tW2Oh-0007Zy-2H; Thu, 09 Jan 2025 18:57:07 -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 1tW2Od-0007Yq-LG for guix-patches@gnu.org; Thu, 09 Jan 2025 18:57: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 1tW2Od-0007rf-Ck for guix-patches@gnu.org; Thu, 09 Jan 2025 18:57: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:References:In-Reply-To:From:To:Subject; bh=rbRj0cz9IfoNCwoM+/ndSulfc23EUvkmGHmJihWWA1o=; b=pPXrfSYqhm2xdbxIWUW6QjCItuFR6Hrv/px5q5tR5LHmJUXYpcHc573GdTzg+laFhcLUTeOVR817KTTZKBCiyYCxenCLNwPACwMjiZBx3An1JD5AhXrAEgc+yXGLk/4Irqr625iKS55/n4UdMzyn8bw/9btTqwXpBfRjt8371ERLn7E9yTFoVj0RdTR3Df80TDJylnHrSb8Q1zLoM9w8RqxCj7bezG9sq+XqsB3R5EhQGDQMUa/TaYklVFKpvq/8Aeh5uOGGuVQsOFQBBiGaDgzmL4ViBG1P0P4mfF9hko5qeF7tAkMbXHNU6hk6kaofVI/mTj7D19k1aYxKMyrTFA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tW2Od-0006Dp-8U for guix-patches@gnu.org; Thu, 09 Jan 2025 18:57:03 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#74736] [PATCH v7] Add Guix Common Document process. Resent-From: Simon Tournier Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 09 Jan 2025 23:57:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74736 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: =?UTF-8?Q?No=C3=A9?= Lopez , 74736@debbugs.gnu.org Cc: =?UTF-8?Q?No=C3=A9?= Lopez , Ludovic =?UTF-8?Q?Court=C3=A8s?= , Christopher Baines Received: via spool by 74736-submit@debbugs.gnu.org id=B74736.173646701523879 (code B ref 74736); Thu, 09 Jan 2025 23:57:03 +0000 Received: (at 74736) by debbugs.gnu.org; 9 Jan 2025 23:56:55 +0000 Received: from localhost ([127.0.0.1]:55415 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tW2OU-0006D3-DB for submit@debbugs.gnu.org; Thu, 09 Jan 2025 18:56:55 -0500 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:47185) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tW2OM-0006Bs-4A for 74736@debbugs.gnu.org; Thu, 09 Jan 2025 18:56:47 -0500 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-4361fe642ddso16211595e9.2 for <74736@debbugs.gnu.org>; Thu, 09 Jan 2025 15:56:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736467000; x=1737071800; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=rbRj0cz9IfoNCwoM+/ndSulfc23EUvkmGHmJihWWA1o=; b=S5nG1tI8pnOioQJtYNLF0f2xSD5w5E+Fbh7/9JJvqQX+pBkTdkx5ym9yP1qb4Fgex+ PJH0cAbaLpL2+HFdrqJBqxqfXuMukcpF3q8HLejuRXdwvwXCMunGHHz1yil84YMApRyG WRN66M1epb4tRZ6YayOBOOeNchUC/fkr9YsR6GIE6mgtXD3UrxPU74Ml2cyBzNMseNMd tTkN9lJBvbp7R8dizcLplay9HNKrUXFzQVeT/ukw7muuEkLSQ1een/5Na/TlncN9rgEt /iyILoX9f80dVCD/dYPJrTr2MKabN0OWzuMxXs7pljgOkHUQ9Mm3o1tJ9vCKKjz93dRn 9Pdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736467000; x=1737071800; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=rbRj0cz9IfoNCwoM+/ndSulfc23EUvkmGHmJihWWA1o=; b=sd7gSlSsXCzkg5vG2ElCmfU+0CaowPu92/Ytepqj+TrSsHKLT6ApDLf52GjOLRmQ1V Xf6pn+MV7QTXE9qy8YeekYn84l8BPj0foZ6GHFZomNMwoxf2i8uvo47coGkjr3XZ9t2T vcvzPXe0CjqB7MoAdwecvV1B2d4teHMW4Zryzx4jXM7/ufFDufcjHKCKbRddRIOzlz5u ptvM134SxlLMzQfHwzGQou7EZUoiuJcRXGJ98C0Tlv1h3DV1EBJL/9DB8N4gzksWaUQE MfyiWBNRAv3HdFzKlczZ9rZxFZzIYVaZu58lP/VIdUP3A1k9K3xBWt9thXI+N4gRjeBz h9Pw== X-Forwarded-Encrypted: i=1; AJvYcCWVCIEWz6FBivQ7Nl7SgKwSYjwBrnUfW8vQm8X+7Zk/anPmHBLyCRJqLA6rI76EeRL4FyNQ2Q==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwmUPR28AWzvyTEzOYKEtM6xalvE/wmV7Ikyh/E/k/tB3g5GHV9 z8Ai1OH+Nzy6pKcPH+N6naPX3ya2X4JodUrE7Eo2o7JGnZMsooVR X-Gm-Gg: ASbGnct8Cd6CRiE2Kz4/OUqezalV+SrohEDNVT+TiURwqZ+DVahWQBCjjALoENnHY8B QI5qIfzNqgF7cYVn5EK9s0KG/5DzD1+25GuOjrnxjdVj98d9UI5fZFiL0txNLcZ7o3GjH4tj52T 7DyXj3veXkvUTZwQe7PV8nJH1v0rcasndi6WhB1Val0kHRnY82fTCo+8A153Y+h0NbkKGuy+ctA sA99JVQjbVLQpISmjZDGkU923tA8IRK6T3gTALuJBgqptw6p6djWmk= X-Google-Smtp-Source: AGHT+IG2EUFAJTmhcSgb/g0lvKLdQ/CcOP3mDOmRGcuDnT+pwHV8Qla9Cs2IK6WLGHX+JvnTynkdIA== X-Received: by 2002:a05:6000:2a2:b0:38a:8906:6b66 with SMTP id ffacd0b85a97d-38a89066f45mr7879237f8f.38.1736466999748; Thu, 09 Jan 2025 15:56:39 -0800 (PST) Received: from lili ([2a01:e0a:59b:9120:f526:4f2e:d573:8d5c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b80c9sm2970356f8f.84.2025.01.09.15.56.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jan 2025 15:56:39 -0800 (PST) From: Simon Tournier In-Reply-To: References: Date: Fri, 10 Jan 2025 00:45:51 +0100 Message-ID: <87jzb3h7ps.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Queue-Id: E8A4B5952F X-Migadu-Scanner: mx13.migadu.com X-Migadu-Spam-Score: -0.56 X-Spam-Score: -0.56 X-TUID: uL5128PSiMUL --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi, Based on v6 and integrating various comments. Changes: =E2=80=A2 Instead of =E2=80=9CSupporter=E2=80=9D, the rename is =E2=80=9CS= ponsor=E2=80=9D. =E2=80=A2 Instead of Request-for-Comments (RFC), the rename is Guix Common Document (GCD). =E2=80=A2 Fix header: id and SPDX-License-Identifier, adjust sponsor and d= ate. =E2=80=A2 Section =E2=80=9CHow the Process Works=E2=80=9D, point 2. adjust= 000-template.md in agreement with XYZ. Mention =E2=80=9CSubmission Period=E2=80=9D and inf= o-guix. =E2=80=A2 Section =E2=80=9CSponsor=E2=80=9D: Add paragraph mentioning the = role of sponsor. =E2=80=A2 dot graph: Replace =E2=80=99comments=E2=80=99 by =E2=80=99discus= sion=E2=80=99 and =E2=80=99final=E2=80=99 by =E2=80=99accepted=E2=80=99. =E2=80=A2 Section =E2=80=9CSubmission Period=E2=80=9D: tweak paragraph. =E2=80=A2 Section =E2=80=9CDeliberation Period=E2=80=9D: tweak =E2=80=9CI = disapprove=E2=80=9D paragraph; Add paragraph about deliberating member. =E2=80=A2 Fix trailing dot and replace ornaments by syntax although orname= nts sound better to my French. ;-) Please proofread and comment. :-) WDYT? Cheers, simon -- --=-=-= Content-Type: text/markdown; charset=utf-8 Content-Disposition: inline; filename=001-gcd-process.md Content-Transfer-Encoding: quoted-printable Content-Description: 001-gcd-process.md title: Guix Common Document Process id: 001 status: submitted discussion: https://issues.guix.gnu.org/74736 authors: Simon Tournier, No=C3=A9 Lopez, Ludovic Court=C3=A8s sponsor: ? submitted: 2024-12-08 date: 2025-01-15 SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-only --- # Summary This document describes the _Guix Common Document_ (GCD) process of the Guix project. The GCD process is intended to provide a consistent and structured way to propose, discuss, and decide on major changes affecting the project. It aims to draw attention of community members on important decisions, technical or not, and to give them a chance to weigh in. # Motivation Day-to-day work on Guix revolves around informal interactions, peer review, and consensus-based decision making. As the community grows, so does the stream of proposed changes, and no single person is able to keep track of all of them. The GCD process is a mechanism to determine whether a proposed change is =E2=80=9Csignificant=E2=80=9D enough to require attention from the communit= y at large and if so, to provide a documented way to bring about broad community discussion and to collectively decide on the proposal. A change may be deemed =E2=80=9Csignificant=E2=80=9D 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. Examples include: - changing the `` record type and/or its interfaces; - adding or removing a `guix` sub-command; - changing the channel mechanism; - changing project governance policy such as teams, decision making, the deprecation policy, or this very document; - changing the contributor workflow and related infrastructure (mailing lists, source code repository and forge, continuous integration, etc.). # Detailed Design ## When to Follow This Process The GCD process applies only to =E2=80=9Csignificant=E2=80=9D changes, whic= h include: - changes that modify user-facing interfaces that may be relied on (command-line interfaces, core Scheme interfaces); - big restructuring of packages; - hard to revert changes; - significant project infrastructure or workflow changes; - governance or changes to the way we collaborate. Someone submitting a patch for any such change may be asked to submit an GCD first. Most day-to-day contributions do *not* require an GCD; examples include: - adding or updating packages, removing outdated packages; - fixing security issues and bugs in a way that does not change interfaces; - updating the manual, updating translations; - changing the configuration of systems part of project infrastructure in a user-invisible way. These day-to-day contributions remain governed by the process described by the manual in its =E2=80=9CContributing=E2=80=9D chapter. ## How the Process Works 1. Clone https://git.savannah.gnu.org/git/guix/guix-common-document.git #TO= DO: 2. Copy `000-template.md` to `XYZ-short-name.md` where `short-name` is a short descriptive name long and `XYZ` is the sequence number. 3. Write your GCD following the template=E2=80=99s structure. The GCD must= not be prospective; it must formalize an idea and sketch a plan to implement it, even if not all details are known. If it intends to deprecate a previously-accepted GCD, it must explicitly say so. 4. Submit the GCD as a patch to `guix-patches@gnu.org`. 5. Announce your GCD at `guix-devel@gnu.org` and look for *sponsors*: one or more people who will support the GCD and participate in discussions by your side (see below). The GCD is *submitted* once it has at least one sponsor in addition to the author(s). See =E2=80=9CSubmission Period=E2=80=9D below. Submitted GCD is announced at `info-guix@gnu.org`. ## Sponsors A sponsor is a contributor sufficiently familiar with the project=E2=80=99s practices, hence it is recommended, but not mandatory, to be a team member. Sponsors do not have to agree with all the points of the GCD but should generally be satisfied that the proposed additions are a good thing for the community. Sponsors help the author(s) by participating in discussions, amending the document as it is being discussed, and acting as timekeepers. As sponsor, please make sure that all have the time and space for expressing their comments. The GCD is about significant changes, thus more opinions is better than less. ## Timeline The lifetime of an GCD is structured into the following recommended periods: ![diagram.svg](Diagram of the GCD process.) ```dot digraph "GCD Timeline" { submission [label=3Dup to 7=C2=A0days>] discussion [label=3D30=E2=80=9360=C2=A0days>] deliberation[label=3D14=C2=A0days>] withdrawn [label=3DWithdrawn, shape=3Drectangle] accepted [label=3DAccepted, shape=3Drectangle] =20=20=20=20 submission -> discussion submission -> withdrawn discussion -> deliberation deliberation -> withdrawn deliberation -> accepted =20=20=20=20 withdrawn -> submission [label=3D"New version"] =20=20=20=20 discussion -> withdrawn } ``` The subsections below detail the various stages and their duration. ### Submission Period (up to 7 days) Anyone can author and submit an GCD as a regular patch and look for sponsor (see below). The GCD is *submitted* once one or more people publicly reply =E2=80=9CI sponsor=E2=80=9D and volunteers to be sponsors; t= he next step is the *discussion period*. Author(s) may withdraw their GCD at any time; they can resubmit it again later, possibly under a new GCD number. ### Discussion Period (at least 30 days, up to 60 days) Once submitted, the GCD is publicly discussed; authors are encouraged to publish updated versions incorporating feedback during the discussion. Once the discussion settles, at the latest after 60 days, the author(s) publish a final version, leading to the *deliberation period*. ### Deliberation Period (14 days) All members of any team of the Guix project can participate in deliberation and are encouraged to do so. Once the final version is published, team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD: - =E2=80=9CI support=E2=80=9D, meaning that one supports the proposal; - =E2=80=9CI accept=E2=80=9D, meaning that one consents to the implementati= on of the proposal; - =E2=80=9CI disapprove=E2=80=9D, meaning that one opposes the implementati= on of the proposal. A team member sending this reply must have actively cooperated with for discussing the RFC during the discussion period. See =E2=80=9CDecision Making=E2=80=9D. The GCD is *accepted* if (1) at least 25% of all team members send a reply, and (2) no one disapproves. In other cases, the GCD is *withdrawn*. Deliberation aims at consolidating consensus; see =E2=80=9CDecision Making= =E2=80=9D below. Anyone who is a team member is a deliberating member and is asked to contribute to the deliberation. Team members are defined by the file etc/teams.scm (see =E2=80=9CTeams=E2=80=9D in the manual). GCD acceptance is not a rubber stamp; in particular, it does not mean the proposal will effectively be implemented, but it does mean that all the participants consent to its implementation. Similarly, withdrawal does not necessarily equate with rejection; it could mean that more discussion and thought is needed before ideas in the GCD are accepted by the community. ## Decision Making Contributors and even more so team members are expected to help build consensus. By using consensus, we are committed to finding solutions that everyone can live with. Thus, no decision is made against significant concerns; these concerns are actively resolved through counter proposals. A deliberating member disapproving a proposal bears a responsibility for finding alternatives, proposing ideas or code, or explaining the rationale for the status quo. To learn what consensus decision making means and understand its finer details, you are encouraged to read . ## Merging Final GCDs Whether it is accepted or withdrawn, a committer merges the final GCD following these steps: 1. filling in the remaining metadata in the GCD headers (changing the `status` to `accepted` or `withdrawn`; adding the URL of the discussion in the `discussion` header; updating the `date` header; if previously-accepted GCDs are deprecated by this new GCD, change the `status` header accordingly); 2. committing everything; 3. announcing the publication of the GCD. All the GCDs are dual-licensed under the [Creative Commons Attribution-ShareAlike 4.0](https://creativecommons.org/licenses/by-sa/4.0/) license and the [GNU Free Documentation License 1.3, with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts](https://www.gnu.org/licenses/fdl-1.3.html). ## GCD Template The expected structure of GCDs is captured by the template in the file `000-template.md`, written in English with Markdown syntax. ## Cost of Reverting The GCD process described in this documented can be amended by subsequent GCDs. ## Drawbacks There is a risk that the additional process will hinder contribution more t= han it would help. We should stay alert that the process is only a way to help contribution, not an end in itself. Discussions could easily have a low signal-to-noise ratio. We will collectively pay attention to over- and under-representation of voices and notably avoid repeating arguments, avoid using exclusionary jargon, and solicit opinions of those who remained silent. ## Open Issues There are still questions regarding the desired scope of the process. While we want to ensure that technical changes that affect users are well-considered, we certainly don=E2=80=99t want the process to become undu= ly burdensome. This is a careful balance which will require care to maintain moving forward. --=-=-=--