[PATCH v2 0/1] Add Request-For-Comment process.

  • Open
  • quality assurance status badge
Details
13 participants
  • Andreas Enge
  • Hartmut Goebel
  • indieterminacy
  • Janneke Nieuwenhuizen
  • Ludovic Courtès
  • Noé Lopez
  • Artyom V. Poptsov
  • pukkamustard
  • Ricardo Wurmus
  • reza
  • Suhail Singh
  • Vagrant Cascadian
  • Simon Tournier
Owner
unassigned
Submitted by
Noé Lopez
Severity
important
Merged with
N
N
Noé Lopez wrote on 8 Dec 2024 13:29
(address . guix-patches@gnu.org)(name . Noé Lopez)(address . noelopez@free.fr)
cover.1733614983.git.noelopez@free.fr
From: Noé Lopez <noelopez@free.fr>

Hi,

It has been more than a year since Simon Tournier’s original patch[1] for
specifying a “request for comment” process. I believe that such a process can
pave the way for big changes to make their way to Guix and the establishment
of a governance model, among other things.

Therefore, I have taken it upon myself to produce an updated version taking
into account the comments received on the original patch and my own changes.

These changes are targeted not only to committers, but to every contributor so
that anyone can propose important changes. So anyone should feel free to
comment what they think :)

Have a good day,
Noé Lopez


Simon Tournier (1):
rfc: Add Request-For-Comment process.

rfc/0000-template.txt | 76 +++++++++++++
rfc/0001-rfc-process.txt | 232 +++++++++++++++++++++++++++++++++++++++
2 files changed, 308 insertions(+)
create mode 100644 rfc/0000-template.txt
create mode 100644 rfc/0001-rfc-process.txt


base-commit: 1affd2b5aa7f5467a44cf757c4fc0c6956d3f3c9
--
2.46.0
N
N
Noé Lopez wrote on 8 Dec 2024 13:31
[PATCH v2 1/1] rfc: Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)(name . Noé Lopez)(address . noe@xn--no-cja.eu)
09ff9f31af0575ba5223bf713f166101e79b8d99.1733614983.git.noelopez@free.fr
From: Simon Tournier <zimon.toutoune@gmail.com>

* rfc/0001-rfc-process.txt: New file.
* rfc/0000-template.txt: New file.

Co-authored-by: Noé Lopez <noe@xn--no-cja.eu>
Change-Id: Ide88e70dc785ab954ccb42fb043625db12191208
---
rfc/0000-template.txt | 76 +++++++++++++
rfc/0001-rfc-process.txt | 232 +++++++++++++++++++++++++++++++++++++++
2 files changed, 308 insertions(+)
create mode 100644 rfc/0000-template.txt
create mode 100644 rfc/0001-rfc-process.txt

Toggle diff (322 lines)
diff --git a/rfc/0000-template.txt b/rfc/0000-template.txt
new file mode 100644
index 0000000000..8c4077e753
--- /dev/null
+++ b/rfc/0000-template.txt
@@ -0,0 +1,76 @@
+# -*- mode:org -*-
+#+TITLE: <The meaningful name of the proposal>
+#+DATE: <date when the process starts>
+
++ Issue: <number assigned by Debbugs>
++ Status: <pending|done|unsuccessful|deprecated>
++ Supporter: <Your Name>
++ Co-supporter(s): <Some> <Names>
+
+* Summary
+
+A one-paragraph explanation. Main sales pitch.
+
+* Motivation
+
+Describe the problem·s this RFC attempts to address as clearly as possible and
+optionally give an example. Explain how the status quo is insufficient or not
+ideal.
+
+* Detail design
+
+Main part. The sections answers What are the tradeoffs of this proposal
+compared to status quo or potential alternatives? Explain details, corner
+cases, provide examples. Explain it so that someone familiar can understand.
+
+It is best to exemplify, contrived example too. If the Motivation section
+describes something that is hard to do without this proposal, this is a good
+place to show how easy that thing is to do with the proposal.
+
+** Backward compatibility
+
+# Christopher Baines:
+# I'm struggling to think of exactly how backwards compatibility would
+# apply to potential RFCs for Guix.
+
+Will your proposed change cause a behaviour change? Assess the expected
+impact on existing code on the following scale:
+
+0. No breakage
+1. Breakage only in extremely rare cases (exotic or unknown cases)
+2. Breakage in rare cases (user living in cutting-edge)
+3. Breakage in common cases
+
+Explain why the benefits of the change outweigh the costs of breakage.
+Describe the migration path. Consider specifying a compatibility warning for
+one or more releases. Give examples of error that will be reported for
+previously-working cases; do they make it easy for users to understand what
+needs to change and why?
+
+The aim is to explicitely consider beforehand potential Backward Compatibility
+issue.
+
+** Forward compatibility
+
+# Christopher Baines:
+# I do think it's worth explicitly bringing up something like the "cost of
+# reverting". That is, it's important to discuss things more if there's a
+# high cost to changing the approach later. For these "high cost of later
+# change" situations, the RFC process will probably be particularly
+# valuable.
+
+# Noé Lopez:
+# I think this section could apply very well to governance proposals.
+
+How will your proposed change evolve with time? What is the cost of changing
+the approach later?
+
+* Unresolved questions
+
+Explicitly list any remaining issues. At submitting time, be upfront and
+trust that the community will help. At reviewing time, this section tracks
+the details about the status of the process.
+
+At the end of the process, this section will be empty. If not, please be
+explicit with the known issues by adding a dedicated subsection under Detail
+design.
diff --git a/rfc/0001-rfc-process.txt b/rfc/0001-rfc-process.txt
new file mode 100644
index 0000000000..4282e84230
--- /dev/null
+++ b/rfc/0001-rfc-process.txt
@@ -0,0 +1,232 @@
+# -*- mode:org -*-
+#+TITLE: Request-For-Comment process
+#+DATE: 2023-10-31
+
++ Issue: 66844
++ Status: pending
++ Supporter: Simon Tournier
++ Co-supporters:
+
+* Summary
+
+The "RFC" (request for comments) process is intended to provide a consistent
+and structured path for major changes and features to enter the Guix project,
+so that all stakeholders can make decisions collectively and be confident
+about the direction it is evolving in.
+
+* Motivation
+
+The current way that we add new features to Guix has been good for early
+development, but it is starting to show its limits as Guix becomes a broadly
+used system with many contributors. Changes might be slowed down by the lack
+of structure to acquire consensus. This is a proposal for a more principled
+RFC process to make it a more integral part of the overall development
+process, and one that is followed consistently to introduce substantial
+features.
+
+There are a number of changes that are significant enough that they could
+benefit from wider community consensus before being introduced. Either
+because they introduce new concepts, big changes or are controversial enough
+that not everybody will consent on the direction to take.
+
+Therefore, the purpose of this RFC is to introduce a process that allows to
+bring the discussion upfront and strengthen decisions. This RFC is used to
+bootstrap the process and further RFCs can be used to refine the process.
+
+Note that this process does not cover most of the changes. It covers
+significant changes, for some examples:
+
+ + change of inputs style
+ (Removing input labels from package definitions, #49169)
+ + introduction of =guix shell= and deprecation of =guix environment=
+ (Add 'guix shell' to subsume 'guix environment', #50960)
+ + introduction of authentication mechanism (Trustable "guix pull", #22883)
+ + changes in policy (Add "Deprecation Policy", #72840)
+ + collaboration via team and branch-features
+ (several places mailing list guix-devel)
+
+* Detail design
+
+** When you need to follow this process
+
+This process is followed when one intends to make "substantial" changes to the
+Guix project. What constitutes a "substantial" change is evolving based on
+community norms, but may include the following.
+
+ + 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
+ + Governance and changes to the way we collaborate
+
+Certain changes do not require an RFC:
+
+ - Adding, updating packages, removing outdated packages
+ - Fixing security updates and bugs that don't break interfaces
+
+A patch submission to Debbugs that contains any of the afore-mentioned
+substantial changes may be asked to first submit a RFC.
+
+** How the process works
+
+ 1. Clone https://git.savannah.gnu.org/git/guix.git
+ 2. Copy rfc/0000-template.org to rfc/00XY-good-name.org where good-name is
+ descriptive but not too long and XY increments
+ 3. Fill RFC
+ 4. Submit to guix-patches@gnu.org
+ 5. Announce your RFC to guix-devel@gnu.org
+
+Make sure the proposal is as well-written as you would expect the final
+version of it to be. It does not mean that all the subtilities must be
+considered at this point since that is the aim of review discussion. It means
+that the RFC process is not a prospective brainstorming and the proposal
+formalize an idea for making it happen.
+
+The submission of a proposal does not require an implementation. However, to
+improve the chance of a successful RFC, it might be recommended to have an
+idea for implementing it. If an implementation is attached to the detailed
+design, it might help the discussion.
+
+At this point, at least one other person must volunteer to be "co-supporter".
+The aim is to improve the chances that the RFC is both desired and likely to
+be implemented.
+
+Once supporter and co-supporter(s) are committed in the RFC process, the
+review discussion starts. Advertisement of the RFC on the mailing-lists
+guix-devel is mandatory and IRC and other Guix communities are recommended.
+
+After a number of rounds of review, the discussion should settle and a general
+consensus should emerge. If the RFC is successful then authors may contribute
+to the implementation. This bit is left intentionally vague and should be
+refined in the future.
+
+A successful RFC is not a rubber stamp, and in particular still does not mean
+the feature will ultimately be merged; it does mean that in principle all the
+major stakeholders have agreed to the feature and are amenable to merging it.
+
+An unsuccessful RFC is *not* a judgment on the value of the work, so a refusal
+should rather be interpreted as “let’s discuss again with a different angle”.
+The last state of an unsuccessful RFC is archived under the directory
+rfc/withdrawn/.
+
+** Co-supporter
+
+A co-supporter is a contributor sufficiently familiar with the project’s
+practices, hence it is recommended, but not mandatory, to be a contributor
+with commit access. The co-supporter helps the supporter, they are both
+charged with keeping the proposal moving through the process. The
+co-supporter role is to help the proposal supporter by being the timekeeper
+and helps in pushing forward until process completion.
+
+The co-supporter doesn't necessarily have to agree with all the points of the
+RFC but should generally be satisfied that the proposed additions are a good
+thing for the community.
+
+The Guix projects ensures that a team of co-supporters – the RFC team – remain
+available for any new RFCs that don’t find any co-supporters. This team
+should be added to the etc/teams.scm file.
+
+** Timeline
+
+The lifetime of an RFC is structured into the following periods:
+ submission (7d) ? comments (30–60d) ? last call (14d) ? withdrawn OR final
+
+*** Submission
+
+The author submits their proposal to the patches mailing list and the RFC team
+which will read the proposal and can advise the author on improving their RFC.
+This first round of review is provided only to help the author and should not
+reflect personal bias or opinions.
+
+If seven days have passed without answer or the author thinks that his
+RFC is ready then he may move on to the comment period.
+
+*** Comment
+
+The author publishes their RFC to guix-devel and starts a discussion period of
+at least 30 days. It is up to the supporter and co-supporter to ensure that
+sufficient discussion is solicited. Make sure that all have the time for
+expressing their comments. The proposal is about significant changes, thus
+more time is better than less.
+
+The author is encouraged to publish updated versions of their RFC at any point
+during the discussion period.
+
+Once the discussion goes stale or after 60 days, the author should publish or
+keep their final version and move into the last call period.
+
+*** Last call
+
+The author publishes a final version of the RFC and a 14 day period is given
+for people to express their agreement or disagreement. If a positive
+consensus is reached the RFC becomes final and the changes should be applied
+in less than six months.
+
+If no consensus can be reached or the changes were not applied in less than
+six months, the RFC becomes withdrawn and is archived. The author may also
+withdraw their RFC at any point.
+
+** Decision making: consensus
+
+It is expected from all contributors, and even more so from committers, to
+help build consensus and make decisions based on consensus. By using
+consensus, we are committed to finding solutions that everyone can live with.
+
+It implies that no decision is made against significant concerns and these
+concerns are actively resolved with proposals that work for everyone. A
+contributor, without or with commit access, wishing to block a proposal bears
+a special responsibility for finding alternatives, proposing ideas/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
+<https://www.seedsforchange.org.uk/consensus>.
+
+** Merging the outcome
+
+Once a consesus is made, a committer should do the following to merge the RFC:
+
+ 1. Fill in the remaining metadata in the RFC header, including links for the
+ original Debbugs submission.
+ 2. Commit everything.
+ 3. Announce the establishment of the RFC to all the stakeholders.
+ 4. Ensure the RFC is applied within six months.
+
+** Template of RFC
+
+# Ludovic Courtès:
+# I’d go for one format, preferably Markdown because we have a library to
+# parse it.
+
+The structure of the RFC is captured by the template; see the file
+rfc/0000-template.txt. It is recommended to write using markup language as,
+for example, Org-mode or Markdown or reStructuredText.
+
+** Backward Compatibility
+
+None.
+
+** Forward compatibility
+
+The RFC process can be refined by further RFCs.
+
+** Drawbacks
+
+There is a risk that the additional process will hinder contribution more than
+it would help. We should stay alert that the process is only a way to help
+contribution, not an end in itself.
+
+Of course, group decision-making processes are difficult to manage.
+
+The ease of commenting may bring a slightly diminished signal-to-noise ratio
+in collected feedback, particularly on easily bike-shedded topics.
+
+** Open questions
+
+There are still questions regarding the desired scope of the process. While
+we want to ensure that changes which affect the users are well-considered, we
+certainly don't want the process to become unduly burdensome. This is a
+careful balance which will require care to maintain moving forward.
+
+* Unresolved questions
--
2.46.0
A
A
Artyom V. Poptsov wrote on 9 Dec 2024 21:47
Re: [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
87h67c60tl.fsf@gmail.com
Hello Noé Lopez,

thanks for pushing this idea forward! I think that the RFC process will
help to track all the major initiatives in GNU Guix -- present and
future ones.

I know that there are several long-term big projects inside Guix, namely
Guile daemon, distributed substitutes and maybe more. In my view the
problem is that the information about those projects is buried in the
Git branches and E-Mail discussions. Maybe RFCs in the well-known place
inside the repository will help developers to see what the community at
large is up to.

Toggle quote (4 lines)
> # Ludovic Courtès:
> # I’d go for one format, preferably Markdown because we have a library to
> # parse it.

To my taste, as for Emacs user, the plain old org-mode format is good
enough to write RFCs, but that's no more than a preference. Many people
using Markdown nowadays so maybe it will help to make the RFC process
more friendly for newcomers.

- avp

--
Artyom "avp" Poptsov <poptsov.artyom@gmail.com>
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE B57C E9C5 A2D9 0898 A02F
-----BEGIN PGP SIGNATURE-----

iQJNBAEBCgA3FiEEAf2F9Bp7f4IFgwalk16+BzbchX4FAmdXV1sZHHBvcHRzb3Yu
YXJ0eW9tQGdtYWlsLmNvbQAKCRCTXr4HNtyFfkqkEACN73x8y/Tg4/BuyD1O+Eq+
WSDxUQKdZKBjcHiB+XGaHhXVyt7QlmniFrBIKU2SAGdIJUfneJePfS8dZqMyrPBQ
r1bGsq9QJCPm3fb1fxJubUiiBeMkYctzcHnjNBCENP9K27YBxNosQopKO3U2rXFc
uaTu5qVg8jBYncqAnxqjJf7QePHwm5hKhwNQuWvQet0hxUimP1ldBXRJla98dIXP
c6AiwUuUePl0KSLPcdjaTukzJqtBPv3bPRjov+4oR2Vd/RHewjjJ6C4A+r1RzKYa
wY8Yk8SR4/su5wG0wVugocE+Ks/7+JPK1jl2yZLMBM/I2KSfq3XkqIG55PqyzIC4
NAJDG8nUzV0Yoy8cZINJepIBI2fcPJdyQP5jCIDDkPOK8gaCVIxC9bUftuBXuwsw
73VBD7txNP4vWZ++ic/+yvI4SXMdOfWVxT2ABzvnsu8hRlqBz4aRs5JkywmtTtL6
ww8quAyGeFFI0nC/heH5CnOEgN+1iS+RnzIt6UlecdZU515CYanZ7ZcAOFdP70dU
FVWic3DkudSkoeuuV/bxGolfR1yZ8k2o5I18vCA6fuOUUdewMqg1rIDhMB92qWXj
uIZkZqXfghsOncWuUm8wQWxwJTWoR6LzNF/ugLR18nHjvJSMKiDvU3DYM44K7z7I
4cO9UrcpJkUZYMvh8irxxg==
=/WsE
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 12 Dec 2024 18:40
control message for bug #74736
(address . control@debbugs.gnu.org)
877c8494uz.fsf@gnu.org
severity 74736 important
quit
L
L
Ludovic Courtès wrote on 12 Dec 2024 18:46
(address . control@debbugs.gnu.org)
874j3894m8.fsf@gnu.org
merge 74736 66844
quit
L
L
Ludovic Courtès wrote on 12 Dec 2024 19:14
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Noé Lopez)(address . noe@xn--no-cja.eu)
875xno7oqg.fsf_-_@gnu.org
Hi Noé,

Thanks a lot for resuming this work! That’s the right thing to do.

Leaving out 000-rfc-template.txt for now.

Noé Lopez <noe@noé.eu> skribis:

Toggle quote (6 lines)
> +++ b/rfc/0001-rfc-process.txt
> @@ -0,0 +1,232 @@
> +# -*- mode:org -*-
> +#+TITLE: Request-For-Comment process
> +#+DATE: 2023-10-31

[...]

Toggle quote (7 lines)
> +* Motivation
> +
> +The current way that we add new features to Guix has been good for early
> +development, but it is starting to show its limits as Guix becomes a broadly
> +used system with many contributors. Changes might be slowed down by the lack
> +of structure to acquire consensus.

“… to achieve consensus, lack of a central place to consult contributors
and users, and lack of clear deadlines.”

Toggle quote (3 lines)
> +Note that this process does not cover most of the changes. It covers
> +significant changes, for some examples:

“It covers proposals significant changes, where “significant” means any
change that could only be reverted at a high cost, or any change with
the potential to disrupt user scripts and programs or user workflows.
Examples include: ”

Toggle quote (9 lines)
> + + change of inputs style
> + (Removing input labels from package definitions, #49169)
> + + introduction of =guix shell= and deprecation of =guix environment=
> + (Add 'guix shell' to subsume 'guix environment', #50960)
> + + introduction of authentication mechanism (Trustable "guix pull", #22883)
> + + changes in policy (Add "Deprecation Policy", #72840)
> + + collaboration via team and branch-features
> + (several places mailing list guix-devel)

These are changes from the past that may long be forgotten by the time
we read them. Perhaps we can abstract it a bit, like:

- changing the <package> record type and/or its interfaces;
- adding or removing a ‘guix’ sub-command;
- changing the channel mechanism;
- changing project 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.)

This list seems redundant with and similar to that under “When To Follow
This Process”; maybe just keep it in one place, under “When To Follow…”?

Toggle quote (2 lines)
> +* Detail design

“Detailed Design”

Toggle quote (2 lines)
> +** When you need to follow this process

“When To Follow This Process”

Toggle quote (16 lines)
> +This process is followed when one intends to make "substantial" changes to the
> +Guix project. What constitutes a "substantial" change is evolving based on
> +community norms, but may include the following.
> +
> + + 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
> + + Governance and changes to the way we collaborate
> +
> +Certain changes do not require an RFC:
> +
> + - Adding, updating packages, removing outdated packages
> + - Fixing security updates and bugs that don't break interfaces

I would add “General day-to-day contributions follow the regular
[decision-making process] and [team organization].”, with references to
the relevant sections of the manual.

Toggle quote (2 lines)
> +A patch submission to Debbugs that contains any of the afore-mentioned

Typo: “aforementioned”.

I would remove “to Debbugs” to keep it more general and future-proof.

Toggle quote (4 lines)
> +** How the process works
> +
> + 1. Clone https://git.savannah.gnu.org/git/guix.git

I would suggest a separate repo.

Toggle quote (15 lines)
> + 2. Copy rfc/0000-template.org to rfc/00XY-good-name.org where good-name is
> + descriptive but not too long and XY increments
> + 3. Fill RFC
> + 4. Submit to guix-patches@gnu.org
> + 5. Announce your RFC to guix-devel@gnu.org
> +
> +Make sure the proposal is as well-written as you would expect the final
> +version of it to be. It does not mean that all the subtilities must be
> +considered at this point since that is the aim of review discussion. It means
> +that the RFC process is not a prospective brainstorming and the proposal
> +formalize an idea for making it happen.
> +
> +The submission of a proposal does not require an implementation. However, to
> +improve the chance of a successful RFC, it might be recommended to have an

s/it might be/it is/

Toggle quote (4 lines)
> +Once supporter and co-supporter(s) are committed in the RFC process, the
> +review discussion starts. Advertisement of the RFC on the mailing-lists
> +guix-devel is mandatory and IRC and other Guix communities are recommended.

“Publicizing of the RFC on the project’s main communication channels is
mandatory.”

Toggle quote (5 lines)
> +After a number of rounds of review, the discussion should settle and a general
> +consensus should emerge. If the RFC is successful then authors may contribute
> +to the implementation. This bit is left intentionally vague and should be
> +refined in the future.

I’d drop it or write “See the ‘Decision Process and Timeline’ section
below.”

Toggle quote (4 lines)
> +A successful RFC is not a rubber stamp, and in particular still does not mean
> +the feature will ultimately be merged; it does mean that in principle all the
> +major stakeholders have agreed to the feature and are amenable to merging it.

I’d write “all the participants” instead of “all the major
stakeholders”.

Toggle quote (4 lines)
> +The Guix projects ensures that a team of co-supporters – the RFC team – remain
> +available for any new RFCs that don’t find any co-supporters. This team
> +should be added to the etc/teams.scm file.

I would drop that.

Toggle quote (5 lines)
> +** Timeline
> +
> +The lifetime of an RFC is structured into the following periods:
> + submission (7d) ? comments (30–60d) ? last call (14d) ? withdrawn OR final

Let’s borrow from the state transition diagram from at

Perhaps we should also shorten the text of each section below.

In each section heading, I would add its duration:

*** Submission (up to 7 days)


*** Discussion (at least 30 days, up to 60 days)


Toggle quote (4 lines)
> +*** Comment
> +
> +The author publishes their RFC to guix-devel and starts a discussion period of

“The author publicizes their RFC, marking the start of a discussion
period of at least 30 days and at most 60 days.”

Toggle quote (6 lines)
> +*** Last call
> +
> +The author publishes a final version of the RFC and a 14 day period is given
> +for people to express their agreement or disagreement. If a positive
> +consensus is reached the RFC becomes final and the changes should be applied

“If consensus is reached, the RFC becomes …”

Toggle quote (2 lines)
> +in less than six months.

I’m not sure what “the changes” refers to.

Regarding consensus, I would add a link to the “Making Decisions”
section of the manual…

Toggle quote (2 lines)
> +** Decision making: consensus

… and drop this.

Toggle quote (10 lines)
> +** Merging the outcome
> +
> +Once a consesus is made, a committer should do the following to merge the RFC:
> +
> + 1. Fill in the remaining metadata in the RFC header, including links for the
> + original Debbugs submission.
> + 2. Commit everything.
> + 3. Announce the establishment of the RFC to all the stakeholders.
> + 4. Ensure the RFC is applied within six months.

Maybe we should define the role of “RFC editors” (or “RFC team”?), which
would be the people responsible for doing those changes.

Toggle quote (6 lines)
> +** Template of RFC
> +
> +# Ludovic Courtès:
> +# I’d go for one format, preferably Markdown because we have a library to
> +# parse it.

Yes! :-) Despite being an Org fan, I think we should stick to Markdown:
it’s widespread, well-known, and can be rendered by Haunt or by any
forge.

Toggle quote (6 lines)
> +** Backward Compatibility
> +
> +None.
> +
> +** Forward compatibility

I’m not sure what’s expected in these sections. Maybe “Compatibility
Considerations” would be more appropriate?

Toggle quote (20 lines)
> +** Drawbacks
> +
> +There is a risk that the additional process will hinder contribution more than
> +it would help. We should stay alert that the process is only a way to help
> +contribution, not an end in itself.
> +
> +Of course, group decision-making processes are difficult to manage.
> +
> +The ease of commenting may bring a slightly diminished signal-to-noise ratio
> +in collected feedback, particularly on easily bike-shedded topics.
> +
> +** Open questions
> +
> +There are still questions regarding the desired scope of the process. While
> +we want to ensure that changes which affect the users are well-considered, we
> +certainly don't want the process to become unduly burdensome. This is a
> +careful balance which will require care to maintain moving forward.
> +
> +* Unresolved questions

I think these two sections in the context of this foundational document
look a bit ridiculous. :-) But maybe that’s okay?

Thanks!

Ludo’.
S
S
Simon Tournier wrote on 12 Dec 2024 20:30
[PATCH v3] rfc: Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
493bcc076f206ec134959268f55a9358b4886b88.1734031781.git.zimon.toutoune@gmail.com
* rfc/0001-rfc-process.txt: New file.
* rfc/0000-template.txt: New file.

Co-authored-by: Noé Lopez <noe@xn--no-cja.eu>
Change-Id: Ide88e70dc785ab954ccb42fb043625db12191208
---
rfc/0000-template.txt | 76 ++++++++++++
rfc/0001-rfc-process.txt | 248 +++++++++++++++++++++++++++++++++++++++
2 files changed, 324 insertions(+)
create mode 100644 rfc/0000-template.txt
create mode 100644 rfc/0001-rfc-process.txt

Toggle diff (340 lines)
diff --git a/rfc/0000-template.txt b/rfc/0000-template.txt
new file mode 100644
index 0000000000..8c4077e753
--- /dev/null
+++ b/rfc/0000-template.txt
@@ -0,0 +1,76 @@
+# -*- mode:org -*-
+#+TITLE: <The meaningful name of the proposal>
+#+DATE: <date when the process starts>
+
++ Issue: <number assigned by Debbugs>
++ Status: <pending|done|unsuccessful|deprecated>
++ Supporter: <Your Name>
++ Co-supporter(s): <Some> <Names>
+
+* Summary
+
+A one-paragraph explanation. Main sales pitch.
+
+* Motivation
+
+Describe the problem·s this RFC attempts to address as clearly as possible and
+optionally give an example. Explain how the status quo is insufficient or not
+ideal.
+
+* Detail design
+
+Main part. The sections answers What are the tradeoffs of this proposal
+compared to status quo or potential alternatives? Explain details, corner
+cases, provide examples. Explain it so that someone familiar can understand.
+
+It is best to exemplify, contrived example too. If the Motivation section
+describes something that is hard to do without this proposal, this is a good
+place to show how easy that thing is to do with the proposal.
+
+** Backward compatibility
+
+# Christopher Baines:
+# I'm struggling to think of exactly how backwards compatibility would
+# apply to potential RFCs for Guix.
+
+Will your proposed change cause a behaviour change? Assess the expected
+impact on existing code on the following scale:
+
+0. No breakage
+1. Breakage only in extremely rare cases (exotic or unknown cases)
+2. Breakage in rare cases (user living in cutting-edge)
+3. Breakage in common cases
+
+Explain why the benefits of the change outweigh the costs of breakage.
+Describe the migration path. Consider specifying a compatibility warning for
+one or more releases. Give examples of error that will be reported for
+previously-working cases; do they make it easy for users to understand what
+needs to change and why?
+
+The aim is to explicitely consider beforehand potential Backward Compatibility
+issue.
+
+** Forward compatibility
+
+# Christopher Baines:
+# I do think it's worth explicitly bringing up something like the "cost of
+# reverting". That is, it's important to discuss things more if there's a
+# high cost to changing the approach later. For these "high cost of later
+# change" situations, the RFC process will probably be particularly
+# valuable.
+
+# Noé Lopez:
+# I think this section could apply very well to governance proposals.
+
+How will your proposed change evolve with time? What is the cost of changing
+the approach later?
+
+* Unresolved questions
+
+Explicitly list any remaining issues. At submitting time, be upfront and
+trust that the community will help. At reviewing time, this section tracks
+the details about the status of the process.
+
+At the end of the process, this section will be empty. If not, please be
+explicit with the known issues by adding a dedicated subsection under Detail
+design.
diff --git a/rfc/0001-rfc-process.txt b/rfc/0001-rfc-process.txt
new file mode 100644
index 0000000000..52d851f879
--- /dev/null
+++ b/rfc/0001-rfc-process.txt
@@ -0,0 +1,248 @@
+# -*- mode:org -*-
+#+TITLE: Request-For-Comment process
+#+DATE: 2023-10-31
+
++ Issue: 66844
++ Status: pending
++ Supporter: Simon Tournier
++ Co-supporters: Noé Lopez
+
+* Summary
+
+The "RFC" (request for comments) process is intended to provide a consistent
+and structured path for major changes and features to enter the Guix project,
+so that all stakeholders can make decisions collectively and be confident
+about the direction it is evolving in.
+
+* Motivation
+
+The current way that we add new features to Guix has been good for early
+development, but it is starting to show its limits as Guix becomes a broadly
+used system with many contributors. Changes might be slowed down by the lack
+of structure to acquire consensus, lack of a central place to consult
+contributors and users, and lack of clear deadlines. This is a proposal for a
+more principled RFC process to make it a more integral part of the overall
+development process, and one that is followed consistently to introduce
+substantial features.
+
+There are a number of changes that are significant enough that they could
+benefit from wider community consensus before being introduced. Either
+because they introduce new concepts, big changes or are controversial enough
+that not everybody will consent on the direction to take.
+
+Therefore, the purpose of this RFC is to introduce a process that allows to
+bring the discussion upfront and strengthen decisions. This RFC is used to
+bootstrap the process and further RFCs can be used to refine the process.
+
+It covers significant changes, where “significant” means any change that could
+only be reverted at a high cost, or any change with the potential to disrupt
+user scripts and programs or user workflows. Examples include:
+
+ - changing the <package> record type and/or its interfaces;
+ - adding or removing a ‘guix’ sub-command;
+ - changing the channel mechanism;
+ - changing project 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.)
+
+For concrete past examples where this RFC process would be helpful:
+
+ - Removing input labels from package definitions, #49169
+ - Add 'guix shell' to subsume 'guix environment', #50960
+ + Trustable "guix pull", #22883
+ + Add "Deprecation Policy", #72840
+ + Collaboration via team and branch-features, several places over all the
+ mailing lists.
+
+* Detailed Design
+
+** When To Follow This Trocess
+
+This process is followed when one intends to make "substantial" changes to the
+Guix project. What constitutes a "substantial" change is evolving based on
+community norms, but may include the following.
+
+ + 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
+ + Governance and changes to the way we collaborate
+
+Certain changes do not require an RFC:
+
+ - Adding, updating packages, removing outdated packages
+ - Fixing security updates and bugs that don't break interfaces
+
+For general day-to-day contributions, please follow the regular process as
+described by manual sections "Submitting Patches", "Reviewing the Work of
+Others", "Teams" and "Making Decisions".
+
+A patch submission that contains any of the aforementioned substantial changes
+may be asked to first submit a RFC.
+
+** How the process works
+
+ 1. Clone https://git.savannah.gnu.org/git/guix.git
+ 2. Copy rfc/0000-template.org to rfc/00XY-good-name.org where good-name is
+ descriptive but not too long and XY increments
+ 3. Fill RFC
+ 4. Submit to guix-patches@gnu.org
+ 5. Announce your RFC to guix-devel@gnu.org
+
+Make sure the proposal is as well-written as you would expect the final
+version of it to be. It does not mean that all the subtilities must be
+considered at this point since that is the aim of review discussion. It means
+that the RFC process is not a prospective brainstorming and the proposal
+formalize an idea for making it happen.
+
+The submission of a proposal does not require an implementation. However, to
+improve the chance of a successful RFC, it is ecommended to have an idea for
+implementing it. If an implementation is attached to the detailed design, it
+might help the discussion.
+
+At this point, at least one other person must volunteer to be "co-supporter".
+The aim is to improve the chances that the RFC is both desired and likely to
+be implemented.
+
+Once supporter and co-supporter(s) are committed in the RFC process, the
+review discussion starts. Publicizing of the RFC on the project's mailing
+list named guix-devel is mandatory, and on other main communication channels
+is highly recommended.
+
+After a number of rounds of review, the discussion should settle and a general
+consensus should emerge. Please follow the "Decision Process" and "Timeline"
+sections.
+
+A successful RFC is not a rubber stamp, and in particular still does not mean
+the feature will ultimately be merged; it does mean that in principle all the
+participants have agreed to the feature and are amenable to merging it.
+
+An unsuccessful RFC is *not* a judgment on the value of the work, so a refusal
+should rather be interpreted as “let’s discuss again with a different angle”.
+The last state of an unsuccessful RFC is archived under the directory
+rfc/withdrawn/.
+
+** Co-supporter
+
+A co-supporter is a contributor sufficiently familiar with the project’s
+practices, hence it is recommended, but not mandatory, to be a contributor
+with commit access. The co-supporter helps the supporter, they are both
+charged with keeping the proposal moving through the process. The
+co-supporter role is to help the proposal supporter by being the timekeeper
+and helps in pushing forward until process completion.
+
+The co-supporter doesn't necessarily have to agree with all the points of the
+RFC but should generally be satisfied that the proposed additions are a good
+thing for the community.
+
+** Timeline
+
+The lifetime of an RFC is structured into the following recommended periods:
+
+ submission (7d) ? comments (30–60d) ? last call (14d) ? withdrawn OR final
+
+The author may withdraw their RFC proposal at any time; and it might be
+submitted again.
+
+*** Submission (up to 7 days)
+
+The author submits their RFC proposal as a regular patch and look for
+co-supporter(s). See 'Co-supporter' section.
+
+Once the RFC is co-supported, it marks the start of a discussion period.
+
+*** Comment (at least 30 days, up to 60 days)
+
+The comment period starts once the author publishes their RFC to guix-devel,
+then the proposal is freely discussed for a period of at least 30 days. It is
+up to the supporter and co-supporter(s) to ensure that sufficient discussion
+is solicited. Please make sure that all have the time and space for
+expressing their comments. The proposal is about significant changes, thus
+more opinions is better than less.
+
+The author is encouraged to publish updated versions of their RFC at any point
+during the discussion period.
+
+Once the discussion goes stale or after 60 days, the author must summarize the
+state of the conversation and keep the final version.
+
+It moves to the last call period.
+
+*** Last call (up to 14 days)
+
+The author publishes a final version of the RFC and a last grace period of 14
+days is granted. People are asked to agree or disagree by commenting:
+
+ - +1 / LGTM: I support
+ - =0 / LGTM: I will live with it
+ - -1: I disagree with this proposal
+
+At least half of people with commit acces must express their voice with the
+keys above during this last call. We need to be sure that the RFC had been
+read by people committed to take care of the project, since it proposes an
+important change.
+
+When a positive consensus is reached, the RFC becomes effective. If not, the
+proposal is archived and the statu quo continues.
+
+
+** Decision Making: consensus
+
+It is expected from all contributors, and even more so from committers, to
+help build consensus and make decisions based on consensus. By using
+consensus, we are committed to finding solutions that everyone can live with.
+
+It implies that no decision is made against significant concerns and these
+concerns are actively resolved with proposals that work for everyone. A
+contributor, without or with commit access, wishing to block a proposal bears
+a special responsibility for finding alternatives, proposing ideas/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
+<https://www.seedsforchange.org.uk/consensus>.
+
+** Merging the outcome
+
+Once a consesus is made, a committer should do the following to merge the RFC:
+
+ 1. Fill in the remaining metadata in the RFC header, including links for the
+ original Debbugs submission.
+ 2. Commit everything.
+ 3. Announce the establishment of the RFC to all.
+
+** Template of RFC
+
+The structure of the RFC is captured by the template; see the file
+rfc/0000-template.txt. Please use Markdown as markup language.
+
+** Backward Compatibility
+
+None.
+
+** Forward compatibility
+
+The RFC process can be refined by further RFCs.
+
+** Drawbacks
+
+There is a risk that the additional process will hinder contribution more than
+it would help. We should stay alert that the process is only a way to help
+contribution, not an end in itself.
+
+Of course, group decision-making processes are difficult to manage.
+
+The ease of commenting may bring a slightly diminished signal-to-noise ratio
+in collected feedback, particularly on easily bike-shedded topics.
+
+** Open questions
+
+There are still questions regarding the desired scope of the process. While
+we want to ensure that changes which affect the users are well-considered, we
+certainly don't want the process to become unduly burdensome. This is a
+careful balance which will require care to maintain moving forward.
+
+* Unresolved questions

base-commit: 93e1586116f39a30ba1fcb67bd839a43533dfaf4
--
2.45.2
S
S
Simon Tournier wrote on 12 Dec 2024 20:47
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
87ed2cn0oq.fsf@gmail.com
Hi all,

Thanks Noé! I added you as co-supporter; someone definitively
required. ;-)

Thanks Steve for reaching me some weeks end ago.

Well, based on Noé’s v2, I polished some comments and sent v3; based on
what my follow up started weeks (months?) ago.


On Thu, 12 Dec 2024 at 19:14, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (15 lines)
> These are changes from the past that may long be forgotten by the time
> we read them. Perhaps we can abstract it a bit, like:
>
> - changing the <package> record type and/or its interfaces;
> - adding or removing a ‘guix’ sub-command;
> - changing the channel mechanism;
> - changing project 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.)
>
> This list seems redundant with and similar to that under “When To Follow
> This Process”; maybe just keep it in one place, under “When To Follow…”?

I think it helps to understand. Concrete examples always help, IMHO.

Therefore, I propose what your wording. Then, past examples where this
RFC process would have been helpful, I guess.

Toggle quote (4 lines)
>
> I would suggest a separate repo.

Bah since we are putting all there… When you see etc/ ;-)


Toggle quote (4 lines)
>> +** Decision making: consensus
>
> … and drop this.

I think it makes more sense to have the Decision Making as RFC and then
the manual refers to it, and not the converse. ;-)

Therefore, I would keep the section here. And once we are done, letting
the manual as-is, I would link to RFC.

What defines the Decision Making *is* RFC and not the manual. ;-)


Toggle quote (3 lines)
> Maybe we should define the role of “RFC editors” (or “RFC team”?), which
> would be the people responsible for doing those changes.

I’ve drop this “RFC teams“ or “RFC editors” because in my initial idea,
this is the aim of “co-supporter(s)”. See the relevant section; does it
need to be improved?


Toggle quote (9 lines)
>> +** Backward Compatibility
>> +
>> +None.
>> +
>> +** Forward compatibility
>
> I’m not sure what’s expected in these sections. Maybe “Compatibility
> Considerations” would be more appropriate?

Yes, maybe “Compatibility Consideration”. It needs to be in agreement
with the template.

Toggle quote (5 lines)
>> +* Unresolved questions
>
> I think these two sections in the context of this foundational document
> look a bit ridiculous. :-) But maybe that’s okay?

I think that the first RFC must respects what it asks to other RFC. ;-)

And if the consensus is not reached, we need a place to summarize the
unresolved discussion, no?


Again, thanks Noé and Steve for taking care of that!

Cheers,
simon
L
L
Ludovic Courtès wrote on 14 Dec 2024 11:06
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87v7vmo9yg.fsf_-_@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (12 lines)
>>> +** Decision making: consensus
>>
>> … and drop this.
>
> I think it makes more sense to have the Decision Making as RFC and then
> the manual refers to it, and not the converse. ;-)
>
> Therefore, I would keep the section here. And once we are done, letting
> the manual as-is, I would link to RFC.
>
> What defines the Decision Making *is* RFC and not the manual. ;-)

Earlier, I wrote:

Toggle quote (4 lines)
> I would add “General day-to-day contributions follow the regular
> [decision-making process] and [team organization].”, with references to
> the relevant sections of the manual.

Since (1) day-to-day contributions do not follow the RFC process and (2)
teams and consensus-based decision making are already defined (and went
through peer review), I think it makes more sense to build on these two
sections we already have.

Toggle quote (10 lines)
>>> +* Unresolved questions
>>
>> I think these two sections in the context of this foundational document
>> look a bit ridiculous. :-) But maybe that’s okay?
>
> I think that the first RFC must respects what it asks to other RFC. ;-)
>
> And if the consensus is not reached, we need a place to summarize the
> unresolved discussion, no?

I already mentioned it back in February, FWIW:

Anyway, no big deal, but it will certainly look strange eventually.

Ludo’.
L
L
Ludovic Courtès wrote on 14 Dec 2024 11:47
Re: [bug#74736] [PATCH v3] rfc: Add Request-For-Comment process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87h676mthk.fsf@gnu.org
Thanks for v3!

Some of my more superficial comments earlier this week remain
unaddressed:

• I think it should be Markdown, and in a separate repo.

• There are too many explicit references to Debbugs, which I think is
not future-proof.

I think the text itself needs more work to address and remove remaining
comments that appear in the body, to improve grammar and wording, and to
make it shorter (it’s way too long IMO). But that can come in a second
phase.

Questions/comments about the process that I overlooked before:

Toggle quote (4 lines)
> +The lifetime of an RFC is structured into the following recommended periods:
> +
> + submission (7d) ? comments (30–60d) ? last call (14d) ? withdrawn OR final

This diagram doesn’t show everything I think; for example…

Toggle quote (7 lines)
> +*** Submission (up to 7 days)
> +
> +The author submits their RFC proposal as a regular patch and look for
> +co-supporter(s). See 'Co-supporter' section.
> +
> +Once the RFC is co-supported, it marks the start of a discussion period.

… what happens when the submitter doesn’t find supporters in that
period? I’m guessing the RFC goes in “withdrawn” state?

The diagram should reflect that, and we can render it with Dot.

Toggle quote (14 lines)
> +*** Last call (up to 14 days)
> +
> +The author publishes a final version of the RFC and a last grace period of 14
> +days is granted. People are asked to agree or disagree by commenting:
> +
> + - +1 / LGTM: I support
> + - =0 / LGTM: I will live with it
> + - -1: I disagree with this proposal
> +
> +At least half of people with commit acces must express their voice with the
> +keys above during this last call. We need to be sure that the RFC had been
> +read by people committed to take care of the project, since it proposes an
> +important change.

I think committers here are mentioned as a simple way to express
membership and avoid infiltration, but it has the downside of ignoring
many members and giving committers a special privilege.

I propose this definition: anyone who is on a team (in ‘teams.scm’) is a
voting member*.

We can keep a quorum, but I think 50% of the voters is too ambitious;
maybe 25%?

This would become¹:

Once the final version is published, team members have 14 days to cast
one of the following votes about the RFC:

- Support (+1);
- Accept (0);
- Reject (-2).

Votes are cast by replying on the patch-tracking entry of the RFC.

The RFC is accepted if (1) at least 25% of the voting members cast a
vote, and (2) the sum of votes is non-negative. In other cases, the
RFC is withdrawn.

Thoughts?

Ludo’.


* We’ll have to create new teams and update them so we don’t forget
anyone, notably translators, sysadmins, graphics designers, and so on.

¹ Inspired by
N
N
Noé Lopez wrote on 22 Dec 2024 14:06
Re: [PATCH v3] rfc: Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
8734ifdfyn.fsf@xn--no-cja.eu
Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (4 lines)
> +** Timeline
> +
> +The lifetime of an RFC is structured into the following recommended periods:

What does recommended mean in this case? Do you mean that someone can
skip any period they want or reduce the time if consesus is reached or
something else?

Toggle quote (4 lines)
> +It moves to the last call period.
> +
> +*** Last call (up to 14 days)

There should be a lower limit.

Toggle quote (13 lines)
> +
> +The author publishes a final version of the RFC and a last grace period of 14
> +days is granted. People are asked to agree or disagree by commenting:
> +
> + - +1 / LGTM: I support
> + - =0 / LGTM: I will live with it
> + - -1: I disagree with this proposal
> +
> +At least half of people with commit acces must express their voice with the
> +keys above during this last call. We need to be sure that the RFC had been
> +read by people committed to take care of the project, since it proposes an
> +important change.

I would add that a person with commit access that does not vote counts
as +1 or =0. Though I doubt if a voting process like this is good for
consensus: if 5 people are for and 4 against it should not pass.

I like Ludo’s idea of using teams, but I fear that for some changes
people might not care enough to have even 25% of them vote.
N
N
Noé Lopez wrote on 22 Dec 2024 14:56
[PATCH v4 0/1] rfc: Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)(name . Noé Lopez)(address . noelopez@free.fr)
cover.1734875359.git.noelopez@free.fr
From: Noé Lopez <noelopez@free.fr>

Hi,

Here is a fourth version, I have changed to Markdown format using Pandoc, and
fixed some typos.

I dropped the template for now to ease the process. We can bring it back once
there is consensus on the main document.

I tried making a Graphviz diagram but I’m not convinced:
digraph "RFC Lifetime" {
submission[label=<Submission<br />7 days>]
comments[label=<Comments<br />30–60 days>]
last_call[label=<Last call<br />14 days>]
withdrawn[label=Withdrawn, shape=rectangle]
final[label=Final, shape=rectangle]
submission -> comments
comments -> last_call
last_call -> withdrawn
last_call -> final
withdrawn -> submission [label="New version"]
comments -> withdrawn
}

Good evening and holidays,
Noé

Simon Tournier (1):
rfc: Add Request-For-Comment process.

rfc/0001-rfc-process.md | 254 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 254 insertions(+)
create mode 100644 rfc/0001-rfc-process.md


base-commit: 1affd2b5aa7f5467a44cf757c4fc0c6956d3f3c9
--
2.46.0
N
N
Noé Lopez wrote on 22 Dec 2024 14:56
[PATCH v4 1/1] rfc: Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)(name . Noé Lopez)(address . noe@xn--no-cja.eu)
aa5f6bcd5ebf3ddafc6f56155a23bd0c4223db8b.1734875359.git.noelopez@free.fr
From: Simon Tournier <zimon.toutoune@gmail.com>

* rfc/0001-rfc-process.txt: New file.

Co-authored-by: Noé Lopez <noe@xn--no-cja.eu>
Change-Id: Ide88e70dc785ab954ccb42fb043625db12191208
---
rfc/0001-rfc-process.md | 254 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 254 insertions(+)
create mode 100644 rfc/0001-rfc-process.md

Toggle diff (262 lines)
diff --git a/rfc/0001-rfc-process.md b/rfc/0001-rfc-process.md
new file mode 100644
index 0000000000..7db420c824
--- /dev/null
+++ b/rfc/0001-rfc-process.md
@@ -0,0 +1,254 @@
+- Issue: 66844
+- Status: pending
+- Supporter: Simon Tournier
+- Co-supporters: Noé Lopez
+
+# Summary
+
+The “RFC” (request for comments) process is intended to provide a
+consistent and structured path for major changes and features to enter
+the Guix project, so that all stakeholders can make decisions
+collectively and be confident about the direction it is evolving in.
+
+# Motivation
+
+The current way that we add new features to Guix has been good for early
+development, but it is starting to show its limits as Guix becomes a
+broadly used system with many contributors. Changes might be slowed down
+by the lack of structure to acquire consensus, lack of a central place
+to consult contributors and users, and lack of clear deadlines. This is
+a proposal for a more principled RFC process to make it a more integral
+part of the overall development process, and one that is followed
+consistently to introduce substantial features.
+
+There are a number of changes that are significant enough that they
+could benefit from wider community consensus before being introduced.
+Either because they introduce new concepts, big changes or are
+controversial enough that not everybody will consent on the direction to
+take.
+
+Therefore, the purpose of this RFC is to introduce a process that allows
+to bring the discussion upfront and strengthen decisions. This RFC is
+used to bootstrap the process and further RFCs can be used to refine the
+process.
+
+It covers significant changes, where “significant” means any change that
+could only be reverted at a high cost, or any change with the potential
+to disrupt user scripts and programs or user workflows. Examples
+include:
+
+- changing the \<package\> record type and/or its interfaces;
+- adding or removing a 'guix' sub-command;
+- changing the channel mechanism;
+- changing project 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.)
+
+For concrete past examples where this RFC process would be helpful:
+
+- Removing input labels from package definitions, #49169
+- Add \'guix shell\' to subsume \'guix environment\', #50960
+- Trustable \"guix pull\", #22883
+- Add \"Deprecation Policy\", #72840
+- Collaboration via team and branch-features, several places over all
+ the mailing lists.
+
+# Detailed design
+
+## When to follow this process
+
+This process is followed when one intends to make “substantial”
+changes to the Guix project. What constitutes a “substantial” change
+is evolving based on community norms, but may include the following.
+
+- 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
+- Governance and changes to the way we collaborate
+
+Certain changes do not require an RFC:
+
+- Adding, updating packages, removing outdated packages
+- Fixing security updates and bugs that don’t break interfaces
+
+For general day-to-day contributions, please follow the regular process
+as described by manual sections “Submitting Patches”, “Reviewing the
+Work of Others”, “Teams” and “Making Decisions”.
+
+A patch submission that contains any of the aforementioned substantial
+changes may be asked to first submit a RFC.
+
+## How the process works
+
+1. Clone <https://git.savannah.gnu.org/git/guix.git>
+2. Copy rfc/0000-template.org to rfc/00XY-good-name.org where good-name
+ is descriptive but not too long and XY increments
+3. Fill RFC
+4. Submit to guix-patches@gnu.org
+5. Announce your RFC to guix-devel@gnu.org
+
+Make sure the proposal is as well-written as you would expect the final
+version of it to be. It does not mean that all the subtilities must be
+considered at this point since that is the aim of review discussion. It
+means that the RFC process is not a prospective brainstorming and the
+proposal formalize an idea for making it happen.
+
+The submission of a proposal does not require an implementation.
+However, to improve the chance of a successful RFC, it is recommended to
+have an idea for implementing it. If an implementation is attached to
+the detailed design, it might help the discussion.
+
+At this point, at least one other person must volunteer to be
+“co-supporter”. The aim is to improve the chances that the RFC is both
+desired and likely to be implemented.
+
+Once supporter and co-supporter(s) are committed in the RFC process, the
+review discussion starts. Publicizing of the RFC on the project’s
+mailing list named guix-devel is mandatory, and on other main
+communication channels is highly recommended.
+
+After a number of rounds of review, the discussion should settle and a
+general consensus should emerge. Please follow the “Decision Process”
+and “Timeline” sections.
+
+A successful RFC is not a rubber stamp, and in particular still does not
+mean the feature will ultimately be merged; it does mean that in
+principle all the participants have agreed to the feature and are
+amenable to merging it.
+
+An unsuccessful RFC is **not** a judgment on the value of the work, so a
+refusal should rather be interpreted as “let's discuss again with a
+different angle”. The last state of an unsuccessful RFC is archived
+under the directory rfc/withdrawn/.
+
+## Co-supporter
+
+A co-supporter is a contributor sufficiently familiar with the project's
+practices, hence it is recommended, but not mandatory, to be a
+contributor with commit access. The co-supporter helps the supporter,
+they are both charged with keeping the proposal moving through the
+process. The co-supporter role is to help the proposal supporter by
+being the timekeeper and helps in pushing forward until process
+completion.
+
+The co-supporter doesn’t necessarily have to agree with all the points
+of the RFC but should generally be satisfied that the proposed additions
+are a good thing for the community.
+
+## Timeline
+
+The lifetime of an RFC is structured into the following recommended
+periods:
+
+submission (7d) ? comments (30--60d) ? last call (14d) ? withdrawn OR
+final
+
+The author may withdraw their RFC proposal at any time; and it might be
+submitted again.
+
+### Submission (up to 7 days)
+
+The author submits their RFC proposal as a regular patch and look for
+co-supporter(s). See “Co-supporter” section.
+
+Once the RFC is co-supported, it marks the start of a discussion period.
+
+### Comment (at least 30 days, up to 60 days)
+
+The comment period starts once the author publishes their RFC to
+guix-devel, then the proposal is freely discussed for a period of at
+least 30 days. It is up to the supporter and co-supporter(s) to ensure
+that sufficient discussion is solicited. Please make sure that all have
+the time and space for expressing their comments. The proposal is about
+significant changes, thus more opinions is better than less.
+
+The author is encouraged to publish updated versions of their RFC at any
+point during the discussion period.
+
+Once the discussion goes stale or after 60 days, the author must
+summarize the state of the conversation and keep the final version.
+
+It moves to the last call period.
+
+### Last call (up to 14 days)
+
+The author publishes a final version of the RFC and a last grace period
+of 14 days is granted. People are asked to agree or disagree by
+commenting:
+
+- +1 / LGTM: I support
+- =0 / LGTM: I will live with it
+- -1: I disagree with this proposal
+
+At least half of people with commit access must express their voice with
+the keys above during this last call. We need to be sure that the RFC
+had been read by people committed to take care of the project, since it
+proposes an important change.
+
+When a positive consensus is reached, the RFC becomes effective. If not,
+the proposal is archived and the status quo continues.
+
+## Decision making: consensus
+
+It is expected from all contributors, and even more so from committers,
+to help build consensus and make decisions based on consensus. By using
+consensus, we are committed to finding solutions that everyone can live
+with.
+
+It implies that no decision is made against significant concerns and
+these concerns are actively resolved with proposals that work for
+everyone. A contributor, without or with commit access, wishing to block
+a proposal bears a special responsibility for finding alternatives,
+proposing ideas/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
+<https://www.seedsforchange.org.uk/consensus>.
+
+## Merging the outcome
+
+Once a consesus is made, a committer should do the following to merge
+the RFC:
+
+1. Fill in the remaining metadata in the RFC header, including links
+ for the original submission.
+2. Commit everything.
+3. Announce the establishment of the RFC to all.
+
+## Template of RFC
+
+The structure of the RFC is captured by the template; see the file
+rfc/0000-template.txt. Please use Markdown as markup language.
+
+## Backward compatibility
+
+None.
+
+## Forward compatibility
+
+The RFC process can be refined by further RFCs.
+
+## Drawbacks
+
+There is a risk that the additional process will hinder contribution
+more than it would help. We should stay alert that the process is only a
+way to help contribution, not an end in itself.
+
+Of course, group decision-making processes are difficult to manage.
+
+The ease of commenting may bring a slightly diminished signal-to-noise
+ratio in collected feedback, particularly on easily bike-shedded topics.
+
+## Open questions
+
+There are still questions regarding the desired scope of the process.
+While we want to ensure that changes which affect the users are
+well-considered, we certainly don’t want the process to become unduly
+burdensome. This is a careful balance which will require care to
+maintain moving forward.
+
+# Unresolved questions
--
2.46.0
L
L
Ludovic Courtès wrote on 23 Dec 2024 15:42
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Noé Lopez)(address . noe@xn--no-cja.eu)
87ikraea0f.fsf_-_@gnu.org
Hi Noé,

Thanks for this new version.

Noé Lopez <noe@noé.eu> skribis:

Toggle quote (7 lines)
> +### Submission (up to 7 days)
> +
> +The author submits their RFC proposal as a regular patch and look for
> +co-supporter(s). See “Co-supporter” section.
> +
> +Once the RFC is co-supported, it marks the start of a discussion period.

[...]

Toggle quote (18 lines)
> +### Last call (up to 14 days)
> +
> +The author publishes a final version of the RFC and a last grace period
> +of 14 days is granted. People are asked to agree or disagree by
> +commenting:
> +
> +- +1 / LGTM: I support
> +- =0 / LGTM: I will live with it
> +- -1: I disagree with this proposal
> +
> +At least half of people with commit access must express their voice with
> +the keys above during this last call. We need to be sure that the RFC
> +had been read by people committed to take care of the project, since it
> +proposes an important change.
> +
> +When a positive consensus is reached, the RFC becomes effective. If not,
> +the proposal is archived and the status quo continues.

It seems unchanged compared to v3. WDYT of my comments, suggestions,
and proposed wording:


?

I think we should now make sure we reach consensus on the timeline, and
in particular:

1. on the voting process;

2. on the submission -> withdrawn transition, in case nobody supports
the RFC.

Once we have that, we can fine-tune the language and hopefully be done
within a couple of weeks.

I like the Dot graph you submitted! Here’s an updated version, with a
new submission -> withdrawn arrow (as proposed in the comment above) and
with hopefully clearer names (in particular “Voting Period” rather than
“Last call”):

Toggle snippet (19 lines)
digraph "RFC Timeline" {
submission[label=<Submission Period<br />7 days>]
comments[label=<Discussion Period<br />30–60 days>]
last_call[label=<Voting Period<br />14 days>]
withdrawn[label=Withdrawn, shape=rectangle]
final[label=Final, shape=rectangle]
submission -> comments
submission -> withdrawn
comments -> last_call
last_call -> withdrawn
last_call -> final
withdrawn -> submission [label="New version"]
comments -> withdrawn
}

Thoughts?

Thanks for getting the ball rolling!

Ludo’.
S
S
Simon Tournier wrote on 23 Dec 2024 18:33
(name . Ludovic Courtès)(address . ludo@gnu.org)
877c7qe243.fsf_-_@gmail.com
Hi,

On Mon, 23 Dec 2024 at 15:42, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (25 lines)
>> +### Last call (up to 14 days)
>> +
>> +The author publishes a final version of the RFC and a last grace period
>> +of 14 days is granted. People are asked to agree or disagree by
>> +commenting:
>> +
>> +- +1 / LGTM: I support
>> +- =0 / LGTM: I will live with it
>> +- -1: I disagree with this proposal
>> +
>> +At least half of people with commit access must express their voice with
>> +the keys above during this last call. We need to be sure that the RFC
>> +had been read by people committed to take care of the project, since it
>> +proposes an important change.
>> +
>> +When a positive consensus is reached, the RFC becomes effective. If not,
>> +the proposal is archived and the status quo continues.
>
> It seems unchanged compared to v3. WDYT of my comments, suggestions,
> and proposed wording:
>
> https://issues.guix.gnu.org/74736#9
>
> ?

Quoting:

> I think committers here are mentioned as a simple way to express
> membership and avoid infiltration, but it has the downside of ignoring
> many members and giving committers a special privilege.

It’s not about infiltration, it’s about to be sure that people agree and
do not overlook.

> I propose this definition: anyone who is on a team (in ‘teams.scm’) is a
> voting member*.

I agree.

> We can keep a quorum, but I think 50% of the voters is too ambitious;
> maybe 25%?

Well, I picked 50% almost randomly. ;-) Somehow, I do not have a strong
opinion. My concern is only to be sure that we have a consensus and not
something falling between the cracks.

> This would become¹:
>
> Once the final version is published, team members have 14 days to cast
> one of the following votes about the RFC:
>
> - Support (+1);
> - Accept (0);
> - Reject (-2).
>
> Votes are cast by replying on the patch-tracking entry of the RFC.
>
> The RFC is accepted if (1) at least 25% of the voting members cast a
> vote, and (2) the sum of votes is non-negative. In other cases, the
> RFC is withdrawn.

For me, if we have only one minus, it means we do not have consensus.
Therefore, the person who cannot live with the proposal must be
proactive in finding a solution that we all agree on.

In other words, the numbers are not for being summed, the aim is to
capture:

- Support
- I can with with it
- I cannot live with it

BTW, I do not like the word “Reject” and I prefer “Disagree” or even
better “I cannot live with it”.


Toggle quote (5 lines)
> I think we should now make sure we reach consensus on the timeline, and
> in particular:
>
> 1. on the voting process;

Maybe I misunderstand something. From my point, we do not “vote”
because we are trying to work using consensus. When I proposed +1/0/-1
my aim was not to “vote“ but to be sure that the proposal is not
overlooked.

Therefore, instead of “Voting Period”, I would prefer “Replying Period”
or something like that.

WDYT?

Cheers,
simon
S
S
Simon Tournier wrote on 23 Dec 2024 18:58
(name . Ludovic Courtès)(address . ludo@gnu.org)
8734iee0y1.fsf_-_@gmail.com
Hi Ludo,

I agree (more than less) with all the other comments except this
one. :-)


Toggle quote (23 lines)
>>>> +** Decision making: consensus
>>>
>>> … and drop this.
>>
>> I think it makes more sense to have the Decision Making as RFC and then
>> the manual refers to it, and not the converse. ;-)
>>
>> Therefore, I would keep the section here. And once we are done, letting
>> the manual as-is, I would link to RFC.
>>
>> What defines the Decision Making *is* RFC and not the manual. ;-)
>
> Earlier, I wrote:
>
>> I would add “General day-to-day contributions follow the regular
>> [decision-making process] and [team organization].”, with references to
>> the relevant sections of the manual.
>
> Since (1) day-to-day contributions do not follow the RFC process and (2)
> teams and consensus-based decision making are already defined (and went
> through peer review), I think it makes more sense to build on these two
> sections we already have.

I still think the RFC process must contain its own “Decision Making”
process and must not refer to external parts that could be changed
without going via this RFC process.

Somehow, from my point of view, it makes more sense to encode “Decision
Making” or “Commit Access” or “Teams” via future RFCs than via sections
in the manual. And we need to bootstrap the “Decision Making”, no?

For sure, I agree that we do not build from nothing. To me, this very
first RFC makes explicit the structure we already have. Maybe I
misunderstand something, IMHO, we should avoid the temptation to say:
Hey we already have a way to collaborate thus let implicitly rely on.

Hum? ? Somehow, I would find the RFC process incomplete without an
explicit self-contained “Decision Making” section.

What do you think? What do people think?

Cheers,
simon
L
L
Ludovic Courtès wrote on 26 Dec 2024 12:15
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87frmay9sw.fsf@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (13 lines)
>> Since (1) day-to-day contributions do not follow the RFC process and (2)
>> teams and consensus-based decision making are already defined (and went
>> through peer review), I think it makes more sense to build on these two
>> sections we already have.
>
> I still think the RFC process must contain its own “Decision Making”
> process and must not refer to external parts that could be changed
> without going via this RFC process.
>
> Somehow, from my point of view, it makes more sense to encode “Decision
> Making” or “Commit Access” or “Teams” via future RFCs than via sections
> in the manual. And we need to bootstrap the “Decision Making”, no?

I agree that sections in the manual are suboptimal. That is why I
proposed moving contributing.texi to a document of its own, which would
sit next to the RFC process document. I don’t consider it a
prerequisite though.

Toggle quote (8 lines)
> For sure, I agree that we do not build from nothing. To me, this very
> first RFC makes explicit the structure we already have. Maybe I
> misunderstand something, IMHO, we should avoid the temptation to say:
> Hey we already have a way to collaborate thus let implicitly rely on.
>
> Hum? ? Somehow, I would find the RFC process incomplete without an
> explicit self-contained “Decision Making” section.

What I’d like to stress is that decision making also happens outside the
RFC process; not everything will go through the RFC process. So we’ll
need to have that manual section for day-to-day contributions anyway.

But yeah, maybe we can have one specific to the RFC document, too.

Ludo’.
L
L
Ludovic Courtès wrote on 26 Dec 2024 12:28
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87ttaqwun1.fsf@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (34 lines)
>>> +### Last call (up to 14 days)
>>> +
>>> +The author publishes a final version of the RFC and a last grace period
>>> +of 14 days is granted. People are asked to agree or disagree by
>>> +commenting:
>>> +
>>> +- +1 / LGTM: I support
>>> +- =0 / LGTM: I will live with it
>>> +- -1: I disagree with this proposal
>>> +
>>> +At least half of people with commit access must express their voice with
>>> +the keys above during this last call. We need to be sure that the RFC
>>> +had been read by people committed to take care of the project, since it
>>> +proposes an important change.
>>> +
>>> +When a positive consensus is reached, the RFC becomes effective. If not,
>>> +the proposal is archived and the status quo continues.
>>
>> It seems unchanged compared to v3. WDYT of my comments, suggestions,
>> and proposed wording:
>>
>> https://issues.guix.gnu.org/74736#9
>>
>> ?
>
> Quoting:
>
> > I think committers here are mentioned as a simple way to express
> > membership and avoid infiltration, but it has the downside of ignoring
> > many members and giving committers a special privilege.
>
> It’s not about infiltration, it’s about to be sure that people agree and
> do not overlook.

Right. (Though I think infiltration is also a valid concern.)

Toggle quote (12 lines)
> > I propose this definition: anyone who is on a team (in ‘teams.scm’) is a
> > voting member*.
>
> I agree.
>
> > We can keep a quorum, but I think 50% of the voters is too ambitious;
> > maybe 25%?
>
> Well, I picked 50% almost randomly. ;-) Somehow, I do not have a strong
> opinion. My concern is only to be sure that we have a consensus and not
> something falling between the cracks.

Yes, agreed.

Toggle quote (19 lines)
> > This would become¹:
> >
> > Once the final version is published, team members have 14 days to cast
> > one of the following votes about the RFC:
> >
> > - Support (+1);
> > - Accept (0);
> > - Reject (-2).
> >
> > Votes are cast by replying on the patch-tracking entry of the RFC.
> >
> > The RFC is accepted if (1) at least 25% of the voting members cast a
> > vote, and (2) the sum of votes is non-negative. In other cases, the
> > RFC is withdrawn.
>
> For me, if we have only one minus, it means we do not have consensus.
> Therefore, the person who cannot live with the proposal must be
> proactive in finding a solution that we all agree on.

Yes.

Toggle quote (10 lines)
> In other words, the numbers are not for being summed, the aim is to
> capture:
>
> - Support
> - I can with with it
> - I cannot live with it
>
> BTW, I do not like the word “Reject” and I prefer “Disagree” or even
> better “I cannot live with it”.

I like the spirit of it, and I would propose exactly that if people were
to meet physically at a meeting.

The problem I see here is that we’re online, all communication is
asynchronous, sometimes concise, sometimes verbose, sometimes frequent,
sometimes rare, participants may be friends or strangers, and yet we
need to come to a clear shared understanding of whether the RFC is
“accepted” or “withdrawn”.

If we keep it too fuzzy, I fear we might be unable to decide what to do.

Toggle quote (10 lines)
>> I think we should now make sure we reach consensus on the timeline, and
>> in particular:
>>
>> 1. on the voting process;
>
> Maybe I misunderstand something. From my point, we do not “vote”
> because we are trying to work using consensus. When I proposed +1/0/-1
> my aim was not to “vote“ but to be sure that the proposal is not
> overlooked.

I’m all for consensus-based decision making, as you know. My concern is
making sure a clear and unambiguous decision is made at the end of the
RFC period.

The risk I see is that of the final withdrawn/accepted decision to be
perceived as an arbitrary choice by the people in power (RFC editors,
long-timers, etc.), or that of being unable to make that final decision.
It’s a risk that perhaps exists only in the most contentious cases, but
if we can use vote as a tool to avoid it, it’s worth considering.

WDYT?

Ludo’.
N
N
Noé Lopez wrote on 29 Dec 2024 19:31
(name . Ludovic Courtès)(address . ludo@gnu.org)
87wmfifii5.fsf@xn--no-cja.eu
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (40 lines)
> Hi Noé,
>
> Thanks for this new version.
>
> Noé Lopez <noe@noé.eu> skribis:
>
>> +### Submission (up to 7 days)
>> +
>> +The author submits their RFC proposal as a regular patch and look for
>> +co-supporter(s). See “Co-supporter” section.
>> +
>> +Once the RFC is co-supported, it marks the start of a discussion period.
>
> [...]
>
>> +### Last call (up to 14 days)
>> +
>> +The author publishes a final version of the RFC and a last grace period
>> +of 14 days is granted. People are asked to agree or disagree by
>> +commenting:
>> +
>> +- +1 / LGTM: I support
>> +- =0 / LGTM: I will live with it
>> +- -1: I disagree with this proposal
>> +
>> +At least half of people with commit access must express their voice with
>> +the keys above during this last call. We need to be sure that the RFC
>> +had been read by people committed to take care of the project, since it
>> +proposes an important change.
>> +
>> +When a positive consensus is reached, the RFC becomes effective. If not,
>> +the proposal is archived and the status quo continues.
>
> It seems unchanged compared to v3. WDYT of my comments, suggestions,
> and proposed wording:
>
> https://issues.guix.gnu.org/74736#9
>
> ?

As Simon said, I think a vote goes against the principle of
consensus. Maybe we can take inspiration from the wayland protocol?

If a stakeholder thinks the RFC is complete and satisfactory, they ACK
it. If the RFC needs changes, they simply comment and if they are
against it they NACK it.

Quoting Mike Blumenkrantz:
Toggle quote (7 lines)
>A NACK for an experimental protocol carries some variation on the following meanings:
>This idea is broken and cannot work.
>OR
>This approach is fundamentally against the core principles or spirit of Wayland.
>A NACK must be well-justified, as determined by members of the
>governance team, who are assumed to be acting in good faith for the best interests of the project.

In this way, we can say that an RFC needs a specific amount of ACKs and
no NACKs to be merged, ensuring everybody is at least fine with it and
the stakeholders are interested enough to ACK it.

Toggle quote (39 lines)
>
> I think we should now make sure we reach consensus on the timeline, and
> in particular:
>
> 1. on the voting process;
>
> 2. on the submission -> withdrawn transition, in case nobody supports
> the RFC.
>
> Once we have that, we can fine-tune the language and hopefully be done
> within a couple of weeks.
>
> I like the Dot graph you submitted! Here’s an updated version, with a
> new submission -> withdrawn arrow (as proposed in the comment above) and
> with hopefully clearer names (in particular “Voting Period” rather than
> “Last call”):
>
> --8<---------------cut here---------------start------------->8---
> digraph "RFC Timeline" {
> submission[label=<Submission Period<br />7 days>]
> comments[label=<Discussion Period<br />30–60 days>]
> last_call[label=<Voting Period<br />14 days>]
> withdrawn[label=Withdrawn, shape=rectangle]
> final[label=Final, shape=rectangle]
>
> submission -> comments
> submission -> withdrawn
> comments -> last_call
> last_call -> withdrawn
> last_call -> final
>
> withdrawn -> submission [label="New version"]
>
> comments -> withdrawn
> }
> --8<---------------cut here---------------end--------------->8---
>
> Thoughts?

I agree with that timeline, but I would have just “forgotten” an RFC
that doesn’t pass the submission period, since that would mean it is not
good enough to be discussed. It can just be kept in the mail archives
like any other unfinished idea.

A withdrawn RFC would mean keeping it in the rfc/withdrawn directory.

This was also why I had proposed the idea of keeping a set of available
co-supporters, since any well written RFC should be able to get past the
submission period even if you can’t find someone to co-support.

Good evening,
Noé
L
L
Ludovic Courtès wrote on 30 Dec 2024 12:03
(name . Noé Lopez)(address . noe@xn--no-cja.eu)
87seq5tou6.fsf_-_@gnu.org
Hi Noé,

Noé Lopez <noe@noé.eu> skribis:

Toggle quote (1 lines)
>> It seems unchanged compared to v3. WDYT of my comments, suggestions,
.> and proposed wording:
Toggle quote (8 lines)
>>
>> https://issues.guix.gnu.org/74736#9
>>
>> ?
>
> As Simon said, I think a vote goes against the principle of
> consensus.

OK. As I wrote in my reply to Simon, my thought here was that “voting”*
would give a clear and unambiguous way, not subject to interpretation,
to decide whether the RFC is withdrawn: it’s easier to add numbers than
to determine whether “a positive consensus is reached” (current
wording).

But I don’t know, I guess that’s an “I will live with it” from me on
this one. :-)

Two other issue I raised was the quorum: Simon proposed half of the
committers; I propose 25% of team members. Thoughts?

* Maybe “voting” is misleading; “deliberation” might be clearer.

Toggle quote (3 lines)
>> 2. on the submission -> withdrawn transition, in case nobody supports
>> the RFC.

[...]

Toggle quote (7 lines)
> I agree with that timeline, but I would have just “forgotten” an RFC
> that doesn’t pass the submission period, since that would mean it is not
> good enough to be discussed. It can just be kept in the mail archives
> like any other unfinished idea.
>
> A withdrawn RFC would mean keeping it in the rfc/withdrawn directory.

Oh right, forgotten/dismissed seems more appropriate than withdrawn
here.

Anyway, I think we should aim for finalization of v1 of the RFC process
by, say, Jan. 15th. I will dedicate some time to tweak the wording, and
then we can call it a thing.

(A bit sad that it’s just the three of us talking, we wouldn’t have the
quorum here…)

Ludo’.
N
N
Noé Lopez wrote on 30 Dec 2024 12:58
(name . Ludovic Courtès)(address . ludo@gnu.org)
875xn14c21.fsf@xn--no-cja.eu
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (7 lines)
> OK. As I wrote in my reply to Simon, my thought here was that “voting”*
> would give a clear and unambiguous way, not subject to interpretation,
> to decide whether the RFC is withdrawn: it’s easier to add numbers than
> to determine whether “a positive consensus is reached” (current
> wording).
>

This is why an ACK/NACK system works great in my opinion: you send “ACK”
or “NACK” litteraly so your opinion is clear. And you can just count
the number of each, without implying a vote.

Toggle quote (7 lines)
> But I don’t know, I guess that’s an “I will live with it” from me on
> this one. :-)
>
> Two other issue I raised was the quorum: Simon proposed half of the
> committers; I propose 25% of team members. Thoughts?
>

I don’t have the experience to judge, but I would just do “as long as no
one is against it its good”.

The reason is that I’m afraid that people might just not participate
because they are fine with an RFC or don’t care, and so it would just
get stuck there.

If you look at this RFC, we are four participants, how many will we get
after the finalization?

Half of the committers is 25 people (based on .guix-authorizations), and
a quarter of the team members is 10. Personnally, I have trouble
imagining that this amount of people will come to send a mail to the
RFC.

Toggle quote (22 lines)
> * Maybe “voting” is misleading; “deliberation” might be clearer.
>
>>> 2. on the submission -> withdrawn transition, in case nobody supports
>>> the RFC.
>
> [...]
>
>> I agree with that timeline, but I would have just “forgotten” an RFC
>> that doesn’t pass the submission period, since that would mean it is not
>> good enough to be discussed. It can just be kept in the mail archives
>> like any other unfinished idea.
>>
>> A withdrawn RFC would mean keeping it in the rfc/withdrawn directory.
>
> Oh right, forgotten/dismissed seems more appropriate than withdrawn
> here.
>
> Anyway, I think we should aim for finalization of v1 of the RFC process
> by, say, Jan. 15th. I will dedicate some time to tweak the wording, and
> then we can call it a thing.
>

Good idea! I’ll be waiting for your v5 then. And then I can bring
back the RFC template.

Toggle quote (4 lines)
> (A bit sad that it’s just the three of us talking, we wouldn’t have the
> quorum here…)
>

Agreed.

Lastly, do we want to move the RFCs to a separate git repository?

Have a nice day,
Noé
S
S
Simon Tournier wrote on 31 Dec 2024 16:23
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87ldvvzxiu.fsf@gmail.com
Hi Ludo,

On Thu, 26 Dec 2024 at 12:28, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (41 lines)
>> In other words, the numbers are not for being summed, the aim is to
>> capture:
>>
>> - Support
>> - I can with with it
>> - I cannot live with it
>>
>> BTW, I do not like the word “Reject” and I prefer “Disagree” or even
>> better “I cannot live with it”.
>
> I like the spirit of it, and I would propose exactly that if people were
> to meet physically at a meeting.
>
> The problem I see here is that we’re online, all communication is
> asynchronous, sometimes concise, sometimes verbose, sometimes frequent,
> sometimes rare, participants may be friends or strangers, and yet we
> need to come to a clear shared understanding of whether the RFC is
> “accepted” or “withdrawn”.
>
> If we keep it too fuzzy, I fear we might be unable to decide what to do.
>
>>> I think we should now make sure we reach consensus on the timeline, and
>>> in particular:
>>>
>>> 1. on the voting process;
>>
>> Maybe I misunderstand something. From my point, we do not “vote”
>> because we are trying to work using consensus. When I proposed +1/0/-1
>> my aim was not to “vote“ but to be sure that the proposal is not
>> overlooked.
>
> I’m all for consensus-based decision making, as you know. My concern is
> making sure a clear and unambiguous decision is made at the end of the
> RFC period.
>
> The risk I see is that of the final withdrawn/accepted decision to be
> perceived as an arbitrary choice by the people in power (RFC editors,
> long-timers, etc.), or that of being unable to make that final decision.
> It’s a risk that perhaps exists only in the most contentious cases, but
> if we can use vote as a tool to avoid it, it’s worth considering.

As you wrote in [1], I think we have the same concern but we have a
different idea behind the same “voting” word. Instead I agree, it’s a
deliberation period to be sure that the consensus reaches the quorum
(e.g., 25% of the all team members).

Somehow, +1/0/-1 seems another way to express the exact same idea for
the approval statuses (e.g., see Wayland [2]):

+ ACK, or “acknowledged”,
meaning that the member supports in principle
+ NOPP, or “no opposition”,
meaning that the member is not opposed in principle
+ NACK, or “negative acknowledgement”
meaning that the member is opposed in principle.

which reads:

- Support +1 ACK Awesome!
- I can with with it 0 NOPP LGTM
- I cannot live with it -1 NACK WDYT about…


The last column is how we are collaborating over all the mailing lists
since years.


Again, if someone wants to “block“ the RFC, then the blocker must be
active in proposing an alternative and/or explain with details why the
status quo is preferable.

In the other words, I disagree to add numbers: how many ’Support’ against
‘I cannot live with it’? 1 ’Support’ vs 2 ’I cannot live with it’? Why
not 1 vs 3? Or more? Or less?

However, I agree that consensus might scale poorly and might outcome
some blocked situations. That’s why ‘Decision making: consensus’ must
be included in the process itself and carefully worded. :-) For these
potential blocked situations, the last word is about maintainers.


Well, a “positive consensus is reached” if after the “Deliberation
Period“, we have 25% of all the members of all the teams expressing
either ’Support’ or either ’I can live with it’. If after this period,
we have only one ’I cannot live with it’, then the RFC is ’dismissed’.

Please note that ’I cannot live with it’ implies an active friendly
discussion before the end of the “Deliberation Period”. In other words,
I cannot sleep and the day before the “Deliberation Period” just raise:
Hey, no ’I cannot live with it’.

WDYT?

Well, I will try to clarify the proposal in the coming days in order to
remove the “too fuzzy” (being active, being blocker, etc.)

Cheers,
simon


1: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
Ludovic Courtès <ludo@gnu.org>
Mon, 30 Dec 2024 12:03:29 +0100
id:87seq5tou6.fsf_-_@gnu.org

2:
S
S
Simon Tournier wrote on 3 Jan 19:14 +0100
[PATCH v5] rfc: Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
ba6a719d836bb717d72e42688ba7592e1c19ec4c.1735927931.git.zimon.toutoune@gmail.com
* rfc/0001-rfc-process.md: New file.
* rfc/0000-template.md: New file.

Co-authored-by: Noé Lopez <noe@xn--no-cja.eu>
Change-Id: Ide88e70dc785ab954ccb42fb043625db12191208
---
rfc/0000-template.md | 59 +++++++++
rfc/0001-rfc-process.md | 257 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 316 insertions(+)
create mode 100644 rfc/0000-template.md
create mode 100644 rfc/0001-rfc-process.md

Toggle diff (332 lines)
diff --git a/rfc/0000-template.md b/rfc/0000-template.md
new file mode 100644
index 0000000000..a3913335ad
--- /dev/null
+++ b/rfc/0000-template.md
@@ -0,0 +1,59 @@
+title: <The meaningful name of the proposal>
+Issue: <number assigned by Debbugs>
+Status: <pending|successful|withdrawn|deprecated>
+Supporter: <Your Name>
+Co-supporter(s): <Some> <Names>
+date: <date when the process starts>
+---
+
+# Summary
+
+A one-paragraph explanation. Main sales pitch.
+
+# Motivation
+
+Describe the problem·s this RFC attempts to address as clearly as possible and
+optionally give an example. Explain how the status quo is insufficient or not
+ideal.
+
+# Detail Design
+
+Main part. The sections answers What are the tradeoffs of this proposal
+compared to status quo or potential alternatives? Explain details, corner
+cases, provide examples. Explain it so that someone familiar can understand.
+
+It is best to exemplify, contrived example too. If the Motivation section
+describes something that is hard to do without this proposal, this is a good
+place to show how easy that thing is to do with the proposal.
+
+## The Cost Of Reverting
+
+Will your proposed change cause a behaviour change? Assess the expected
+impact on existing code on the following scale:
+
+0. No breakage
+1. Breakage only in extremely rare cases (exotic or unknown cases)
+2. Breakage in rare cases (user living in cutting-edge)
+3. Breakage in common cases
+
+Explain why the benefits of the change outweigh the costs of breakage.
+Describe the migration path. Consider specifying a compatibility warning for
+one or more releases. Give examples of error that will be reported for
+previously-working cases; do they make it easy for users to understand what
+needs to change and why?
+
+How will your proposed change evolve with time? What is the cost of changing
+the approach later?
+
+The aim is to explicitely consider beforehand potential Compatibility issues.
+
+# Drawbacks or Open Questions
+
+At submitting time, be upfront and trust that the community will help.
+
+At the end of the process, this section will be empty. If not, please be
+explicit with the known issues by adding a dedicated subsection under Detail
+design.
+
+The aim here is to ease when revisiting the topic. It will help to grasp the
+essentials and invite to read all the discussion.
diff --git a/rfc/0001-rfc-process.md b/rfc/0001-rfc-process.md
new file mode 100644
index 0000000000..adb5365d73
--- /dev/null
+++ b/rfc/0001-rfc-process.md
@@ -0,0 +1,257 @@
+title: Request-For-Comment process
+Issue: 66844
+Status: pending
+Supporter: Simon Tournier
+Co-supporters: Noé Lopez
+date: 2023-10-31
+---
+
+# Summary
+
+The “RFC” (request for comments) process is intended to provide a consistent
+and structured path for major changes to enter the Guix project, so that all
+stakeholders can make decisions collectively and be confident about the
+direction it is evolving in.
+
+# Motivation
+
+Guix becomes a broadly used system with many contributors and the way we add
+new features has been good but starts to show its limits. The lack of a clear
+process easy to consult makes difficult to share a common evolution.
+
+There are a number of changes that are significant enough that they could
+benefit from wider community consensus before being introduced. Either
+because they introduce new concepts, big changes or are controversial enough
+that not everybody will consent on the direction to take.
+
+Therefore, the purpose of this RFC is to introduce a process that allows to
+bring the discussion upfront and strengthen decisions. This RFC is used to
+bootstrap the process and further RFCs can be used to refine the process.
+
+It covers significant changes, where “significant” means any change that could
+only be reverted at a high cost, or any change with the potential to disrupt
+user scripts and programs or user workflows. Examples include:
+
+- changing the <package> record type and/or its interfaces;
+- adding or removing a 'guix' sub-command;
+- changing the channel mechanism;
+- changing project 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
+
+This process is followed when one intends to make “significant” changes to the
+Guix project. What constitutes a “significant” change may include the
+following:
+
+- 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
+- Governance or changes to the way we collaborate
+
+Certain changes do not require an RFC:
+
+- Adding, updating packages, removing outdated packages
+- Fixing security updates and bugs that don’t break interfaces
+
+A patch submission that contains any of the aforementioned substantial changes
+may be asked to first submit a RFC.
+
+For general day-to-day contributions, please follow the regular process as
+described by the manual, for example sections “Submitting Patches”, “Reviewing
+the Work of Others”, “Teams” and “Making Decisions”.
+
+## How the process works
+
+1. Clone <https://git.savannah.gnu.org/git/guix.git>
+2. Copy rfc/0000-template.md to rfc/00XY-good-name.md where good-name
+ is descriptive but not too long and XY increments
+3. Fill RFC
+4. Submit to guix-patches@gnu.org
+5. Announce your RFC to guix-devel@gnu.org
+
+Make sure the RFC proposal is as well-written as you would expect the final
+version of it to be. It does not mean that all the subtleties must be
+considered at this point since that is the aim of Comment period. It means
+that the RFC process is not a prospective brainstorming and the RFC proposal
+formalize an idea for making it happen.
+
+The submission of a RFC proposal does not require an implementation. However,
+to improve the chance of a successful RFC, it is recommended to have an idea
+for implementing it. If an implementation is attached to the detailed design,
+it might help the discussion.
+
+At this point, at least one other person must volunteer to be “co-supporter”.
+The aim is to improve the chances that the RFC is both desired and likely to
+be implemented. See “Co-supporter” section.
+
+Once supporter and co-supporter(s) are committed in the RFC process, the
+discussion starts. Publicizing of the RFC on the project’s mailing list named
+guix-devel is mandatory, and on other main communication channels is highly
+recommended.
+
+After a number of rounds of comments, the discussion should settle and a
+general consensus should emerge. Please follow the “Decision Making” and
+“Timeline” sections.
+
+A successful RFC is not a rubber stamp, and in particular still does not mean
+the feature will ultimately be merged; it does mean that in principle all the
+participants have agreed to the feature and are amenable to merging it.
+
+An unsuccessful RFC is **not** a judgment on the value of the work, so a
+refusal should rather be interpreted as “let's discuss again with a different
+angle”. The last state of an unsuccessful RFC is archived under the directory
+rfc/withdrawn/ and the status quo continues.
+
+When time passing, a successful RFC might be replaced by another successful
+RFC. The status of the former is thus modified and becomes 'deprecated'; it
+is archived under the directory rfc/deprecated.
+
+At the end of the process, the status of the RFC is either successful,
+withdrawn or deprecated.
+
+## Co-supporter
+
+A co-supporter is a contributor sufficiently familiar with the project's
+practices, hence it is recommended, but not mandatory, to be a team member or
+a contributor with commit access. The co-supporter helps the supporter, they
+are both charged with keeping the RFC moving through the process. The
+co-supporter role is to help the RFC supporter by being the timekeeper and
+helps in pushing forward until process completion.
+
+The co-supporter doesn’t necessarily have to agree with all the points
+of the RFC but should generally be satisfied that the proposed additions
+are a good thing for the community.
+
+## Timeline
+
+The lifetime of an RFC is structured into the following recommended
+periods:
+
+digraph "RFC Timeline" {
+ submission[label=<Submission Period<br />7 days>]
+ comments[label=<Discussion Period<br />30–60 days>]
+ last_call[label=<Deliberation Period<br />14 days>]
+ withdrawn[label=Withdrawn, shape=rectangle]
+ final[label=Final, shape=rectangle]
+
+ submission -> comments
+ submission -> withdrawn
+ comments -> last_call
+ last_call -> withdrawn
+ last_call -> final
+
+ withdrawn -> submission [label="New version"]
+
+ comments -> withdrawn
+}
+
+The author may withdraw their RFC proposal at any time; and it might be
+submitted again using a new issue number.
+
+### Submission (up to 7 days)
+
+Anyone might be author and submits their RFC proposal as a regular patch and
+look for co-supporter(s). See “Co-supporter” section.
+
+Once the RFC proposal is co-supported, it marks the start of a Comment period.
+
+### Comment (at least 30 days, up to 60 days)
+
+The Comment period starts once the author publishes their RFC to guix-devel,
+then the RFC is freely discussed by anyone for a period of at least 30 days.
+It is up to the supporter and co-supporter(s) to ensure that sufficient
+discussion is solicited.
+
+Please make sure that all have the time and space for expressing their
+comments. The RFC is about significant changes, thus more opinions is better
+than less.
+
+The author is encouraged to publish updated versions of their RFC at any point
+during the discussion period.
+
+Once the discussion goes stale or after 60 days, the author must summarize the
+state of the conversation and keep the final version.
+
+It moves to the last call period.
+
+### Last call (up to 14 days)
+
+Once the final version is published, team members have 14 days to cast one of
+the following replies on the patch-tracking entry about the RFC:
+
+- Support: meaning that support in principle;
+- Accept: meaning no opposition in principle;
+- Disagree: meaning opposed in principle.
+
+This deliberation period strengthens the consensus; see “Decision Making”.
+
+The RFC is accepted if (1) at least 25% of the team members cast a reply, and
+(2) no one disagrees. In other cases, the RFC is withdrawn.
+
+Anyone who is on a team (see file ‘teams.scm’) is a deliberating member and is
+asked to reply.
+
+## Decision Making
+
+It is expected from all contributors, and even more so from team members, to
+help in building consensus. By using consensus, we are committed to finding
+solutions that everyone can live with.
+
+It implies that no decision is made against significant concerns and these
+concerns are actively resolved with proposals that work for everyone. A
+contributor wishing to block a proposal bears a special responsibility for
+finding alternatives, proposing ideas/code or explaining the rationale for the
+status quo.
+
+As a deliberating member, when replying “Disagree”, you mean (1) you cannot
+live with the RFC and (2) you have been active and helping in discussing the
+RFC during the Comment period.
+
+To learn what consensus decision making means and understand its finer
+details, you are encouraged to read
+<https://www.seedsforchange.org.uk/consensus>.
+
+## Merging the outcome
+
+Once a consensus is made, a committer should do the following to merge the
+RFC:
+
+1. Fill in the remaining metadata in the RFC header, including links
+ for the original submission.
+2. Commit everything.
+3. Announce the establishment of the RFC to all.
+
+## Template of RFC
+
+The structure of the RFC is captured by the template; see the file
+rfc/0000-template.md. Please use Markdown as markup language.
+
+## The Cost Of Reverting
+
+The RFC process can be refined by further RFCs.
+
+## Drawbacks
+
+There is a risk that the additional process will hinder contribution more than
+it would help. We should stay alert that the process is only a way to help
+contribution, not an end in itself.
+
+Of course, group decision-making processes are difficult to manage.
+
+The ease of commenting may bring a slightly diminished signal-to-noise ratio
+in collected feedback, particularly on easily bike-shedded topics.
+
+## Open questions
+
+There are still questions regarding the desired scope of the process. While
+we want to ensure that changes which affect the users are well-considered, we
+certainly don’t want the process to become unduly burdensome. This is a
+careful balance which will require care to maintain moving forward.

base-commit: ce3ffac5d366ebf20e0d95779f2fe1ea6dde0202
--
2.45.2
L
L
Ludovic Courtès wrote on 4 Jan 18:28 +0100
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Noé Lopez)(address . noe@xn--no-cja.eu)
87ttaeqyje.fsf@gnu.org
Noé Lopez <noe@noé.eu> skribis:

Toggle quote (13 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> OK. As I wrote in my reply to Simon, my thought here was that “voting”*
>> would give a clear and unambiguous way, not subject to interpretation,
>> to decide whether the RFC is withdrawn: it’s easier to add numbers than
>> to determine whether “a positive consensus is reached” (current
>> wording).
>>
>
> This is why an ACK/NACK system works great in my opinion: you send “ACK”
> or “NACK” litteraly so your opinion is clear. And you can just count
> the number of each, without implying a vote.

OK, got it, we agree on this.

Toggle quote (6 lines)
>> But I don’t know, I guess that’s an “I will live with it” from me on
>> this one. :-)
>>
>> Two other issue I raised was the quorum: Simon proposed half of the
>> committers; I propose 25% of team members. Thoughts?

[...]

Toggle quote (5 lines)
> Half of the committers is 25 people (based on .guix-authorizations), and
> a quarter of the team members is 10. Personnally, I have trouble
> imagining that this amount of people will come to send a mail to the
> RFC.

So are you saying you’d want no quorum at all? (Your revision still
reads “50% committers”.)

Toggle quote (8 lines)
>> Anyway, I think we should aim for finalization of v1 of the RFC process
>> by, say, Jan. 15th. I will dedicate some time to tweak the wording, and
>> then we can call it a thing.
>>
>
> Good idea! I’ll be waiting for your v5 then. And then I can bring
> back the RFC template.

OK, will do in the coming days.

Toggle quote (8 lines)
>> (A bit sad that it’s just the three of us talking, we wouldn’t have the
>> quorum here…)
>>
>
> Agreed.
>
> Lastly, do we want to move the RFCs to a separate git repository?

I think so. I’ll ask for it on Savannah.

Thanks,
Ludo’.
N
N
Noé Lopez wrote on 5 Jan 13:51 +0100
(name . Ludovic Courtès)(address . ludo@gnu.org)
87v7utxw2a.fsf@xn--no-cja.eu
Toggle quote (8 lines)
>> Half of the committers is 25 people (based on .guix-authorizations), and
>> a quarter of the team members is 10. Personnally, I have trouble
>> imagining that this amount of people will come to send a mail to the
>> RFC.
>
> So are you saying you’d want no quorum at all? (Your revision still
> reads “50% committers”.)

To take a realistic example, say I make an RFC for P2P substitute
distribution with GNUNet/ERIS, this is a big change that requires an RFC
but I have trouble imagining that ten people in the team members are
interested in that.

Teams are specialized after all, if I add myself to the games team it
doesn’t mean I care about RFCs for what would be the core team.

That said I trust your experience to find a quorum that works and if you
think ten is realistic then go for it.

Toggle quote (5 lines)
>> Lastly, do we want to move the RFCs to a separate git repository?
>
> I think so. I’ll ask for it on Savannah.
>

Great!

Have a nice day,
Noé
S
S
Simon Tournier wrote on 6 Jan 11:29 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
874j2cz147.fsf@gmail.com
Hi Noé,

On Sun, 05 Jan 2025 at 13:51, Noé Lopez via Guix-patches via <guix-patches@gnu.org> wrote:

Toggle quote (8 lines)
> To take a realistic example, say I make an RFC for P2P substitute
> distribution with GNUNet/ERIS, this is a big change that requires an RFC
> but I have trouble imagining that ten people in the team members are
> interested in that.
>
> Teams are specialized after all, if I add myself to the games team it
> doesn’t mean I care about RFCs for what would be the core team.

Well, considering this example, I remember a session at Guix Days last
year (or last last year?) when pukkamustard explained ERIS. If I
remember correctly, we were more than 10 people and after the
explanations and questions/answers, we had an informed opinion; I mean I
guess most attendees were able to express either Support, Accept or
Disagree.

For sure, the number of people able to tackle all the implementation
details is probably lower than 10. However, I am confident that more
than 10 team members are skilled enough to build a consensus on any
topic*.

Today, merging a patch is done using “Lazy Consensus“: it assumes
general consent if no responses are posted within a defined period (15
days).

For “significant changes”, we are looking for a “Consensus Approval”.

Therefore, we need a way to define this “Consensus Approval”. That’s
what it’s named “Deliberation Period”: after a “Comment Period” where we
all try to forge an informed opinion (if we are not an expert on the
topic at hand), then we express what we judge the best for the project.

That’s said, maybe 25% is too much? What does it appear to you better?

Cheers,
simon

PS: About “Lazy Consensus” and “Consensus Approval”, see Apache [1]. :-)

*build consensus on any topic: FWIW, I have seen random citizens without
apriori knowledge took complex decisions in Court about crime.


L
L
Ludovic Courtès wrote on 6 Jan 18:40 +0100
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Noé Lopez)(address . noe@xn--no-cja.eu)
871pxf7se9.fsf_-_@gnu.org
Hi,

Noé Lopez <noe@noé.eu> skribis:

Toggle quote (8 lines)
> To take a realistic example, say I make an RFC for P2P substitute
> distribution with GNUNet/ERIS, this is a big change that requires an RFC
> but I have trouble imagining that ten people in the team members are
> interested in that.
>
> Teams are specialized after all, if I add myself to the games team it
> doesn’t mean I care about RFCs for what would be the core team.

Yes.

I’m not sure about this particular example though: *if* this is
implemented as an opt-in functionality, it’s not necessarily a “big
change” in that (1) it’s disabled by default, and (2) it could be
removed entirely from the code base anytime. So under these conditions,
it would not even qualify for the RFC process.

Conversely, the examples given in the current RFC draft really have an
impact on everyone and are hard or impossible to revert.

Toggle quote (3 lines)
> That said I trust your experience to find a quorum that works and if you
> think ten is realistic then go for it.

I don’t have experience but I think that we want to make sure there’s
enough community input. This will require publicity about each RFC and
probably we’ll have to do some web/automation work to help publicize new
RFCs and RFC status changes.

Fundamentally, we need to view ourselves as a community with shared
goals, making decisions together—that is what it means to be a “member”
of the project.

Ludo’.
L
L
Ludovic Courtès wrote on 6 Jan 23:29 +0100
[PATCH v6] Add Request-for-Comments process.
(address . 74736@debbugs.gnu.org)
87y0zn4lvi.fsf_-_@gnu.org
Hello,

As proposed before, here’s a reworked version based on v5. The intent
is to keep the spirit and process unchanged compared to v5, while making
the document a bit more concise (239 lines, v5 was 322), improving
consistency for key words, hopefully improving wording, fixing
grammatical issues, and adding Markdown ornaments where appropriate.

Notable changes:

• Instead of “supporter” and “co-supporter”, I propose “author(s)” and
“supporter(s)” (there must be at least one supporter).

• Explicitly state the license of RFCs (CC-BY-SA or GFDL).

• Clarify that the deliberation period lasts exactly 14 days (was “up
to 14 days” in one place, “14 days” in another).

• Consistently name the different periods.

• Remove mention of the ‘withdrawn/’ directory: it’s redundant with
the ‘status’ header.

• Clarify what to do with “deprecated” RFCs.

• Clarify headers of this RFC.

• Clarify that this is not just for technical changes.
I can proofread and possibly propose minor tweaks the template
afterwards.

Thoughts?

Ludo’.
Attachment: rfc-v6.md
N
N
Noé Lopez wrote on 7 Jan 18:06 +0100
87h66aime2.fsf@xn--no-cja.eu
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (36 lines)
> Hello,
>
> As proposed before, here’s a reworked version based on v5. The intent
> is to keep the spirit and process unchanged compared to v5, while making
> the document a bit more concise (239 lines, v5 was 322), improving
> consistency for key words, hopefully improving wording, fixing
> grammatical issues, and adding Markdown ornaments where appropriate.
>
> Notable changes:
>
> • Instead of “supporter” and “co-supporter”, I propose “author(s)” and
> “supporter(s)” (there must be at least one supporter).
>
> • Explicitly state the license of RFCs (CC-BY-SA or GFDL).
>
> • Clarify that the deliberation period lasts exactly 14 days (was “up
> to 14 days” in one place, “14 days” in another).
>
> • Consistently name the different periods.
>
> • Remove mention of the ‘withdrawn/’ directory: it’s redundant with
> the ‘status’ header.
>
> • Clarify what to do with “deprecated” RFCs.
>
> • Clarify headers of this RFC.
>
> • Clarify that this is not just for technical changes.
>
> I can proofread and possibly propose minor tweaks the template
> afterwards.
>
> Thoughts?
>
> Ludo’.

This is great, thanks! A few comments below:

Toggle quote (4 lines)
>
> title: Requests-for-Comment Process
> id: 000

001, since the template takes id 0000 for ease of access.

Toggle quote (7 lines)
> status: submitted
> discussion: https://issues.guix.gnu.org/74736
> authors: Simon Tournier, Noé Lopez, Ludovic Courtès
> supporters: ?
> submitted: 2024-12-12
> date: 2025-01-15

It’s a good place to add:
SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-only

Toggle quote (35 lines)
> ---
>
> # Summary
>
> This document describes the _request for comments_ (RFC) process of the
> Guix project. The RFC 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 RFC process is a mechanism to determine whether a proposed change is
> “significant” enough to require attention from the community 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 “significant” 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 `<package>` 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.)

Missing a dot at the end of the sentence.

Toggle quote (32 lines)
> # Detailed Design
>
> ## When to Follow This Process
>
> The RFC process applies only to “significant” changes, which 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
> RFC first.
>
> Most day-to-day contributions do *not* require an RFC; 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 “Contributing” chapter.
>
> ## How the Process Works
>
> 1. Clone https://git.savannah.gnu.org/git/guix/requests-for-comments.git .

Why the alone dot?

Toggle quote (15 lines)
> 2. Copy `0000-template.md` to `00XY-short-name.md` where `short-name`
> is a short descriptive name long and `XY` is the sequence number.
> 3. Write your RFC following the template’s structure. The RFC 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 RFC, it must explicitly say so.
> 4. Submit the RFC as a patch to `guix-patches@gnu.org`.
> 5. Announce your RFC at `guix-devel@gnu.org` and look for *supporters*:
> one or more people who will support the RFC and participate in
> discussions by your side (see below).
>
> The RFC is *submitted* once it has at least one supporter in addition to
> the author(s).
>

So we are now three authors and no supporters for this RFC? Could we
say that more than one author also works for submitting?

Toggle quote (67 lines)
> ## Supporters
>
> A supporter is a contributor sufficiently familiar with the project’s
> practices, hence it is recommended, but not mandatory, to be a team
> member. Supporters do not have to agree with all the points of the RFC
> but should generally be satisfied that the proposed additions are a good
> thing for the community.
>
> Supporters help the author(s) by participating in discussions, amending
> the document as it is being discussed, and acting as timekeepers.
>
> ## Timeline
>
> The lifetime of an RFC is structured into the following recommended
> periods:
>
> ![diagram.svg](Diagram of the RFC process.)
>
> ```dot <- TODO: make this a separate file
> digraph "RFC Timeline" {
> submission[label=<Submission Period<br />up to 7 days>]
> comments[label=<Discussion Period<br />30–60 days>]
> deliberation[label=<Deliberation Period<br />14 days>]
> withdrawn[label=Withdrawn, shape=rectangle]
> final[label=Final, shape=rectangle]
>
> submission -> comments
> submission -> withdrawn
> comments -> deliberation
> deliberation -> withdrawn
> deliberation -> final
>
> withdrawn -> submission [label="New version"]
>
> comments -> withdrawn
> }
> ```
>
> The subsections below detail the various stages and their duration.
>
> ### Submission Period (up to 7 days)
>
> Anyone can author and submit an RFC as a regular patch and look for
> supporters (see below). The RFC is *submitted* once it has one or more
> supporters; the next step is the *discussion period*.
>
> Author(s) may withdraw their RFC at any time; they can resubmit it again
> later, possibly under a new RFC number.
>
> ### Discussion Period (at least 30 days, up to 60 days)
>
> Once submitted, the RFC 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 RFC:
>
> - “I support”, meaning that one supports the proposal);

This parenthesis is alone.

Toggle quote (36 lines)
> - “I accept”, meaning that one consents to the implementation of the
> proposal;
> - “I disapprove”, meaning that one opposes the implementation of the
> proposal. A team member sending this reply must have actively
> proposed alternative solutions during the discussion period.
>
> The RFC is *accepted* if (1) at least 25% of all team members send a
> reply, and (2) no one disagrees. In other cases, the RFC is
> *withdrawn*.
>
> Deliberation aims at consolidating consensus; see “Decision Making”
> below.
>
> RFC 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 RFC 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
> https://www.seedsforchange.org.uk/consensus .

Another alone dot ?

Toggle quote (21 lines)
>
> ## Merging Final RFCs
>
> Whether it is accepted or withdrawn, a committer merges the final RFC
> following these steps:
>
> 1. filling in the remaining metadata in the RFC 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 RFCs are deprecated by this new RFC, change the
> `status` header accordingly);
> 2. committing everything;
> 3. announcing the publication of the RFC.
>
> All the RFCs 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).

I would add “or (at your option) any later version.”

Toggle quote (6 lines)
>
> ## RFC Template
>
> The expected structure of RFCs is captured by the template in the file
> `0000-template.md`, written in English with Markdown ornaments.

Ornament is a complicated word, I would replace it with “syntax”.

Toggle quote (25 lines)
>
> ## Cost of Reverting
>
> The RFC process described in this documented can be amended by
> subsequent RFCs.
>
> ## Drawbacks
>
> There is a risk that the additional process will hinder contribution more than
> 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’t want the process to become unduly
> burdensome. This is a careful balance which will require care to
> maintain moving forward.

Thanks for the v6, apart from my comments I think its great and ready to
be submitted :)

In my opinion there are too many unnecessary emphasis (mostly with `),
but I will live with it.

Have a nice day,
Noé
R
R
Ricardo Wurmus wrote on 7 Jan 20:40 +0100
Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
87jzb6mmzq.fsf@elephly.net
I support.

This is an important step towards formalizing consent-based decision
making. Our community has become too big to do without an explicit
process along these lines. Thank you for making the effort to lay out
this process! This specific implementation also looks good to me.

--
Ricardo
-----BEGIN PGP SIGNATURE-----

iQFHBAEBCgAxFiEEvKaJtjZVOAHDxiFQGXpYiCNfrKwFAmd9gxkTHHJla2Fkb0Bl
bGVwaGx5Lm5ldAAKCRAZeliII1+srDLkB/4qxha+70Zpg3bvD4j1dEDehlJ17Mlw
LNH/1Tq6s76C6D5zYgJx+vIMQJaoTnjaVgmzkKKko+SQD5DagbKL8ydyqYrYH03G
ModpJATZBdLMldBf8XEFlNAxvpyWjG5wgWZEMpZO1nMRkkMGwN4s1uuv6Lbb8CPS
/eGulaIfZmVVgliZ5hwu/K/R+U3+D8WHuR/q1I/j+CYWjyIxaJDfgnsJC+sAHfet
C01uFCcHzRJVrZHZjh9Kt0/7G6v8CdmHYfSZlUEujP7azJ9j5oU28BJyP36kKk8O
L7zhNHPRMlwI0vOayiWIyX4b+O88CJGhF11tZmEynU2ZBhoqS0U28Kg1
=5Ddz
-----END PGP SIGNATURE-----

R
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
01020194449ea437-ba0e47aa-a66a-43a0-9ba8-bdad0f257714-000000@eu-west-1.amazonses.com
Thanks for pushing this forward.

As a maybe tangential comment: There is no mention of an identifier for an RFC (e.g. PEP number) or a unique string to identify or reference it?


On January 6, 2025 11:29:21 PM GMT+01:00, "Ludovic Courtès" <ludo@gnu.org> wrote:

Hello,

As proposed before, here’s a reworked version based on v5. The intent
is to keep the spirit and process unchanged compared to v5, while making

the document a bit more concise (239 lines, v5 was 322), improving
consistency for key words, hopefully improving wording, fixing
grammatical issues, and adding Markdown ornaments where appropriate.

Notable changes:

• Instead of “supporter” and “co-supporter”, I propose “author(s)” and
“supporter(s)” (there must be at least one supporter).

• Explicitly state the license of RFCs (CC-BY-SA or GFDL).

• Clarify that the deliberation period lasts exactly 14 days (was “up
to 14 days” in one place, “14 days” in another).

• Consistently name the different periods.

• Remove mention of the ‘withdrawn/’ directory: it’s redundant with
the ‘status’ header.

• Clarify what to do with “deprecated” RFCs.

• Clarify headers of this RFC.

• Clarify that this is not just for technical changes.
I can proofread and possibly propose minor tweaks the template
afterwards.

Thoughts?

Ludo’.


-- Sent from /e/OS Mail.
Attachment: file
L
L
Ludovic Courtès wrote on 8 Jan 11:53 +0100
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Noé Lopez)(address . noe@xn--no-cja.eu)
877c75vao7.fsf_-_@gnu.org
Ludovic Courtès <ludo@gnu.org> skribis:

Toggle quote (4 lines)
>> Lastly, do we want to move the RFCs to a separate git repository?
>
> I think so. I’ll ask for it on Savannah.

I filed a support request to create it:


Ludo’.
S
S
Suhail Singh wrote on 8 Jan 16:12 +0100
(name . Noé Lopez)(address . noe@xn--no-cja.eu)
874j29uyol.fsf_-_@gmail.com
Noé Lopez <noe@noé.eu> writes:

Toggle quote (6 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
> ...
>> id: 000
>
> 001, since the template takes id 0000 for ease of access.

Agreed.

Toggle quote (2 lines)
>> supporters: ?

I'd like to be a supporter. I suppose the authors get to determine
whether I am "sufficiently familiar", or is it based on self-reporting?
Perhaps this point should be clarified.

Toggle quote (3 lines)
>> submitted: 2024-12-12
>> date: 2025-01-15

Should other dates such as target discussion period end as well as
target deliberation period end also be noted here?

Toggle quote (3 lines)
> It’s a good place to add:
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-only

Agreed.

Toggle quote (4 lines)
>> A change may be deemed “significant” 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:

Stating these properties is helpful.

Toggle quote (2 lines)
>> ## When to Follow This Process

Perhaps a "vs not" or equivalent could be added to the heading?

Toggle quote (2 lines)
>> Most day-to-day contributions do *not* require an RFC; examples include:

I am glad that non-examples were also noted.

Toggle quote (4 lines)
>
> Why the alone dot?

I imagine so as not to be mistaken as being part of the URL. If so, I
would recommend we use < ... > delimiters here and elsewhere. E.g.,

Toggle quote (5 lines)
> So we are now three authors and no supporters for this RFC? Could we
> say that more than one author also works for submitting?

I think a clarification on this point is needed. As well, when there
are multiple authors if one or more of them could also act as
supporters.

Toggle quote (3 lines)
>> Supporters help the author(s) by participating in discussions, amending
>> the document as it is being discussed, and acting as timekeepers.

The "amending the document" responsibility blurs the distinction between
authors and supporters. Could that be replaced with "providing
constructive comments"? E.g., this message of mine.

Toggle quote (4 lines)
>> The RFC is *accepted* if (1) at least 25% of all team members send a
>> reply, and (2) no one disagrees. In other cases, the RFC is
>> *withdrawn*.

At that point someone (or some bot) performing cleanup tasks is welcome
to close the issue, if not already closed?

Toggle quote (4 lines)
>
> Another alone dot ?

I propose "<...>." as noted above.

Toggle quote (9 lines)
>> All the RFCs 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).
>
> I would add “or (at your option) any later version.”

Agreed.

Toggle quote (5 lines)
>> The expected structure of RFCs is captured by the template in the file
>> `0000-template.md`, written in English with Markdown ornaments.
>
> Ornament is a complicated word, I would replace it with “syntax”.

Agreed.

Toggle quote (3 lines)
>> ## Cost of Reverting
>>
>> The RFC process described in this documented can be amended by
^^^^^^^^^^
Toggle quote (2 lines)
>> subsequent RFCs.

I propose:

#+begin_quote
The RFC process described in this document can be amended and must be
by via a subsequent RFC.
#+end_quote

--
Suhail
S
S
Suhail Singh wrote on 8 Jan 16:15 +0100
Re: Request-For-Comment process: concrete implementation (v5)
(name . Ludovic Courtès)(address . ludo@gnu.org)
87wmf5tk00.fsf@gmail.com
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (7 lines)
> Even better if we can finalize before Guix Days so:
>
> discussion period ending on Jan. 14th
> deliberation period ending on Jan. 28th
>
> How does that sound?

I have commented on the issue. If my request to be a supporter is
accepted, I support the above amendment to the target dates.

--
Suhail
P
P
pukkamustard wrote on 8 Jan 17:26 +0100
Re: [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
D6WTZC39AXKQ.2IP46QCJF7Z1G@posteo.net
Thank you all for working on this.

Some comments:

- I had to think if I am a _team member_ or not. The term is not defined in the
document. I think this is mostly due to there not being a RFC on teams (yet).
Still, to make the Process RFC understandable, I'd add a brief explanation of
what team members are (i.e. members in etc/teams.scm).
Likewise, I think the Process RFC would be simpler to understand if feedback
is required from a fixed number of team members instead of a percentage. I
believe there has been some discussion on this, that I have not been able to
follow completely, so ignore if already discussed and agreed upon.

- The term "supporter" is used for two things where it's not clear if
it's the same:

1. People listed as supporters in the RFC metadata.
2. Team members that respond with "I support" during the Deliberation
Period.

Furthermore, in the section "Submission Period" it says that authors
can look for supporters. But the wording in the "Deliberation Period"
suggests that the "I support" emails should only be sent in the
Deliberation Period when the final version is published.
For example: Ricardo replied with "I support". What does that mean when the
Deliberation Period has not yet started?

I think what is meant is that supporters can be recruited at any time
and team members responding during the Deliberation Period with "I
support" become supporters and will be added to the list of supporters
in the metadata. This should be clarified.

- The term "final" is overloaded and underused:

1. "Final" is a state of an RFC.
2. In section "Discussion Period" the authors should publish a "final"
version. But this is not a RFC that has state "Final".
3. In section "Deliberation Period" a valid response by team members is "I
accept". The RFC is also described as "accepted". The term for the state
"Final" is not used.
I'd suggest renaming the RFC state "Final" to "Accepted".
- In Section "Deliberation Period" the team member response is "I disapprove"
but in the next section the term "disagree" is used. I'd use the same term for
clarity.

- The "I disapprove" reply is only allowed if member actively proposed
alternative solutions during the "Discussion Period". I feel that might be a
bit of a strong requirement as that means you can not disapprove a RFC if you
only see it after the "Deliberation Period" has started. Maybe that's ok as
RFCs need to be announced to guix-devel. Still it might be a bit strong. Maybe
something along the lines: "A team member sending this reply must explain
their disapproval and should suggest constructive changes to the proposal that
would make it approvable."

- I think the name "Guix Consensus Documents (GCD)" would be slightly
funnier - a play on greatest common divisor (as mentioned by Simon).
But I think RFC is a term that is more widely understood and that's
fine.
I'm not quite clear what this means, but: I support. :)

I will be afk during the Deliberation Period (and not present in
Brussels) but I think this is an important step for Guix and am fine
with being added to the `supporters` field.

-pukkamustard
L
S
S
Simon Tournier wrote on 9 Jan 17:21 +0100
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
87seps3qm8.fsf@gmail.com
Hi,

On Mon, 06 Jan 2025 at 23:29, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (3 lines)
> title: Requests-for-Comment Process
> id: 000

I think it’s better to start with 001 and have 000 for the template.

Toggle quote (6 lines)
> status: submitted
> discussion: https://issues.guix.gnu.org/74736
> authors: Simon Tournier, Noé Lopez, Ludovic Courtès
> supporters: ?
> submitted: 2024-12-12

I think the choice of this date is unclear. Do you consider that your
reply or mine implies being Supporter?

Well, since this document bootstrap the process it’s difficult. :-)
Especially when the first draft had been sent on 2023-10-31.

I suggest to clarify and to extend:

> The RFC is *submitted* once it has at least one supporter in addition to
> the author(s).

with:

The RFC is *submitted* once it has at least one supporter in
addition to the author(s). See Submission Period below.

Toggle quote (5 lines)
> date: 2025-01-15
> ---
>
> # Summary

[...]

Toggle quote (2 lines)
> # Motivation

[...]

Toggle quote (4 lines)
> # Detailed Design
>
> ## When to Follow This Process

[...]

Toggle quote (6 lines)
> ## How the Process Works
>
> 1. Clone https://git.savannah.gnu.org/git/guix/requests-for-comments.git .
> 2. Copy `0000-template.md` to `00XY-short-name.md` where `short-name`
> is a short descriptive name long and `XY` is the sequence number.

I suggest: `XY` increments the sequence number.

Toggle quote (12 lines)
> 3. Write your RFC following the template’s structure. The RFC 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 RFC, it must explicitly say so.
> 4. Submit the RFC as a patch to `guix-patches@gnu.org`.
> 5. Announce your RFC at `guix-devel@gnu.org` and look for *supporters*:
> one or more people who will support the RFC and participate in
> discussions by your side (see below).
>
> The RFC is *submitted* once it has at least one supporter in addition to
> the author(s).

See above.

Toggle quote (12 lines)
>
> ## Supporters
>
> A supporter is a contributor sufficiently familiar with the project’s
> practices, hence it is recommended, but not mandatory, to be a team
> member. Supporters do not have to agree with all the points of the RFC
> but should generally be satisfied that the proposed additions are a good
> thing for the community.
>
> Supporters help the author(s) by participating in discussions, amending
> the document as it is being discussed, and acting as timekeepers.

I would add (picked from v5):

Please make sure that all have the time and space for expressing
their comments. The RFC is about significant changes, thus more
opinions is better than less.

I think that important to have this written somewhere in the document.
And because author is focused on the proposal – if one took the time to
write something, it means one has an idea on some topic that one want to
defend :-) –, then it might be difficult to have the right distance.
Hence Supporter(s) are also the helper / facilitator here.

Toggle quote (7 lines)
> ## Timeline
>
> The lifetime of an RFC is structured into the following recommended
> periods:
>
> ![diagram.svg](Diagram of the RFC process.)

I would replace the node ’comments’ by discussion in order to have
something more homogeneous. Nitpicking? ;-)

Toggle quote (2 lines)
> ```dot <- TODO: make this a separate file

I would prefer to let the dot file here as-is. Because it’s easier to
read in full terminal mode. In addition, yes maybe we could display the
graph as an image file.

Toggle quote (4 lines)
> digraph "RFC Timeline" {
> submission[label=<Submission Period<br />up to 7 days>]
> comments[label=<Discussion Period<br />30–60 days>]

discussion[label=<Discussion Period<br />30–60 days>]

Toggle quote (8 lines)
> deliberation[label=<Deliberation Period<br />14 days>]
> withdrawn[label=Withdrawn, shape=rectangle]
> final[label=Final, shape=rectangle]
>
> submission -> comments
> submission -> withdrawn
> comments -> deliberation

discussion -> deliberation

Toggle quote (17 lines)
> deliberation -> withdrawn
> deliberation -> final
>
> withdrawn -> submission [label="New version"]
>
> comments -> withdrawn
> }
> ```
>
> The subsections below detail the various stages and their duration.
>
> ### Submission Period (up to 7 days)
>
> Anyone can author and submit an RFC as a regular patch and look for
> supporters (see below). The RFC is *submitted* once it has one or more
> supporters; the next step is the *discussion period*.

As said above, I would clarify:

The RFC is *submitted* once one or more
people publicly reply “I support” and volunteers to be
supporters; the next step is the *discussion period*.

Toggle quote (5 lines)
> Author(s) may withdraw their RFC at any time; they can resubmit it again
> later, possibly under a new RFC number.
>
> ### Discussion Period (at least 30 days, up to 60 days)

[...]

Toggle quote (5 lines)
> ### Deliberation Period (14 days)
>
> All members of any team of the Guix project can participate in
> deliberation and are encouraged to do so.

I would restore the past suggestion to mention the file ’teams.scm’; see
suggestion below (mark **).

Toggle quote (5 lines)
> 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 RFC:
>
> - “I support”, meaning that one supports the proposal);

---^
) extra

Toggle quote (4 lines)
> - “I disapprove”, meaning that one opposes the implementation of the
> proposal. A team member sending this reply must have actively
> proposed alternative solutions during the discussion period.

I do not think the wording of the last sentence is accurate enough:
Because maybe there is no alternative solution or the status quo is the
one, etc.

Instead, I would write:

A team member sending this reply must have actively cooperated
with for discussing the RFC during the discussion period. See
Decision Making.


Toggle quote (4 lines)
> The RFC is *accepted* if (1) at least 25% of all team members send a
> reply, and (2) no one disagrees. In other cases, the RFC is
> *withdrawn*.

Here, I would replace ’disagrees’ with ’disapproves’. It appears to me
clearer.

Toggle quote (3 lines)
> Deliberation aims at consolidating consensus; see “Decision Making”
> below.

Here (remember mark ** :-)), I would add this sentence.

Anyone who is on a team (see file ‘teams.scm’) is a deliberating
member and is asked to contribute to the deliberation.

Toggle quote (2 lines)
> ## Decision Making

[...]

Toggle quote (2 lines)
> ## Merging Final RFCs

[...]

Toggle quote (6 lines)
>
> ## RFC Template
>
> The expected structure of RFCs is captured by the template in the file
> `0000-template.md`, written in English with Markdown ornaments.

The number of 000 must be in agreement with the top, IMHO.

Toggle quote (2 lines)
> ## Cost of Reverting

[...]

Toggle quote (2 lines)
> ## Drawbacks

[...]

Toggle quote (2 lines)
> ## Open Issues

[...]


Cheers,
simon
S
S
Simon Tournier wrote on 9 Jan 18:21 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
87jzb352dp.fsf@gmail.com
Hi,

On Wed, 08 Jan 2025 at 10:12, Suhail Singh <suhailsingh247@gmail.com> wrote:

Toggle quote (4 lines)
> I'd like to be a supporter. I suppose the authors get to determine
> whether I am "sufficiently familiar", or is it based on self-reporting?
> Perhaps this point should be clarified.

Thanks for your comment. Indeed, let clarify it for the next version.

Toggle quote (6 lines)
>>> submitted: 2024-12-12
>>> date: 2025-01-15
>
> Should other dates such as target discussion period end as well as
> target deliberation period end also be noted here?

I agree this needs a clarification.


Cheers,
simon
S
S
Simon Tournier wrote on 9 Jan 18:18 +0100
87o70f52j3.fsf@gmail.com
Hi,

On Wed, 08 Jan 2025 at 16:26, "pukkamustard" <pukkamustard@posteo.net> wrote:

Toggle quote (5 lines)
> - I had to think if I am a _team member_ or not. The term is not defined in the
> document. I think this is mostly due to there not being a RFC on teams (yet).
> Still, to make the Process RFC understandable, I'd add a brief explanation of
> what team members are (i.e. members in etc/teams.scm).

Yes, that’s the idea. Ludo pointed that teams.scm file and it was in v5
but not in v6. Maybe something lost in translation. :-)

Toggle quote (5 lines)
> Likewise, I think the Process RFC would be simpler to understand if feedback
> is required from a fixed number of team members instead of a percentage. I
> believe there has been some discussion on this, that I have not been able to
> follow completely, so ignore if already discussed and agreed upon.

What do you suggest?

Well, FWIW, some explanations, maybe it could help to find a better way.

It appears to me easier to know if the quorum is reached or not, I
guess.

./etc/teams.scm list-teams | recsel -CP members | sort | uniq | wc -l

I think that the input of some team members might happen on the
Discussion Period and not specifically on the Deliberation Period.

Well, then you would tell me: I cannot have an opinion on any topic. :-)
Or I do not have the bandwidth to follow all the discussion. Maybe.
But then, if we are not able to express an opinion on such topic, does
we consent?

From my point of view, the idea is to be sure we – as a community –
consent about significant changes.

And if I – as a deliberating member – do not feel confident enough, I
have two options: (a) Disapprove, for instance because I estimate we
have not discussed enough the topic at hand and the topic deserves more
discussion or another counter proposal or (b) Silent (no reply),
although it would mean to me something is wrong.

On this, the danger is the “social pressure” because the Deliberation
Period is public. But if it’s a real issue, improvement on that could
be part of an amendment for the next version. :-)

Please keep in mind (1) the “social pressure” would mean it’s not a safe
place hence it would raise more than the potential RFC and (2) consent
does not mean being 100% in agreement with all the details but it means
“it’s a good direction, not perfect but I can live with the
imperfections”. Somehow. :-)

Toggle quote (7 lines)
> - The term "supporter" is used for two things where it's not clear if
> it's the same:
>
> 1. People listed as supporters in the RFC metadata.
> 2. Team members that respond with "I support" during the Deliberation
> Period.

Ah. Hum. The idea of the process is:

+ author sends
(*) + one or more people reply “I support”
+ it becomes a submitted RFC
+ all the dance…
+ Deliberation Period:
(**) . I support
. I approve
. I disapprove

Ah indeed (*) and (**) are not the same:

1. “Supporter” means (*)
2. Team members replying “I support” means (**)

Thanks. Maybe (1)(*) should be renamed.


Toggle quote (2 lines)
> I'd suggest renaming the RFC state "Final" to "Accepted".

I agree.

Toggle quote (4 lines)
> - In Section "Deliberation Period" the team member response is "I disapprove"
> but in the next section the term "disagree" is used. I'd use the same term for
> clarity.

I agree.

Toggle quote (9 lines)
> - The "I disapprove" reply is only allowed if member actively proposed
> alternative solutions during the "Discussion Period". I feel that might be a
> bit of a strong requirement as that means you can not disapprove a RFC if you
> only see it after the "Deliberation Period" has started. Maybe that's ok as
> RFCs need to be announced to guix-devel. Still it might be a bit strong. Maybe
> something along the lines: "A team member sending this reply must explain
> their disapproval and should suggest constructive changes to the proposal that
> would make it approvable."

If you do not see the RFC after the long Discussion Period of 60 days,
then why do you see it in the short Deliberation Period? ;-)

Somehow, we need to bound, else it becomes hard to move forward, IMHO.

Well, I assume good faith, I would like to counter the behaviour: I
sleep during all the discussion where people took the time to polish and
end up with something all agree, and me, I awake up in the last minute
and bang! That’s unfair, IMHO.

It’s not explicitly mentioned (maybe it should be): I think that any
“submitted” RFC must be advertised via info-guix@gnu.org.

Toggle quote (5 lines)
> - I think the name "Guix Consensus Documents (GCD)" would be slightly
> funnier - a play on greatest common divisor (as mentioned by Simon).
> But I think RFC is a term that is more widely understood and that's
> fine.

I agree. I remember your suggestion at the last Guix Days. And I lost
it among other stuff during the year 2024… Arf!

Toggle quote (6 lines)
> I'm not quite clear what this means, but: I support. :)
>
> I will be afk during the Deliberation Period (and not present in
> Brussels) but I think this is an important step for Guix and am fine
> with being added to the `supporters` field.

Thank you.

Ah what a pity to not see you in Brussels!

Cheers,
simon
L
L
Ludovic Courtès wrote on 9 Jan 22:00 +0100
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87wmf3og7h.fsf_-_@gnu.org
Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (18 lines)
> Ah. Hum. The idea of the process is:
>
> + author sends
> (*) + one or more people reply “I support”
> + it becomes a submitted RFC
> + all the dance…
> + Deliberation Period:
> (**) . I support
> . I approve
> . I disapprove
>
> Ah indeed (*) and (**) are not the same:
>
> 1. “Supporter” means (*)
> 2. Team members replying “I support” means (**)
>
> Thanks. Maybe (1)(*) should be renamed.

How about “sponsors”? (I believe I’ve seen it in other similar
documents.)

Ludo’.
L
L
Ludovic Courtès wrote on 9 Jan 22:16 +0100
(name . pukkamustard)(address . pukkamustard@posteo.net)(address . 74736@debbugs.gnu.org)
87frlrofgd.fsf_-_@gnu.org
Hello pukkamustard,

Thanks for insightful comments!

"pukkamustard" <pukkamustard@posteo.net> skribis:

Toggle quote (5 lines)
> - I had to think if I am a _team member_ or not. The term is not defined in the
> document. I think this is mostly due to there not being a RFC on teams (yet).
> Still, to make the Process RFC understandable, I'd add a brief explanation of
> what team members are (i.e. members in etc/teams.scm).

A mistake of mine in v6; we should reintroduce a mention of
‘etc/teams.scm’ or a reference to the manual.

Toggle quote (3 lines)
> Likewise, I think the Process RFC would be simpler to understand if feedback
> is required from a fixed number of team members instead of a percentage.

Wouldn’t a fixed number of people run the risk of letting a few people
move forward despite general apathy? (Given that that fixed number
might represent 25% of team members today, and 5% a few years from now.)

Toggle quote (7 lines)
> - The term "supporter" is used for two things where it's not clear if
> it's the same:
>
> 1. People listed as supporters in the RFC metadata.
> 2. Team members that respond with "I support" during the Deliberation
> Period.

Yeah, “sponsors” may work better for (1).

Toggle quote (5 lines)
> Furthermore, in the section "Submission Period" it says that authors
> can look for supporters. But the wording in the "Deliberation Period"
> suggests that the "I support" emails should only be sent in the
> Deliberation Period when the final version is published.

We could state that anything that comes before or after the Deliberation
Period is ignored, to avoid the ambiguity.

Toggle quote (2 lines)
> I'd suggest renaming the RFC state "Final" to "Accepted".

Agreed (that was an omission).

Toggle quote (4 lines)
> - In Section "Deliberation Period" the team member response is "I disapprove"
> but in the next section the term "disagree" is used. I'd use the same term for
> clarity.

Oops, agreed.

Toggle quote (9 lines)
> - The "I disapprove" reply is only allowed if member actively proposed
> alternative solutions during the "Discussion Period". I feel that might be a
> bit of a strong requirement as that means you can not disapprove a RFC if you
> only see it after the "Deliberation Period" has started. Maybe that's ok as
> RFCs need to be announced to guix-devel. Still it might be a bit strong. Maybe
> something along the lines: "A team member sending this reply must explain
> their disapproval and should suggest constructive changes to the proposal that
> would make it approvable."

Hmm yeah, I see what you mean; it shouldn’t be understood as “I
disapprove” is strictly forbidden for people who have not made
counter-proposals during the discussion. Yet, I agree with Simon that
“I disapprove” should be discouraged in this case. Probably we can fine
tune the words.

Toggle quote (5 lines)
> - I think the name "Guix Consensus Documents (GCD)" would be slightly
> funnier - a play on greatest common divisor (as mentioned by Simon).
> But I think RFC is a term that is more widely understood and that's
> fine.

Heheh.

I’m fine either way but I’m already getting used to “RFC”. :-)

Toggle quote (4 lines)
> I will be afk during the Deliberation Period (and not present in
> Brussels) but I think this is an important step for Guix and am fine
> with being added to the `supporters` field.

Thanks. Too bad we won’t meet in Brussels though.

Ludo’.
L
L
Ludovic Courtès wrote on 9 Jan 23:32 +0100
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
871pxbobxg.fsf_-_@gnu.org
Hello,

(Stripping comments/suggestions I agree with.)

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (9 lines)
>> supporters: ?
>> submitted: 2024-12-12
>
> I think the choice of this date is unclear. Do you consider that your
> reply or mine implies being Supporter?
>
> Well, since this document bootstrap the process it’s difficult. :-)
> Especially when the first draft had been sent on 2023-10-31.

Yeah, it’s quite arbitrary here, I’m fine with any date.

Obviously it’ll be more important once the process is actually in place.

Toggle quote (17 lines)
>> ## Supporters
>>
>> A supporter is a contributor sufficiently familiar with the project’s
>> practices, hence it is recommended, but not mandatory, to be a team
>> member. Supporters do not have to agree with all the points of the RFC
>> but should generally be satisfied that the proposed additions are a good
>> thing for the community.
>>
>> Supporters help the author(s) by participating in discussions, amending
>> the document as it is being discussed, and acting as timekeepers.
>
> I would add (picked from v5):
>
> Please make sure that all have the time and space for expressing
> their comments. The RFC is about significant changes, thus more
> opinions is better than less.

You mean that this (soliciting opinions) is something
supporters/sponsors should do, right? I agree.

Toggle quote (6 lines)
>> ```dot <- TODO: make this a separate file
>
> I would prefer to let the dot file here as-is. Because it’s easier to
> read in full terminal mode. In addition, yes maybe we could display the
> graph as an image file.

Yeah, I’m split between Dot and ASCII art…

Toggle quote (6 lines)
> As said above, I would clarify:
>
> The RFC is *submitted* once one or more
> people publicly reply “I support” and volunteers to be
> supporters; the next step is the *discussion period*.

OK.

Toggle quote (6 lines)
>> All members of any team of the Guix project can participate in
>> deliberation and are encouraged to do so.
>
> I would restore the past suggestion to mention the file ’teams.scm’; see
> suggestion below (mark **).

Agreed.

I’ll send v7 tomorrow.

Thank you!

Ludo’.
S
S
Simon Tournier wrote on 9 Jan 23:48 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
8734hrioxe.fsf@gmail.com
Hi Ludo,

On Thu, 09 Jan 2025 at 14:27, Ludovic Courtès <ludo@gnu.org> wrote:
Toggle quote (4 lines)
> Repository created!
>
> https://git.savannah.gnu.org/cgit/guix/requests-for-comments.git/

I like the idea of ’Guix Common Document’ (GCD) instead of
Request-For-Comment (RFC). Do you think it would be possible to rename
this repository before it we start to effectively it?

Cheers,
simon
S
S
Simon Tournier wrote on 10 Jan 00:22 +0100
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
87y0zjh8te.fsf@gmail.com
Hi,

On Wed, 08 Jan 2025 at 06:33, reza via Guix-patches via <guix-patches@gnu.org> wrote:

Toggle quote (4 lines)
> As a maybe tangential comment: There is no mention of an identifier
> for an RFC (e.g. PEP number) or a unique string to identify or
> reference it?

I think there is one: the first one is 001 and then they will be
incremented. For instance, assuming v6, it would be: RFC 001, or RFC
001-rfc-process.

Is it clearer?

Cheers,
simon
S
S
Simon Tournier wrote on 10 Jan 00:45 +0100
[bug#74736] [PATCH v7] Add Guix Common Document process.
87jzb3h7ps.fsf@gmail.com
Hi,

Based on v6 and integrating various comments. Changes:

• Instead of “Supporter”, the rename is “Sponsor”.

• Instead of Request-for-Comments (RFC), the rename is Guix Common
Document (GCD).

• Fix header: id and SPDX-License-Identifier, adjust sponsor and date.

• Section “How the Process Works”, point 2. adjust 000-template.md in
agreement with XYZ. Mention “Submission Period” and info-guix.

• Section “Sponsor”: Add paragraph mentioning the role of sponsor.

• dot graph: Replace ’comments’ by ’discussion’ and ’final’ by
’accepted’.

• Section “Submission Period”: tweak paragraph.

• Section “Deliberation Period”: tweak “I disapprove” paragraph; Add
paragraph about deliberating member.

• Fix trailing dot and replace ornaments by syntax although ornaments
sound better to my French. ;-)


Please proofread and comment. :-)

WDYT?

Cheers,
simon
--
Attachment: 001-gcd-process.md
S
S
Simon Tournier wrote on 10 Jan 00:56 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87h667h780.fsf@gmail.com
Hi Ludo,

On Thu, 09 Jan 2025 at 23:32, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (2 lines)
> Yeah, I’m split between Dot and ASCII art…

Heh me too. Although the dot provides a bit more information via the
name of the nodes. Bah I don’t know.


Toggle quote (2 lines)
> I’ll send v7 tomorrow.

I have sent a v7 integrating various comments. Feel free to adjust with
a v8 if I am missing something.

Thank you, almost there I hope. :-)

Cheers,
simon
V
V
Vagrant Cascadian wrote on 10 Jan 01:40 +0100
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
878qrjh56c.fsf@wireframe
Overall, this seems quite good, nice work all!

I do have one specific comment... though I am a latecomer to this
discussion!

On 2025-01-06, Ludovic Courtès wrote:
Toggle quote (19 lines)
> ### 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 RFC:
>
> - “I support”, meaning that one supports the proposal);
> - “I accept”, meaning that one consents to the implementation of the
> proposal;
> - “I disapprove”, meaning that one opposes the implementation of the
> proposal. A team member sending this reply must have actively
> proposed alternative solutions during the discussion period.
>
> The RFC is *accepted* if (1) at least 25% of all team members send a
> reply, and (2) no one disagrees. In other cases, the RFC is
> *withdrawn*.

Is 'no one disagrees' == 'no one replies with "I disapprove"'? It would
be nicer if there were more explicit alignment in the words used to make
that clearer, if that is, in fact, the intended case. Perhaps
literally... e.g. ... (2) if no one declares "I disapprove".

... Well, two points, apparently, now that I got the simple one out of
the way... :)

In other consensus settings I have on occasion declared something that
is effectively "I accept, but I disapprove" or maybe more descriptively
"I accept, with reservations" e.g. not agreeing with the decision but
not severely enough that it should not move forward. You might not
expect to get much help with implementation from such a person, though!

I guess again, it comes to word alignment ... "I disapprove" sounds
rather soft, compared to the effects (e.g. blocking further progress or
sending it back to the proverbial drawing board). "I accept" sounds
rather positive, despite the possibility of some potential discomfort
with the decision...

Obviously, one can and should declare their reservations as part of the
discussion that lead up to that point! Although maybe "I accept" should
come with the option to declare formal outstanding concerns?

Similarly "I disaprove" should not come out of nowhere; it should be
clear why, and perhaps worth having an option to note that in the call
for consensus at the end of the Deliberation Period?


Eeesh. Three points!

I also wonder if there is a supermajority of "I accept" over "I support"
this maybe should raise some sort of red flag calling into question the
proposal... as that is a very weak consensus and perhaps cause for
concern.


All that said, I am a latecomer to this process... so take it however is
most helpful! Overall, it looks quite good to my eyes.


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZ4BsiwAKCRDcUY/If5cW
qn/2AQDS0ISyEgn6dn73EqpRe0/ICD6LjF1R1Or/XYizvKFlZgEAuGKzrvlcis5q
2LXJmuPEtjAQ7973T6yAUBMY9loWsQk=
=fWow
-----END PGP SIGNATURE-----

J
J
Janneke Nieuwenhuizen wrote on 10 Jan 08:44 +0100
(name . Ludovic Courtès)(address . ludo@gnu.org)
87h667nmdk.fsf@gnu.org
Ludovic Courtès writes:

Hello,

Toggle quote (6 lines)
> As proposed before, here’s a reworked version based on v5. The intent
> is to keep the spirit and process unchanged compared to v5, while making
> the document a bit more concise (239 lines, v5 was 322), improving
> consistency for key words, hopefully improving wording, fixing
> grammatical issues, and adding Markdown ornaments where appropriate.

[..]

Toggle quote (4 lines)
> Thoughts?

> # Motivation

Am I right that the main purpose/intent is (not trying to twist anyone's words)

Toggle quote (5 lines)
> 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.

* to draw more attention to / have important discussions stand out
more in all the "noise", and guided by

Toggle quote (5 lines)
> The RFC process is a mechanism to determine whether a proposed change is
> “significant” enough to require attention from the community at large
> and if so, to provide a documented way to bring about broad community
> discussion and to collectively decide on the proposal.

* a collective decision on what "important" is?

So, in effect a "noise" filter / focus mechanism for the most important
changes. That seems like a very good idea to me!

Toggle quote (6 lines)
> ## Drawbacks
>
> There is a risk that the additional process will hinder contribution more than
> it would help. We should stay alert that the process is only a way to help
> contribution, not an end in itself.

I have no personal experience with RFC processes and this seems
lightweight enough to begin with. A drawback could be that it slows
development down, but for important changes that may be a good thing?
Other than that I see only advantages, well done.

The only things that I could suggest is to see if we should make it even
be more lightweight/nimble as a first version, e.g, require only two
*persons*, so that two authors could start a submission

The RFC is *submitted* once it has at least one co-author or
supporter in addition to the initial author(s).

or use shorter periods, e.g.

submission[label=<Submission Period<br />up to 7 days>]
comments[label=<Discussion Period<br />15–60 days>]
deliberation[label=<Deliberation Period<br />8-14 days>]

but I have no strong opinion on these.

[..]

Toggle quote (2 lines)
> 2. Copy `0000-template.md` to `00XY-short-name.md` where `short-name`
> is a short descriptive name long and `XY` is the sequence number.
^
"long" typo?

Greetings,
Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
N
N
Noé Lopez wrote on 10 Jan 11:39 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
87wmf3ymua.fsf@xn--no-cja.eu
Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (14 lines)
> Hi Ludo,
>
> On Thu, 09 Jan 2025 at 14:27, Ludovic Courtès <ludo@gnu.org> wrote:
>> Repository created!
>>
>> https://git.savannah.gnu.org/cgit/guix/requests-for-comments.git/
>
> I like the idea of ’Guix Common Document’ (GCD) instead of
> Request-For-Comment (RFC). Do you think it would be possible to rename
> this repository before it we start to effectively it?
>
> Cheers,
> simon

Hi Simon,

Can you explain the reasoning for that name? I don’t think I understand
what it means.

Thanks,
Noé
S
S
Simon Tournier wrote on 10 Jan 13:25 +0100
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
8734hqluu3.fsf@gmail.com
Hi,

On Thu, 09 Jan 2025 at 16:40, Vagrant Cascadian <vagrant@debian.org> wrote:

Toggle quote (5 lines)
> Is 'no one disagrees' == 'no one replies with "I disapprove"'? It would
> be nicer if there were more explicit alignment in the words used to make
> that clearer, if that is, in fact, the intended case. Perhaps
> literally... e.g. ... (2) if no one declares "I disapprove".

I hope it is clarified with v7 [1]:

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*.

WDYT?

Maybe, « (2) if no one declares "I disapprove". » seems even clearer?

Toggle quote (4 lines)
> Obviously, one can and should declare their reservations as part of the
> discussion that lead up to that point! Although maybe "I accept" should
> come with the option to declare formal outstanding concerns?

Well, that’s the distinction between “I support” and “I accept”, no?

Somehow, the idea with “I accept” is “I think it’s the good direction
although I have these concerns X and Y but I can with live all that”.

Well, I think these concerns are captured during the “Discussion Period”
and they should be included in the section “Drawback” or “Open Issues”.

WDYT?

Toggle quote (4 lines)
> Similarly "I disaprove" should not come out of nowhere; it should be
> clear why, and perhaps worth having an option to note that in the call
> for consensus at the end of the Deliberation Period?

I agree. Does this wording v7 [1]:

- “I disapprove”, meaning that one opposes the implementation of the
proposal. A team member sending this reply must have actively
cooperated with for discussing the RFC during the discussion period.
See “Decision Making”.

answer to your comment? In addition, “Decision Making” section
contains:

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.

Therefore, “I disapprove” cannot come out of nowhere because the person
who disapproves must comment during the “Discussion Period” on the why.

That’s said, do you suggest that the reply “I disapprove” during the
“Deliberating Period” should come with a summary about why?

And such summary would be then included in the Document with the state
of ’widthdrawn’.


Toggle quote (5 lines)
> I also wonder if there is a supermajority of "I accept" over "I support"
> this maybe should raise some sort of red flag calling into question the
> proposal... as that is a very weak consensus and perhaps cause for
> concern.

Good point. Maybe this is the same as above about having these concerns
written down in the final document under a dedicated section as
“Drawback” or “Open Issues”. WDYT?


Toggle quote (3 lines)
> All that said, I am a latecomer to this process... so take it however is
> most helpful! Overall, it looks quite good to my eyes.

Thank you for your comments.

Cheers,
simon


1: [bug#74736] [PATCH v7] Add Guix Common Document process.
Simon Tournier <zimon.toutoune@gmail.com>
Fri, 10 Jan 2025 00:45:51 +0100
id:87jzb3h7ps.fsf@gmail.com
S
S
Simon Tournier wrote on 10 Jan 13:45 +0100
87y0zikfch.fsf@gmail.com
Hi Janneke,

On Fri, 10 Jan 2025 at 08:44, Janneke Nieuwenhuizen <janneke@gnu.org> wrote:

Toggle quote (4 lines)
>> # Motivation
>
> Am I right that the main purpose/intent is (not trying to twist anyone's words)

[...]

Toggle quote (3 lines)
> * to draw more attention to / have important discussions stand out
> more in all the "noise", and guided by

[...]

Toggle quote (2 lines)
> * a collective decision on what "important" is?

Yes! :-)

Toggle quote (3 lines)
> A drawback could be that it slows
> development down, but for important changes that may be a good thing?

I would you say yes :-)

And I would also say it’s a counter measure against “Why wasn't I
consulted“ [1] or some bullet points [2] from the talk that appear to me
helpful and that had been inspiration.



Toggle quote (7 lines)
> The only things that I could suggest is to see if we should make it even
> be more lightweight/nimble as a first version, e.g, require only two
> *persons*, so that two authors could start a submission
>
> The RFC is *submitted* once it has at least one co-author or
> supporter in addition to the initial author(s).

Ah you mean that the case of ’two authors’ does not require a Sponsor*,
right?

*Sponsor: was ’Supporter’ but renamed in order to avoid confusion
between supporting the Document before the Discussion Period and
replying ’I support’ during the Delibration Period.

Toggle quote (8 lines)
> or use shorter periods, e.g.
>
> submission[label=<Submission Period<br />up to 7 days>]
> comments[label=<Discussion Period<br />15–60 days>]
> deliberation[label=<Deliberation Period<br />8-14 days>]
>
> but I have no strong opinion on these.

About the Discussion Period, I do not have an opinion. From my
intuition, it appears to be helpful when all have the time and space for
expressing their comments.

About the Deliberation Period, I think we need to have enough time and 2
weeks sound the good range based on what we are already doing for patch
review.

Thanks for the comments.

Cheers,
simon
S
S
Simon Tournier wrote on 10 Jan 14:02 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
87sepqkeji.fsf@gmail.com
Hi Noé,

On Fri, 10 Jan 2025 at 11:39, Noé Lopez via Guix-patches via <guix-patches@gnu.org> wrote:

Toggle quote (3 lines)
> Can you explain the reasoning for that name? I don’t think I understand
> what it means.

Personally, I find ’Guix Common Document’ more self-explanatory than
Request-for-Comments. Because once the proposal is accepted or
withdrawn there is no more request nor comment. ;-)

Well, I know RFC is the usual name for this kind of thing (I also used
RFC when discussing it). Nonetheless, I find nicer to not follow such
“convention”, as for example Python Enhancement Proposals (PEP)
does. :-) And the term RFC is already too much overloaded in Guix
mailing list, IMHO.

In addition, I like ’Guix Common Document’ because it expresses what it
is: our shared (common) direction. Moreover it echoes with Commons and
somehow the process tries to capture that: what we collectively want to
preserve. Last, pun with mathematical notion of greatest common divisor
(gcd) [1].

Does it make sense?

Cheers,
simon



J
J
Janneke Nieuwenhuizen wrote on 10 Jan 14:17 +0100
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
871pxaolkg.fsf@gnu.org
Simon Tournier writes:

Hi Simon,

Toggle quote (4 lines)
> On Fri, 10 Jan 2025 at 08:44, Janneke Nieuwenhuizen <janneke@gnu.org> wrote:
>
>>> # Motivation

[..]

Toggle quote (3 lines)
>> * to draw more attention to / have important discussions stand out
>> more in all the "noise", and guided by

[..]

Toggle quote (2 lines)
> Yes! :-)

Great!

Toggle quote (13 lines)
>
>> A drawback could be that it slows
>> development down, but for important changes that may be a good thing?
>
> I would you say yes :-)
>
> And I would also say it’s a counter measure against “Why wasn't I
> consulted“ [1] or some bullet points [2] from the talk that appear to me
> helpful and that had been inspiration.
>
> 1: https://youtu.be/m0rakUuPXFM
> 2: https://simon.tournier.info/posts/2023-10-30-toward-rfc.html

Yes, I tend to agree. Especially improving the chance to get involved
is a very good thing.

Toggle quote (10 lines)
>> The only things that I could suggest is to see if we should make it even
>> be more lightweight/nimble as a first version, e.g, require only two
>> *persons*, so that two authors could start a submission
>>
>> The RFC is *submitted* once it has at least one co-author or
>> supporter in addition to the initial author(s).
>
> Ah you mean that the case of ’two authors’ does not require a Sponsor*,
> right?

Ah yes,

Possibly I'm splitting hairs here too much. But ISTM that having one
author and one sponsor being enough, whereas in the situation where an
early sponsor actually contributes to become a second author, they would
now have to go look for a third person. Dunno.

Toggle quote (4 lines)
> *Sponsor: was ’Supporter’ but renamed in order to avoid confusion
> between supporting the Document before the Discussion Period and
> replying ’I support’ during the Delibration Period.

Noted. Sorry for being sloppy with the terms :)

Toggle quote (16 lines)
>> or use shorter periods, e.g.
>>
>> submission[label=<Submission Period<br />up to 7 days>]
>> comments[label=<Discussion Period<br />15–60 days>]
>> deliberation[label=<Deliberation Period<br />8-14 days>]
>>
>> but I have no strong opinion on these.
>
> About the Discussion Period, I do not have an opinion. From my
> intuition, it appears to be helpful when all have the time and space for
> expressing their comments.
>
> About the Deliberation Period, I think we need to have enough time and 2
> weeks sound the good range based on what we are already doing for patch
> review.

Indeed, that mathes. I was just thinking about a patch that "just
passes the RFC-importance threshold" but could have been applied within
a week because it got a lot of review and attention, then someone
proposes to create an RFC, and then you're automatically looking at
7+30+14 == ~7 weeks.

It's a puzzle indeed. I was thinking: if "everyone involved" argees it
could be done/decided quicker, policy seems to prevent that. Otoh, that
protects the "why wasn't I consulted" problem. So yeah.

If nobody else sees the need to make the first iteration more
lightweight, I'm happy to try this. Thanks again for your efforts.

Greetings,
Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
N
N
Noé Lopez wrote on 10 Jan 17:48 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
877c721uo6.fsf@xn--no-cja.eu
Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (25 lines)
> Hi Noé,
>
> On Fri, 10 Jan 2025 at 11:39, Noé Lopez via Guix-patches via <guix-patches@gnu.org> wrote:
>
>> Can you explain the reasoning for that name? I don’t think I understand
>> what it means.
>
> Personally, I find ’Guix Common Document’ more self-explanatory than
> Request-for-Comments. Because once the proposal is accepted or
> withdrawn there is no more request nor comment. ;-)
>
> Well, I know RFC is the usual name for this kind of thing (I also used
> RFC when discussing it). Nonetheless, I find nicer to not follow such
> “convention”, as for example Python Enhancement Proposals (PEP)
> does. :-) And the term RFC is already too much overloaded in Guix
> mailing list, IMHO.
>
> In addition, I like ’Guix Common Document’ because it expresses what it
> is: our shared (common) direction. Moreover it echoes with Commons and
> somehow the process tries to capture that: what we collectively want to
> preserve. Last, pun with mathematical notion of greatest common divisor
> (gcd) [1].
>
> Does it make sense?

Makes sense, we could add the explanation to the readme :)

Thanks,
Noé
L
L
Ludovic Courtès wrote on 10 Jan 18:15 +0100
[PATCH v8] Add Request-For-Comment process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
877c72lhef.fsf_-_@gnu.org
Hello Simon and all,

Here’s v8 (based on changes I had made to v6) to account for the many
good suggestions that were made in the past few days.

Main changes:

• New “Roles” section (replacing “Supporters”), where “team member” is
defined.

• Mention cancellation when sponsors are not found.

• ASCII art for the diagram.

• Clarify that it is up to the author(s) to decide when to stop the
discussion period and start the deliberation period, as long as it’s
between 30 and 60 days.

• Regarding disapproval, change “must have …” to “should …”.

As for the name, I was fine with “RFC”, I’m fine with “Guix Consensus
Document” (as pukkamustard suggested), but I would rather avoid “Guix
Common Document”, which IMO fails to convey what this is about.

Find v8 attached and a diff compared to v7, for clarity (?).

I’ll refrain from sending any new version!

BTW, should we start using a version control tool? We have to file a
Savannah support request to rename the repo though, if there’s consensus
about one of the “GCD” names.

Ludo’.

v7-to-v8 diff:
Attachment: file
And v8:
S
S
Suhail Singh wrote on 11 Jan 01:47 +0100
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87tta6fa6m.fsf@gmail.com
Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (12 lines)
> Well, I know RFC is the usual name for this kind of thing (I also used
> RFC when discussing it). Nonetheless, I find nicer to not follow such
> “convention”, as for example Python Enhancement Proposals (PEP)
> does. :-) And the term RFC is already too much overloaded in Guix
> mailing list, IMHO.
>
> In addition, I like ’Guix Common Document’ because it expresses what
> it is: our shared (common) direction. Moreover it echoes with Commons
> and somehow the process tries to capture that: what we collectively
> want to preserve. Last, pun with mathematical notion of greatest
> common divisor (gcd) [1].

To the extent it is important that the term be somewhat
self-explanatory, to me the term "Guix Common Document" did not imply
that it is a "proposal", nor that it is intended to "change" or
"enhance" current implementation in some specific way(s). As with all
anecdotal evidence, take this with a grain of salt.

IMO, "Guix Change Process", or "Guix Change Proposal", or "Guix
Enhancement Proposal" may be more self-evident.

--
Suhail
H
H
Hartmut Goebel wrote 7 days ago
Re v8 of Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
438ced5f-5dae-4832-8efd-3243d909fd4c@crazy-compilers.com
Attachment: file
V
V
Vagrant Cascadian wrote 6 days ago
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
87sepnh4gy.fsf@wireframe
On 2025-01-10, Simon Tournier wrote:
Toggle quote (15 lines)
> On Thu, 09 Jan 2025 at 16:40, Vagrant Cascadian <vagrant@debian.org> wrote:
>
>> Is 'no one disagrees' == 'no one replies with "I disapprove"'? It would
>> be nicer if there were more explicit alignment in the words used to make
>> that clearer, if that is, in fact, the intended case. Perhaps
>> literally... e.g. ... (2) if no one declares "I disapprove".
>
> I hope it is clarified with v7 [1]:
>
> 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*.
>
> WDYT?

Hah. Subtle but meaningful difference! Yes, I think that captures it.

Toggle quote (2 lines)
> Maybe, « (2) if no one declares "I disapprove". » seems even clearer?

It does seem clearer, but the match between "I disapprove" and
disapproves is probably sufficient to address my concern.


Toggle quote (6 lines)
>> Obviously, one can and should declare their reservations as part of the
>> discussion that lead up to that point! Although maybe "I accept" should
>> come with the option to declare formal outstanding concerns?
>
> Well, that’s the distinction between “I support” and “I accept”, no?

That is my understanding...

Toggle quote (3 lines)
> Somehow, the idea with “I accept” is “I think it’s the good direction
> although I have these concerns X and Y but I can with live all that”.

It mashes together "good direction, with concerns" and "good enough
direction, with concerns" and "tolerable direction, with concerns". It
may not be necessary having those so fine-grained, and being able to
reflect that as part of the concerns raised and noted.


Toggle quote (3 lines)
> Well, I think these concerns are captured during the “Discussion Period”
> and they should be included in the section “Drawback” or “Open Issues”.

Sounds good to me, sure!


Toggle quote (25 lines)
>> Similarly "I disaprove" should not come out of nowhere; it should be
>> clear why, and perhaps worth having an option to note that in the call
>> for consensus at the end of the Deliberation Period?
>
> I agree. Does this wording v7 [1]:
>
> - “I disapprove”, meaning that one opposes the implementation of the
> proposal. A team member sending this reply must have actively
> cooperated with for discussing the RFC during the discussion period.
> See “Decision Making”.
>
> answer to your comment? In addition, “Decision Making” section
> contains:
>
> 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.
>
> Therefore, “I disapprove” cannot come out of nowhere because the person
> who disapproves must comment during the “Discussion Period” on the why.
>
> That’s said, do you suggest that the reply “I disapprove” during the
> “Deliberating Period” should come with a summary about why?

I *think* so, even though it should have already been made clear through
earlier discussion that there was an issue... it may not always be
clear, especially with asyncronous communications, what each person
final stance is at the end of those prior discussions.


Toggle quote (3 lines)
> And such summary would be then included in the Document with the state
> of ’widthdrawn’.

At least the major points of disapproval should be summarized succinctly
somewhere. I am not terribly particular about where. :)


Toggle quote (9 lines)
>> I also wonder if there is a supermajority of "I accept" over "I support"
>> this maybe should raise some sort of red flag calling into question the
>> proposal... as that is a very weak consensus and perhaps cause for
>> concern.
>
> Good point. Maybe this is the same as above about having these concerns
> written down in the final document under a dedicated section as
> “Drawback” or “Open Issues”. WDYT?

Yeah, something along those lines.


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZ4RwHQAKCRDcUY/If5cW
ql+uAQCbHM1DE+qNNI2n3TZGDAyUL9H4oxmONCWXexiKkdB9DAEAtBy4KhDkI7hJ
R027G+OGlqoFsO3x8sCb8f0Nr5ITGAc=
=N1li
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote 6 days ago
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Hartmut Goebel)(address . h.goebel@crazy-compilers.com)(address . 74736@debbugs.gnu.org)
87wmey9zxu.fsf_-_@gnu.org
Hi Hartmut,

Hartmut Goebel <h.goebel@crazy-compilers.com> skribis:

Toggle quote (2 lines)
> being late to the discussion, here are my 2 cent. Please apologize if things have already been discussion and decided.

No worries, we still have a bit of time to discuss, thanks for chiming in!

I agree with most of your suggestions/comments. I’ll just comment where
deserved:

Toggle quote (3 lines)
> Section "How the Process Works", number 3: I don't understand "must not be prospective". According to dict.leo.org, "prospective"
> translates in German to adjectives like long-sighted put also to in the future, estimated, likley.

This is meant to suggest (I believe) that the process is not meant as a
way to brainstorm new ideas; instead, it should be applied to ideas that
we roughly know how to implement.

Toggle quote (3 lines)
> Section "Roles", Sponsor: "is a contributor" and "should be a contributor". Contributor to the GCD or to Guix? What makes one a
> "contributor"? Is the term defined somewhere else, e.g. in the Guix Manual?

It’s not defined; we can add it to “Roles”.

Toggle quote (3 lines)
> Section "Submission Period", Withdrawal and Resubmit: Are there any rules why or when an author may resubmit the GCD? Is feedback
> like "The idea is good, but a lot of things popped up during discussion, so we need revise the GCD in great parts" a case for this?

It’s up to authors to decide what to do based on the feedback they got
(or lack thereof). If nobody was willing to sponsor it, then perhaps
it’s a sign that people either disapprove it or are uninterested in it
in its current form.

Toggle quote (2 lines)
> Section "Discussion Period": Can the period be extended? What happens if there is still heavy discussion aber 60 days?

It has to be at most 60 days, I think that’s quite clear.

Toggle quote (3 lines)
> Section "Deliberate period": IMHO "deliberation" is the wrong term, since the team members send in their votes. I suggest calling it "Voting
> Period", even if someone might argue that in consent based decision making, "deliberation" is the term to use.

I proposed “Voting Period” but we eventually considered that
“Deliberation Period” would better represent what this is.

Toggle quote (2 lines)
> Section "Deliberate period":The 25% are to be counted at which valuation date? I propose:

You propose what? :-)

Thanks,
Ludo’.
A
A
Andreas Enge wrote 4 days ago
Re: Guix Common Document process (v7) (was: Request-For-Comment, RFC)
(name . Arun Isaac)(address . arunisaac@systemreboot.net)
Z4fVhpXCDeYXPzUE@jurong
Hello all,

thank you for moving this forward! May I suggest to keep guix-devel
posted when sending comments to the bug?

I like Arun's suggestion of having a separate mailing list for
discussing these important changes (GCD? Greatest common divisors!)
in the future instead of guix-devel.

Janneke, I think another motivation for such a process is to make sure
that some decision is actually reached in the end, instead of letting
discussions taper out. I feel that this tends to happen in Guix and Guix
Foundation.

Concerning consensus, I am mildly worried about deadlocks (including
when trying to modify this RFC/GCD). What happens if some person insists
on disapproving? (I am reminded of the European Union where one member
state can effectively hold the others hostage over certain issues.)
The RFC/GCD says: "A team member sending this reply should have made
constructive comments during the discussion period." What if they have
not? How about adding a quorum of "disapprove" votes to have effect?
(Actually in Europe *two* member states are needed for a veto in the
Council.)

Notice also that the suggestion bootstraps the team members into a
decision taking body - so far we have added people more or less randomly
to teams. For instance, team members need not have commit rights and
thus be vetted by three fellow committers. So should we replace "team
members" by "committers"? Or keep the proposal as is and immediately
work on a new GCD to somehow safeguard the addition of people to a team?

Andreas
I
I
indieterminacy wrote 4 days ago
Re: Guix Common Document process (v7)
(name . Andreas Enge)(address . andreas@enge.fr)
6b4b2d6b8af55e03155544fd8ef05cab@libre.brussels
Hello Andreas,

On 2025-01-15 15:34, Andreas Enge wrote:
Toggle quote (14 lines)
> ...
>
> Concerning consensus, I am mildly worried about deadlocks (including
> when trying to modify this RFC/GCD). What happens if some person
> insists
> on disapproving? (I am reminded of the European Union where one member
> state can effectively hold the others hostage over certain issues.)
> The RFC/GCD says: "A team member sending this reply should have made
> constructive comments during the discussion period." What if they have
> not? How about adding a quorum of "disapprove" votes to have effect?
> (Actually in Europe *two* member states are needed for a veto in the
> Council.)
>

I wonder whether the 'political ability' of somebody being able to use
deadlock leavers
should be limited to those who are active/recent members.

Does it seem sensible to have this in place already?

Toggle quote (10 lines)
> Notice also that the suggestion bootstraps the team members into a
> decision taking body - so far we have added people more or less
> randomly
> to teams. For instance, team members need not have commit rights and
> thus be vetted by three fellow committers. So should we replace "team
> members" by "committers"? Or keep the proposal as is and immediately
> work on a new GCD to somehow safeguard the addition of people to a
> team?
>

Btw, thanks Andreas for your work as Treasurer!

See you in Brussels soon,


Jonathan
S
S
Simon Tournier wrote 4 days ago
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(name . Suhail Singh)(address . suhailsingh247@gmail.com)
877c6v533w.fsf@gmail.com
Hi,

On Fri, 10 Jan 2025 at 19:47, Suhail Singh <suhailsingh247@gmail.com> wrote:

Toggle quote (3 lines)
> IMO, "Guix Change Process", or "Guix Change Proposal", or "Guix
> Enhancement Proposal" may be more self-evident.

There is only two things really hard: cache invalidation and naming. ;-)

Thank you for these suggestions.

Cheers,
simon
S
S
Simon Tournier wrote 4 days ago
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
8734hj52g9.fsf@gmail.com
Hi,

On Sun, 12 Jan 2025 at 17:45, Vagrant Cascadian <vagrant@debian.org> wrote:

Toggle quote (10 lines)
> It mashes together "good direction, with concerns" and "good enough
> direction, with concerns" and "tolerable direction, with concerns". It
> may not be necessary having those so fine-grained, and being able to
> reflect that as part of the concerns raised and noted.
>
>> Well, I think these concerns are captured during the “Discussion Period”
>> and they should be included in the section “Drawback” or “Open Issues”.
>
> Sounds good to me, sure!

[...]

Toggle quote (11 lines)
>>> I also wonder if there is a supermajority of "I accept" over "I support"
>>> this maybe should raise some sort of red flag calling into question the
>>> proposal... as that is a very weak consensus and perhaps cause for
>>> concern.
>>
>> Good point. Maybe this is the same as above about having these concerns
>> written down in the final document under a dedicated section as
>> “Drawback” or “Open Issues”. WDYT?
>
> Yeah, something along those lines.

Does it address the comment above about fine-grained “I accept”?


Cheers,
simon
S
S
Simon Tournier wrote 4 days ago
(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)
87v7uf3n9a.fsf@gmail.com
Hi,

On Fri, 10 Jan 2025 at 14:17, Janneke Nieuwenhuizen <janneke@gnu.org> wrote:

Toggle quote (10 lines)
>> Ah you mean that the case of ’two authors’ does not require a Sponsor*,
>> right?
>
> Ah yes,
>
> Possibly I'm splitting hairs here too much. But ISTM that having one
> author and one sponsor being enough, whereas in the situation where an
> early sponsor actually contributes to become a second author, they would
> now have to go look for a third person. Dunno.

I don’t know either. :-)

Well, from my point of view, once the proposal is “Submitted”, it means
it had been qualified (2 authors or 1 author + 1 sponsor) and then it
does not matter much if the name appears as author or sponsor; or if
more people become author.

The essential is to have a fruitful “Discussion Period” and then to
cross the final line, IMHO.


Toggle quote (4 lines)
> It's a puzzle indeed. I was thinking: if "everyone involved" agrees it
> could be done/decided quicker, policy seems to prevent that. Otoh, that
> protects the "why wasn't I consulted" problem. So yeah.

Yeah, a balance. :-)

I think the process can be refined later if it does not match enough the
way we collaborate. After all, the aim is to ease the important
decisions and not to add useless bureaucracy “à la française”. ;-)

Cheers,
simon
S
S
Simon Tournier wrote 4 days ago
Re: Guix Common Document process (v7) (was: Request-For-Comment, RFC)
87msfr1zeu.fsf@gmail.com
Hi,
On Wed, 15 Jan 2025 at 16:34, Andreas Enge <andreas@enge.fr> wrote:

Toggle quote (4 lines)
> I like Arun's suggestion of having a separate mailing list for
> discussing these important changes (GCD? Greatest common divisors!)
> in the future instead of guix-devel.

Why do we need a special mailing list? I understand why one does not
want to subscribe because the volume might appear to high. Therefore,
in this case, I agree that guix-devel is not suitable for announcement.
That’s why, I proposed (v7) to use the low traffic info-guix for
announcing and asking for inputs.

However, I find better to have the discussion happens inside the bug
tracker. And easier too; because some contributors when replying break
the email thread (incorrect in-reply-to) then it’s very painful to
follow. Later, using the bug tracker for discussing, it’s also easy to
re-read all the comments for one willing to understand why we ended up
with such specific GCD.

WDYT?

Toggle quote (4 lines)
> Concerning consensus, I am mildly worried about deadlocks (including
> when trying to modify this RFC/GCD). What happens if some person insists
> on disapproving?

Today, how does it happen?

Well, I think that better to root the process on what we did over the
past 12 years. :-) And for now, we always managed the situation, I
guess. ;-)

Moreover, it’s bounded by an active participation during the “Discussion
Period”. Therefore, if one person cannot live with the final state, it
means we failed to find a solution based on what we agree. Somehow, the
whole idea with consensus is to be pro-active in resolving locks before
they happen, well that’s my understanding. :-)

Yes, I agree what happens with examples as: 3/4 support the proposal and
1/4 disagree? Well, it would mean we do not have the consensus. until
now we tried to rely on such method for decision making. And it seems
to work, no?

Toggle quote (4 lines)
> The RFC/GCD says: "A team member sending this reply should have made
> constructive comments during the discussion period." What if they have
> not?

They cannot. A deliberating member must be active during the
“Discussion Period” else this member cannot disapprove. Otherwise it
would be unfair for all non-deliberating participants. :-)

Toggle quote (2 lines)
> How about adding a quorum of "disapprove" votes to have effect?

Personally, I am more worried with the quorum of 25% that could be
difficult to reach than about one “disapprove”.

Well, maybe we could set to 2. But why not 3? Or 4? Or a percentage?
Somehow, a quorum defeats the idea of “Decision Making” based on
consensus, no?

Toggle quote (4 lines)
> Notice also that the suggestion bootstraps the team members into a
> decision taking body - so far we have added people more or less randomly
> to teams.

Yes, I agree. Currently, teams members is not really defined. However,
it appears to me another work than the current proposal. For instance,
we could imagine a GCD that explain the various roles: User,
Contributor, Team Member, Committer, Maintainer, etc. Next step? :-)
Toggle quote (3 lines)
> Or keep the proposal as is and immediately
> work on a new GCD to somehow safeguard the addition of people to a team?

I am in favor of that: work a new GCD about the various roles.

Cheers,
simon
S
S
Simon Tournier wrote 4 days ago
Re: [bug#74736] [PATCH v8] Add Request-For-Comment process.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87ed131z0y.fsf@gmail.com
Hi,

On Fri, 10 Jan 2025 at 18:15, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (4 lines)
> As for the name, I was fine with “RFC”, I’m fine with “Guix Consensus
> Document” (as pukkamustard suggested), but I would rather avoid “Guix
> Common Document”, which IMO fails to convey what this is about.

Just to mention that pukkamustard also suggested ’Guix Common Document’
as the previous Guix Days. ;-) See [1].

Could you explain why “Guix Common Document” fails to convey what this
is about?

That’s said, I’m fine with Guix Consensus Document. Because even if we
change for another “Decision Making“ strategy as a complex voting
method, the initial idea will be always encoded for ever! :-)

1: [post Guix Days] Guix Common Document (was: Request-For-Comment process)
Simon Tournier <zimon.toutoune@gmail.com>
Sat, 03 Feb 2024 11:34:13 +0100
id:87y1c1kfa2.fsf@gmail.com

Toggle quote (10 lines)
> + - A *sponsor* is a contributor who, during the submission period (see
> + below), informs the author(s) that they would like to support the
> + RFC by participating in discussions, providing constructive comments
> + to help the author(s), soliciting opinions, and acting as
> + timekeepers.
> +
> + Sponsors should be contributors who consider being sufficiently
> + familiar with the project’s practices; hence it is recommended, but
> + not mandatory, to be a team member.

I would add:

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.

or something along these lines. Because it appears to me important that
we write down that.

WDYT?

Cheers,
simon
V
V
Vagrant Cascadian wrote 3 days ago
Re: Guix Common Document process (v7) (was: Request-For-Comment, RFC)
87ed13hd1l.fsf@wireframe
On 2025-01-15, Simon Tournier wrote:
Toggle quote (17 lines)
> On Wed, 15 Jan 2025 at 16:34, Andreas Enge <andreas@enge.fr> wrote:
>> Concerning consensus, I am mildly worried about deadlocks (including
>> when trying to modify this RFC/GCD). What happens if some person insists
>> on disapproving?
>
> Today, how does it happen?
>
> Well, I think that better to root the process on what we did over the
> past 12 years. :-) And for now, we always managed the situation, I
> guess. ;-)
>
> Moreover, it’s bounded by an active participation during the “Discussion
> Period”. Therefore, if one person cannot live with the final state, it
> means we failed to find a solution based on what we agree. Somehow, the
> whole idea with consensus is to be pro-active in resolving locks before
> they happen, well that’s my understanding. :-)

I think it is important to not think of the peson as blocking consensus
but to focus on the unresolved issue as blocking consensus. This leads
to identifying what remains to be fixed, rather than interpersonal
conflicts and finger pointing and hurt feelings.

It is a subtle difference, and it is reflected in the functional aspects
of last proposal I reviewed, as they must be involved in the discussion
in order to disapprove of a decision. Getting the framing of focusing on
the issues raised rather than the people raising the issues into our
minds might take more work. :)


Toggle quote (3 lines)
> Yes, I agree what happens with examples as: 3/4 support the proposal and
> 1/4 disagree?

Yes, I worry then you are starting to approach voting, where it is more
important to rally your supporters than discuss with and understand
those who think most differently.

With consensus process, it is often a good strategy to get the feedback
and build understanding with the people most likely to dissent, by
honestly listening to their perspective, rather than starting off with a
majority opinion of what "everybody" already agrees with, and then
pressuring everyone else to go along with it.


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZ4hEtgAKCRDcUY/If5cW
qt0HAQDaUVXL6jhcSs/xoJxRovBUjjGYeUVV6rdcHx8hMOUGCQEA1H+t4Zsl5esW
pcL/4UIhFIA/C5Tu5lUy8hGHaMkjwgo=
=PY+I
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote 3 days ago
Re: [bug#74736] [PATCH v8] Add Request-For-Comment process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87frlj5e14.fsf@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (3 lines)
> Could you explain why “Guix Common Document” fails to convey what this
> is about?

“Document” is very broad, and “common” is hard for me to understand in
this context: common to whom? to what? can there more than one “common
document”? The phrase “common document” doesn’t convey that this is
about proposing changes and deciding on them.

“Request for comment” shows upfront that it’s about soliciting opinions.

“Consensus document” suggests that it’s about documenting the outcome of
a decision making process.

Toggle quote (16 lines)
>> + - A *sponsor* is a contributor who, during the submission period (see
>> + below), informs the author(s) that they would like to support the
>> + RFC by participating in discussions, providing constructive comments
>> + to help the author(s), soliciting opinions, and acting as
>> + timekeepers.
>> +
>> + Sponsors should be contributors who consider being sufficiently
>> + familiar with the project’s practices; hence it is recommended, but
>> + not mandatory, to be a team member.
>
> I would add:
>
> 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.

I think the second sentence is redundant with what is written elsewhere:
that it applies to significant changes, and that it’s about soliciting
opinions (and I think it’s important to keep each section to-the-point.)

I’m fine with the first one though.

(“As a sponsor”, with the article “a”.)

Thanks,
Ludo’.
A
A
Andreas Enge wrote 3 days ago
Re: Guix Common Document process (v7) (was: Request-For-Comment, RFC)
(name . Vagrant Cascadian)(address . vagrant@debian.org)
Z4jQBP_a3W23Rphb@jurong
Am Wed, Jan 15, 2025 at 03:28:54PM -0800 schrieb Vagrant Cascadian:
Toggle quote (3 lines)
> It is a subtle difference, and it is reflected in the functional aspects
> of last proposal I reviewed, as they must be involved in the discussion

They "should" be involved in the last proposal, no? And there is no
explanation of what this means and how it is enforced. Who decides that
a person's disapproval does not count because they have not contributed
sufficiently?

m Wed, Jan 15, 2025 at 11:32:25PM +0100 schrieb Simon Tournier:
Toggle quote (5 lines)
> > Concerning consensus, I am mildly worried about deadlocks (including
> > when trying to modify this RFC/GCD). What happens if some person insists
> > on disapproving?
> Today, how does it happen?

Today, we have no process, so a benevolent dictator (or anyone with
actual operational power) may silently (or noisily) overrule a
disapproval. With a process in place, the veto power is enshrined.

Andreas
S
S
Suhail Singh wrote 3 days ago
Re: Guix Common Document process (v7)
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87bjw7vubl.fsf@gmail.com
Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (3 lines)
> That’s why, I proposed (v7) to use the low traffic info-guix for
> announcing and asking for inputs.

info-guix has the following description which, I believe, makes it
well-suited to the task:

"Low-traffic mailing list for announcements to Guix users."

Toggle quote (3 lines)
> However, I find better to have the discussion happens inside the bug
> tracker.

Agreed.

Toggle quote (3 lines)
> And easier too; because some contributors when replying break the
> email thread (incorrect in-reply-to) then it’s very painful to follow.

Thank you for considering this failure mode.

Toggle quote (4 lines)
> Later, using the bug tracker for discussing, it’s also easy to re-read
> all the comments for one willing to understand why we ended up with
> such specific GCD.

Agreed.

--
Suhail
L
L
Ludovic Courtès wrote 3 days ago
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Andreas Enge)(address . andreas@enge.fr)
874j1y3fkr.fsf_-_@gnu.org
Hello!

Andreas Enge <andreas@enge.fr> skribis:

Toggle quote (4 lines)
> Concerning consensus, I am mildly worried about deadlocks (including
> when trying to modify this RFC/GCD). What happens if some person insists
> on disapproving?

This is a general question about consensus building.

For the situation you describe not to happen, the “conditions for
consensus” must be meant, as explained for instance in:


Perhaps the “Decision Making” section could stress that, with a
paragraph above “To learn …” along these lines:

Consensus building requires that participants share a common goal,
trust each other to act in good faith, listen to one another’s
concerns to take them into account, and are committed to donating
enough of their time to achieve it.

A deliberating member who “insists on disapproving”, without proposing
alternative paths, wouldn’t meet these requirements.

I believe right now people who become team members or committers have
already demonstrated these abilities. I think this is where these
expectations should be clarified and agreed upon.

Ludo’.
S
S
Simon Tournier wrote 3 days ago
Re: [bug#74736] [PATCH v8] Add Request-For-Comment process.
(name . Ludovic Courtès)(address . ludo@gnu.org)
871px3t7cw.fsf@gmail.com
Hi,

On Thu, 16 Jan 2025 at 10:00, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (3 lines)
> “Consensus document” suggests that it’s about documenting the outcome of
> a decision making process.

Thanks for explaining.

Toggle quote (4 lines)
> I’m fine with the first one though.
>
> (“As a sponsor”, with the article “a”.)

Noted.

Thanks,
simon
S
S
Simon Tournier wrote 3 days ago
Re: [bug#74736] Re v8 of Add Request-For-Comment process.
87frlislgg.fsf@gmail.com
Hi,

Thanks for your comments.

On Sun, 12 Jan 2025 at 16:57, Hartmut Goebel <h.goebel@crazy-compilers.com> wrote:

Toggle quote (4 lines)
> Section "How the Process Works", number 2: Is –sequence number obvious
> enough? If the GCD is not pushed to the repo right after creating,
> other authors need to look at the patches-mailinglist.

The “sequence number“ of GCD is incremented once the proposal is
‘Submitted’. Once ’Submitted’, the GCD process ends with two potential
states: accepted or withdrawn.

Toggle quote (5 lines)
> Section "How the Process Works", number 3: I don't understand "must
> not be prospective". According to dict.leo.org, "prospective"
> translates in German to adjectives like long-sighted put also to in
> the future, estimated, likley.

The complete sentence reads: « 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. ». Because the GCD must not be a brainstorming
session or a vague idea but a concrete proposal.

Well, I am not native and ‘prospective’ sounds close to French. :-)
Maybe native speaker might say whether that’s the correct term for the
idea behind.

Toggle quote (3 lines)
> Section "How the Process Works", number 4: It should be states
> explicitly that the patch is for/against guix-consensus-documents.

I’m not sure to get the comment. Is it not clear with

1. Clone https://…/guix-consensus-documents.git

?

Toggle quote (5 lines)
> Section "Roles", Sponsor: "is a contributor" and "should be a
> contributor". Contributor to the GCD or to Guix? What makes one a
> "contributor"? Is the term defined somewhere else, e.g. in the Guix
> Manual?

Indeed, thanks.

Toggle quote (2 lines)
> Section "Timelime", Flowshart: Some kind of "declined" is missing.

Updated.

Toggle quote (4 lines)
> Section "Submission Period": withdraw and can resubmit "possibly under
> a new GCD number". Why possibly? What are the rules whether a new
> number has to be used?

Once the GCD is “Submitted”, it ends with the state either “Accepted” or
“Widthdrawn”. Therefore, if a “Submitted” GCD is “Widthdrawn”, then a
new “Submission” gets a new number (if the new becomes “Submitted”).

That’s the idea.

Toggle quote (5 lines)
> Section "Submission Period", Withdrawal and Resubmit: Are there any
> rules why or when an author may resubmit the GCD? Is feedback like
> "The idea is good, but a lot of things popped up during discussion, so
> we need revise the GCD in great parts" a case for this?

It seems up to the authors, no? And it depends on why author withdrawn
before the “Deliberation Period”.

Toggle quote (3 lines)
> Section "Discussion Period": Can the period be extended? What happens
> if there is still heavy discussion aber 60 days?

IMHO, it’s better if we keep a bounded period. Somehow, if after 60
days we are not able to have a consensus, it means the idea is not ready
yet. Based on this output, nothing prevent to resubmit later once new
and a fresh point of view comes in.

Toggle quote (5 lines)
> Section "Deliberate period": IMHO "deliberation" is the wrong term,
> since the team members send in their votes. I suggest calling it
> "Voting Period", even if someone might argue that in consent based
> decision making, "deliberation" is the term to use.

I prefer the term ’deliberation’, from dictionary:

+ Deliberation is the long and careful consideration of a subject.
+ Deliberations are formal discussions where an issue is considered
carefully.

And, to me the term ’vote’ implies to pick a method for voting.

Well, if ’vote’ is preferred over ’deliberation’, then I would suggest:
“Consensus Voting Period” to make it clear that’s only the concise
expression of what happened during the “Discussion Period”.


Toggle quote (3 lines)
> Section "Deliberate period":The 25% are to be counted at which
> valuation date? I propose:

Is something lost in translation? :-)

Toggle quote (3 lines)
> Section "Deliberate period": The sentence "Deliberation aims to …"
> should be moved near the beginning of the section.

I agree.

Toggle quote (2 lines)
> Section "Deliberate period":Same for "Anyone who is a team member..."

I agree. And the same idea appeared twice, hence cleaned up.

Toggle quote (4 lines)
> Section "Deliberate period": "GCD acceptence" and "withdrawal does not
> necessarily" should go out of this section into as more general
> part. Mayby into "Decision Making" (see my next point on this).

I do not know…

Toggle quote (3 lines)
> Section "Deliberate period": IMHO if a vast number of team members
> disapprove the proposal it should be taken as rejected.

There is no formal distinction between ’withdrawn’ because the author
decides to do so or because the consensus leads to a disparagement.

Maybe we could introduce that have four potential states for the GCD
(accepted or deprecated, rejected, withdrawn).

Toggle quote (3 lines)
> Section "Decision Making": should go in front of "Timeline", since it
> describes the principle.

I do not have any opinion.


Cheers,
simon
S
S
Simon Tournier wrote 3 days ago
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
87zfjqr62l.fsf@gmail.com
Hi,

On Thu, 16 Jan 2025 at 17:10, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (6 lines)
>> Concerning consensus, I am mildly worried about deadlocks (including
>> when trying to modify this RFC/GCD). What happens if some person insists
>> on disapproving?
>
> This is a general question about consensus building.

I agree.

Toggle quote (8 lines)
> Perhaps the “Decision Making” section could stress that, with a
> paragraph above “To learn …” along these lines:
>
> Consensus building requires that participants share a common goal,
> trust each other to act in good faith, listen to one another’s
> concerns to take them into account, and are committed to donating
> enough of their time to achieve it.

To me, this paragraph would be redundant with this other paragraph:

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.


Toggle quote (3 lines)
> A deliberating member who “insists on disapproving”, without proposing
> alternative paths, wouldn’t meet these requirements.

Yes and I think that already included in the paragraph above, no?


Toggle quote (4 lines)
> I believe right now people who become team members or committers have
> already demonstrated these abilities. I think this is where these
> expectations should be clarified and agreed upon.

It’s also my point of view.

As we clarified over the time the expectations for Committers, Reviewing
the work of others, etc. I think we need another GCD in order to
document these expectations.

Cheers,
simon
H
H
Hartmut Goebel wrote 3 days ago
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 74736@debbugs.gnu.org)
ec3ea9b4-8792-4f91-b324-e714cc7f0c57@crazy-compilers.com
Hi Ludo,

Am 13.01.25 um 22:17 schrieb Ludovic Courtès:
Toggle quote (8 lines)
> Hartmut Goebel<h.goebel@crazy-compilers.com> skribis:
>
>
>> Section "Deliberate period": IMHO "deliberation" is the wrong term, since the team members send in their votes. I suggest calling it "Voting
>> Period", even if someone might argue that in consent based decision making, "deliberation" is the term to use.
> I proposed “Voting Period” but we eventually considered that
> “Deliberation Period” would better represent what this is.

understood that the base idea behind decision making is "Consensus".
This is mentioned in "motivation", but rather like a side note than as
an important principle.

Therefore I propose moving the section "Decision Making" into
"Motivation" – or make it a top-level section just below "Motivation".

Toggle quote (3 lines)
>> Section "Deliberate period":The 25% are to be counted at which valuation date? I propose:
> You propose what? :-)

:-)

"… 25% of all team members – as of the start of the Deliberation Period – …"



--
Regards
Hartmut Goebel

| Hartmut Goebel |h.goebel@crazy-compilers.com |
|www.crazy-compilers.com | compilers which you thought are impossible |
Attachment: file
H
H
Hartmut Goebel wrote 3 days ago
Re: [bug#74736] Re v8 of Add Request-For-Comment process.
54393837-c762-4eb2-a3fb-0d566583b88d@crazy-compilers.com
Hi,

tanks for the updated version.

Toggle quote (8 lines)
> On Sun, 12 Jan 2025 at 16:57, Hartmut Goebel<h.goebel@crazy-compilers.com> wrote:
>
>> Section "How the Process Works", number 2: Is –sequence number obvious
>> enough? If the GCD is not pushed to the repo right after creating,
>> other authors need to look at the patches-mailinglist.
> The “sequence number“ of GCD is incremented once the proposal is
> ‘Submitted’.

The current text does not state this. Rather it implies, the sequence
number is to be picked when creating the draft ("How the Process Works",
number 2). So if two persons draft a GCD at nearly the same time, how to
prevent both are picking the same number? (See proposal below.)

It also came to my mind, that the text does not explain who is pushing
the patch to the GCD repo and when (at which point in the process).
Proposed text:

At the end of section "Submission Period":

If the proposal is "submitted", the author updates the sequence
number and the state in the patch, applies the patch and pushes the
change to the main branch of the GCD repo. The commit message should
read "Submit GCD XYZ: Short Title". See "Merging The (final) GCD)".
— The next step is the *discussion period*.

If the proposal is "canceled" or "withdrawn", the author closes the
"guix-patches" issue and nothing is pushed to the GCD repo. The
process ends here.

Toggle quote (7 lines)
> The complete sentence reads: « 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. ». Because the GCD must not be a brainstorming
> session or a vague idea but a concrete proposal.
>
> Well, I am not native and ‘prospective’ sounds close to French. :-)

I'm not native either and I simply don't understand the meaning of "not
be prospective" - even in conjunction with the remaining part. I suggest
to either use a different less eloquent wording, rephrase it like you
did, or as a last resort, remove this phrase.

Also for me "formalize" sounds like the wrong term, as it translates to
"write a [math, chemistry, etc.] formula", "make official" or "fix in a
contract". Anyhow, this is what shall be expressed?

Proposal:

The GCD must describe a concrete idea and sketch a plan to implement
it, even if not all details are known. The GCD must not be a
brainstorming session or a vague idea but a concrete proposal.

Toggle quote (6 lines)
>> Section "How the Process Works", number 4: It should be states
>> explicitly that the patch is for/against guix-consensus-documents.
> I’m not sure to get the comment. Is it not clear with
>
> 1. Clone https://…/guix-consensus-documents.git

It was not oblivious to me. This is why I'd rather state i explicitly.

Toggle quote (3 lines)
>> Section "Timelime", Flowshart: Some kind of "declined" is missing.
> Updated.

"Canceled" is the term used in "Submission Period". Sorry for the confusion.


Toggle quote (10 lines)
>
>> Section "Submission Period": withdraw and can resubmit "possibly under
>> a new GCD number". Why possibly? What are the rules whether a new
>> number has to be used?
> Once the GCD is “Submitted”, it ends with the state either “Accepted” or
> “Widthdrawn”. Therefore, if a “Submitted” GCD is “Widthdrawn”, then a
> new “Submission” gets a new number (if the new becomes “Submitted”).
>
> That’s the idea.

Thus the word "possibly" (translates to "maybe", "perhaps"), has to be
removed from the sentence, right?

Toggle quote (7 lines)
>> Section "Discussion Period": Can the period be extended? What happens
>> if there is still heavy discussion aber 60 days?
> IMHO, it’s better if we keep a bounded period. Somehow, if after 60
> days we are not able to have a consensus, it means the idea is not ready
> yet. Based on this output, nothing prevent to resubmit later once new
> and a fresh point of view comes in.

be at most 60 days, I think that’s quite clear."

Either way, this need to be stated more explicit.

Toggle quote (12 lines)
>> Section "Deliberate period": "GCD acceptence" and "withdrawal does not
>> necessarily" should go out of this section into as more general
>> part. Mayby into "Decision Making" (see my next point on this).
> I do not know…
>
>> Section "Deliberate period": IMHO if a vast number of team members
>> disapprove the proposal it should be taken as rejected.
> There is no formal distinction between ’withdrawn’ because the author
> decides to do so or because the consensus leads to a disparagement.
>
> Maybe we could introduce that have four potential states for the GCD
> (accepted or deprecated, rejected, withdrawn).
Rethinking this: Since we are seeking consensus, it does not actually
matter whether the GCD was rejected or withdrawn.

And some new points:

Section "Merging Final GCDs" puts the burden of updating the meta-date
and announcing to a committer. Agreed that the author might not have
commit permissions to the GCD repo. Anyhow many might abstain from
committing it there in this case :-)

Section "Merging Final GCDs" uses "committer" in terms of "has commit
permissions to the GCD repo" – which is different from teh definition in
roles. Thus a different or more specific term should be used here.

--
Regards
Hartmut Goebel

| Hartmut Goebel |h.goebel@crazy-compilers.com |
|www.crazy-compilers.com | compilers which you thought are impossible |
Attachment: file
H
H
Hartmut Goebel wrote 3 days ago
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
d03e9184-f567-4963-85b8-12e93435330c@crazy-compilers.com
Hi,

enclosed please find a patch for v9. It proposes descriptions for
missing states, cases and transitions. I found it easier to create the
patch than describing what I propose to change.

This patch does *not* include my proposals from my other mails today,
but new ones.

In addition, I suggest exchanging "Process Overview" and "Roles". I left
this away to keep the patch small.

--
Regards
Hartmut Goebel

| Hartmut Goebel | h.goebel@crazy-compilers.com |
| www.crazy-compilers.com | compilers which you thought are impossible |
--- 001-gcd-process-v9.md 2025-01-16 19:08:54.591520179 +0100
+++ 001-gcd-process-v9-hg.md 2025-01-16 21:34:52.637787901 +0100
@@ -70,7 +70,9 @@
These day-to-day contributions remain governed by the process described
by the manual in its “Contributing” chapter.
-## How the Process Works
+# How the Process Works
+
+## Getting Started
1. Clone
@@ -85,10 +87,8 @@
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 “Submission Period” below.
-
-Submitted GCD is announced at `info-guix@gnu.org`.
+Your GCD is now in "draft" state and will be processed as described in
+the next sections.
## Roles
@@ -116,7 +116,7 @@
translation, reviewing, etc. and more broadly any person feeling part
of the Guix community.
-## Timeline
+## Process Overview
A GCD must follow the process illustrated by the diagram below,
consisting of several *periods*.
@@ -141,18 +141,36 @@
The subsections below detail the various periods and their duration.
-### Submission Period (up to 7 days)
+## Submission Period (up to 7 days)
+
+During the Submission Period the authors seek at least one sponsor
+(see below) for their *draft* GCD in addition to the author(s).
+Contributors can volunteer to be sponsors by publicly replying “I
+sponsor” to the authors' announcement.
-Anyone can author and submit a GCD as a regular patch and look for
-sponsors (see below). The GCD is *submitted* once one or more people
-have volunteered to be sponsors by publicly replying “I sponsor”; it is
-canceled if no sponsor could be found during that period. The next step
-is the *discussion period*.
+Once one or more sponsors are found, the authors can *submit* the GCD
+(see below) and start the *discussion period*.
+
+The GCD is *canceled* if no sponsor could be found during that period.
Authors 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)
+### Submitting the GCD
+
+[[Some explanation like "Merging the Final GCD".
+Plus handling the case that the author disappears:]]
+
+The *discussion period* shall be started within 7 days after
+submission. After that, the stale GCD may be set to *withdrawn* by a
+Maintainer of the Guix project.
+
+
+## Discussion Period (at least 30 days, up to 60 days)
+
+The *discussion period* starts when the authors
+announce the submission of the GCD at both `info-guix@gnu.org`
+and `guix-devel@gnu.org`.
Once submitted, the GCD is publicly discussed by all the members of the
community. Authors are encouraged to publish updated versions
@@ -164,7 +182,14 @@
of the discussion period, the author(s) may publish a final version and
announce the start of the *deliberation period*.
-### Deliberation Period (14 days)
+The *deliberation period* shall be started within 7 days after the end
+of the discussion period. After that, the stale GCD may be set to
+*withdrawn* by a Maintainer of the Guix project.
+
+## Deliberation Period (14 days)
+
+The *deliberation period* starts when the authors
+publish a final version of the GCD at `guix-devel@gnu.org`.
Deliberation aims at consolidating consensus; see “Decision Making”
below.
@@ -230,17 +255,19 @@
any later version.
-## GCD Template
+# Related Documents
+
+* **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
+# Cost of Reverting
The GCD process described in this document can be amended by subsequent
GCDs.
-## Drawbacks
+# Drawbacks
There is a risk that the additional process will hinder contribution more than
it would help. We should stay alert that the process is only a way to help
@@ -251,7 +278,7 @@
and notably avoid repeating arguments, avoid using exclusionary jargon,
and solicit opinions of those who remained silent.
-## Open Issues
+# 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
S
S
Simon Tournier wrote 2 days ago
Do you read it? (was: [bug#74736] [PATCH v9] Add Guix Consensus Document process)
(address . 74736@debbugs.gnu.org)
87plkmnyhi.fsf@gmail.com
Hi,

The number v9 of my message is superseded by Hartmut message:

[bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
Hartmut Goebel <h.goebel@crazy-compilers.com>
Thu, 16 Jan 2025 21:41:26 +0100
id:d03e9184-f567-4963-85b8-12e93435330c@crazy-compilers.com


BTW, that’s weird! The message with the header below appears in my Sent
folder (Gmail webinterface) but has not reached the list. Hum?

Toggle snippet (30 lines)
Return-Path: <zimon.toutoune@gmail.com>
Received: from lili (roam-nat-fw-prg-194-254-61-41.net.univ-paris-diderot.fr. [194.254.61.41])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-437c7499884sm68489005e9.5.2025.01.16.10.02.10
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Thu, 16 Jan 2025 10:02:11 -0800 (PST)
From: Simon Tournier <zimon.toutoune@gmail.com>
To: 74736@debbugs.gnu.org
Cc: =?utf-8?Q?No=C3=A9?= Lopez <noelopez@free.fr>, Ludovic =?utf-8?Q?Court?=
=?utf-8?Q?=C3=A8s?= <ludo@gnu.org>,
Christopher Baines <guix@cbaines.net>, "Artyom V. Poptsov"
<poptsov.artyom@gmail.com>, Suhail Singh <suhailsingh247@gmail.com>,
"pukkamustard" <pukkamustard@posteo.net>, Vagrant Cascadian
<vagrant@debian.org>, Janneke Nieuwenhuizen <janneke@gnu.org>, Ricardo
Wurmus <rekado@elephly.net>, Hartmut Goebel
<h.goebel@crazy-compilers.com>, Efraim Flashner <efraim@flashner.co.il>,
bokr@bokr.com, Andreas Enge <andreas@enge.fr>, GNU Guix maintainers
<guix-maintainers@gnu.org>
Subject: [bug#74736] [PATCH v9] Add Guix Consensus Document process
In-Reply-To: <cover.1733614983.git.noelopez@free.fr>
References: <cover.1733614983.git.noelopez@free.fr>
Date: Thu, 16 Jan 2025 18:55:53 +0100
Message-ID: <8734hiskwm.fsf@gmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Cheers,
simon

On Thu, 16 Jan 2025 at 18:55, Simon Tournier <zimon.toutoune@gmail.com> wrote:
Toggle quote (416 lines)
> Hi,
>
> Please find attach the v9; I hope it addresses the comments.
>
> Attached the diff and the document. The minor changes are:
>
> • Point alone “1. Clone …”
>
> • Replace remaining RFC with GCD.
>
> • Add a sentence about “Sponsor” role.
>
> • Add the role of “Contributor”.
>
> • Tweak the artist view of the Timeline
>
> • Explicit mention that everyone can participate to the “Discussion
> Period”. And mention that the main concerns and/or opposition are
> collected to the final document.
>
> • Move upfront the aim of “Deliberation Period”. Remove a redundant
> sentence.
>
> • Explicit mention the state ‘deprecated’.
>
>
> WDYT?
>
> Cheers,
> simon
>
> --
>
> diff -u /tmp/001-gcd-process-v8.md /tmp/001-gcd-process-v9.md
> --- /tmp/001-gcd-process-v8.md 2025-01-16 16:51:08.758030546 +0100
> +++ /tmp/001-gcd-process-v9.md 2025-01-16 18:43:01.835296714 +0100
> @@ -73,7 +73,7 @@
> ## How the Process Works
>
> 1. Clone
> - https://git.savannah.gnu.org/git/guix/guix-consensus-documents.git .
> + https://git.savannah.gnu.org/git/guix/guix-consensus-documents.git
> 2. Copy `000-template.md` to `XYZ-short-name.md` where `short-name`
> is a short descriptive name and `XYZ` is the sequence number.
> 3. Write your GCD following the template’s structure. The GCD must not
> @@ -92,15 +92,16 @@
>
> ## Roles
>
> - - An *author* is the person or one of the persons submitting the RFC.
> + - An *author* is the person or one of the persons submitting the GCD.
> Authors bear the responsibility to carry out the process to its
> conclusion.
>
> - A *sponsor* is a contributor who, during the submission period (see
> below), informs the author(s) that they would like to support the
> - RFC by participating in discussions, providing constructive comments
> + GCD by participating in discussions, providing constructive comments
> to help the author(s), soliciting opinions, and acting as
> - timekeepers.
> + timekeepers. As a sponsor, please make sure that all have the time
> + and space for expressing their comments.
>
> Sponsors should be contributors who consider being sufficiently
> familiar with the project’s practices; hence it is recommended, but
> @@ -111,6 +112,10 @@
> members is maintained in the file `etc/teams.scm` in the Guix
> repository.
>
> + - A *contributor* is a person contributing to Guix either with code,
> + translation, reviewing, etc. and more broadly any person feeling part
> + of the Guix community.
> +
> ## Timeline
>
> A GCD must follow the process illustrated by the diagram below,
> @@ -118,21 +123,20 @@
>
>
> ```
> - +-----------+
> - +- - - - - - ->| Withdrawn |<----------------------+
> - : +-----------+ |
> - : ^ |
> - : : |
> -+--------------------+ +---------------------+ +---------------------+
> -| Submission Period | | Discussion Period | | Deliberation Period |
> -| (up to 7 days) |-->| (30–60 days) |-->| (14 days) |
> -+--------------------+ +---------------------+ +---------------------+
> - |
> - |
> ++--------------------+ +---------------------+ +---------------------+
> +| Submission Period | | Discussion Period | | Deliberation Period |
> +| (up to 7 days) |-X->| (30–60 days) |-->| (14 days) |
> ++--------------------+ : +---------------------+ +---------------------+
> + : : : |
> + : v : |
> + : declined v |
> + : o-----------o |
> + +- - - - - - - - ->| Withdrawn |<----------------- X
> + o-----------o |
> V
> - +----------+
> - | Accepted |
> - +----------+
> + o----------o
> + | Accepted |
> + o----------o
> ```
>
> The subsections below detail the various periods and their duration.
> @@ -150,8 +154,11 @@
>
> ### 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 submitted, the GCD is publicly discussed by all the members of the
> +community. Authors are encouraged to publish updated versions
> +incorporating feedback during the discussion; members are encouraged to
> +share a summary of their main concerns or opposition, if any, for being
> +included under section “Open Issues” in the document.
>
> When deemed appropriate, between 30 days and 60 days after the start
> of the discussion period, the author(s) may publish a final version and
> @@ -159,8 +166,11 @@
>
> ### Deliberation Period (14 days)
>
> -All team members can participate in deliberation and are encouraged to
> -do so.
> +Deliberation aims at consolidating consensus; see “Decision Making”
> +below.
> +
> +Anyone who is a team member is a deliberating member and is encouraged
> +to contribute to the deliberation.
>
> 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:
> @@ -176,13 +186,6 @@
> reply, and (2) no one disapproves. In other cases, the GCD is
> *withdrawn*.
>
> -Deliberation aims at consolidating consensus; see “Decision Making”
> -below.
> -
> -Anyone who is a team member is a deliberating member and is encouraged
> -to contribute to the deliberation. Team members are defined by the
> -file etc/teams.scm (see “Teams” 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.
> @@ -215,7 +218,7 @@
> `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);
> + `status` header accordingly with `deprecated`);
> 2. committing everything;
> 3. announcing the publication of the GCD.
>
>
> Diff finished. Thu Jan 16 18:44:37 2025
>
> --
>
> title: Guix Consensus Document Process
> id: 001
> status: submitted
> discussion: https://issues.guix.gnu.org/74736
> authors: Simon Tournier, Noé Lopez, Ludovic Courtès
> sponsors: pukkamustard, Ricardo Wurmus
> date-submitted: 2024-12-12
> 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 Consensus 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
> “significant” enough to require attention from the community 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 “significant” 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 `<package>` 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 “significant” changes, which 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 a 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 “Contributing” chapter.
>
> ## How the Process Works
>
> 1. Clone
> https://git.savannah.gnu.org/git/guix/guix-consensus-documents.git
> 2. Copy `000-template.md` to `XYZ-short-name.md` where `short-name`
> is a short descriptive name and `XYZ` is the sequence number.
> 3. Write your GCD following the template’s 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 “Submission Period” below.
>
> Submitted GCD is announced at `info-guix@gnu.org`.
>
> ## Roles
>
> - An *author* is the person or one of the persons submitting the GCD.
> Authors bear the responsibility to carry out the process to its
> conclusion.
>
> - A *sponsor* is a contributor who, during the submission period (see
> below), informs the author(s) that they would like to support the
> GCD by participating in discussions, providing constructive comments
> to help the author(s), soliciting opinions, and acting as
> timekeepers. As a sponsor, please make sure that all have the time
> and space for expressing their comments.
>
> Sponsors should be contributors who consider being sufficiently
> familiar with the project’s practices; hence it is recommended, but
> not mandatory, to be a team member.
>
> - A *team member* is the member of a team, as defined by the Guix
> project in the manual. Currently, the list of teams and their
> members is maintained in the file `etc/teams.scm` in the Guix
> repository.
>
> - A *contributor* is a person contributing to Guix either with code,
> translation, reviewing, etc. and more broadly any person feeling part
> of the Guix community.
>
> ## Timeline
>
> A GCD must follow the process illustrated by the diagram below,
> consisting of several *periods*.
>
>
> ```
> +--------------------+ +---------------------+ +---------------------+
> | Submission Period | | Discussion Period | | Deliberation Period |
> | (up to 7 days) |-X->| (30–60 days) |-->| (14 days) |
> +--------------------+ : +---------------------+ +---------------------+
> : : : |
> : v : |
> : declined v |
> : o-----------o |
> +- - - - - - - - ->| Withdrawn |<----------------- X
> o-----------o |
> V
> o----------o
> | Accepted |
> o----------o
> ```
>
> The subsections below detail the various periods and their duration.
>
> ### Submission Period (up to 7 days)
>
> Anyone can author and submit a GCD as a regular patch and look for
> sponsors (see below). The GCD is *submitted* once one or more people
> have volunteered to be sponsors by publicly replying “I sponsor”; it is
> canceled if no sponsor could be found during that period. The next step
> is the *discussion period*.
>
> Authors 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 by all the members of the
> community. Authors are encouraged to publish updated versions
> incorporating feedback during the discussion; members are encouraged to
> share a summary of their main concerns or opposition, if any, for being
> included under section “Open Issues” in the document.
>
> When deemed appropriate, between 30 days and 60 days after the start
> of the discussion period, the author(s) may publish a final version and
> announce the start of the *deliberation period*.
>
> ### Deliberation Period (14 days)
>
> Deliberation aims at consolidating consensus; see “Decision Making”
> below.
>
> Anyone who is a team member is a deliberating member and is encouraged
> to contribute to the deliberation.
>
> 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:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the
> proposal;
> - “I disapprove”, meaning that one opposes the implementation of the
> proposal. A team member sending this reply should have made
> constructive comments during the discussion period.
>
> 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*.
>
> 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
> <https://www.seedsforchange.org.uk/consensus>.
>
> ## 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 with `deprecated`);
> 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) or (at your option)
> any later version.
>
> ## 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 document can be amended by subsequent
> GCDs.
>
> ## Drawbacks
>
> There is a risk that the additional process will hinder contribution more than
> 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 wi
This message was truncated. Download the full message here.
S
S
Simon Tournier wrote 2 days ago
Re: [bug#74736] [PATCH v2 0/1] Add Request-For-Comment process.
(address . 74736@debbugs.gnu.org)
87ldvanwsg.fsf@gmail.com
Hi,

On Thu, 16 Jan 2025 at 20:43, Hartmut Goebel <h.goebel@crazy-compilers.com> wrote:

Toggle quote (8 lines)
> understood that the base idea behind decision making is "Consensus".
> This is mentioned in "motivation", but rather like a side note than as
> an important principle.
>
> Therefore I propose moving the section "Decision Making" into
> "Motivation" – or make it a top-level section just below "Motivation".

When reading, I said yes why not. Then re-reading after moving, I
thought that “Decision Making” is a component of the “Detailed Design”.


Toggle quote (2 lines)
> "… 25% of all team members – as of the start of the Deliberation Period – …"

Thanks, I agree that it clarifies.

Cheers,
simon
S
S
Simon Tournier wrote 2 days ago
(address . 74736@debbugs.gnu.org)
87h65ynwpz.fsf@gmail.com
Hi,

On Thu, 16 Jan 2025 at 21:41, Hartmut Goebel <h.goebel@crazy-compilers.com> wrote:

Toggle quote (6 lines)
> This patch does *not* include my proposals from my other mails today,
> but new ones.
>
> In addition, I suggest exchanging "Process Overview" and "Roles". I left
> this away to keep the patch small.

I tried to include all of the suggestions with v10. WDYT?

Cheers,
simon
S
S
Simon Tournier wrote 2 days ago
Re: [bug#74736] Re v8 of Add Request-For-Comment process.
8734hinve1.fsf@gmail.com
Hi,

Thanks for your comments. I included with v10. WDYT?

On Thu, 16 Jan 2025 at 20:50, Hartmut Goebel <h.goebel@crazy-compilers.com> wrote:

Toggle quote (5 lines)
> The current text does not state this. Rather it implies, the sequence
> number is to be picked when creating the draft ("How the Process Works",
> number 2). So if two persons draft a GCD at nearly the same time, how to
> prevent both are picking the same number? (See proposal below.)

Well, from my point of view, considering the number of changes requiring
GCD that we did over the past years, I think the situation will not
happen. :-)

Still, how to resolve in practise when that would happen? I think the
simplest is to consider the sequence order for the final document (the
only that really matters after all) as the first that had been in
*submitted* state using the timestamps of the sponsors.

A good ol’ First In, First Numbered. ;-)

Toggle quote (6 lines)
> It also came to my mind, that the text does not explain who is pushing
> the patch to the GCD repo and when (at which point in the process).
> Proposed text:
>
> At the end of section "Submission Period":

It appears to me clearer to separate the concerns. What do you think
about “Merging GCD”?


Toggle quote (5 lines)
> In https://issues.guix.gnu.org/issue/74736#58 Ludo wrote: "It has to
> be at most 60 days, I think that’s quite clear."
>
> Either way, this need to be stated more explicit.

I added the *stale* state and how to deal with it. WDYT?


Cheers,
simon
S
S
Simon Tournier wrote 2 days ago
[bug#74736] [PATCH v10] Add Guix Consensus Document process
(address . 74736@debbugs.gnu.org)
87h65ymfbl.fsf@gmail.com
Hi,

I sent v9 (Message-ID: 8734hiskwm.fsf@gmail.com) but that has not
reached the list, hum?! And Hartmut sent a diff as v9, hence v10. :-)

Changes compared to v8:

• Changed some level for the subtitles. And added “Getting Started”.
• Removed trailing dot after repository URL.

• Reworded ’prospective’.

• Removed redundant information about “submitted” and pointed to the
dedicated section. Clarified using the term “draft”.

• Replaced the term RFC by GCD.

• Added a sentence about the role of “Sponsor”. And added a
“Contributor” role. The idea is to rely on that term for clarifying
“author” and who can discuss. But then, the term does not appear…

• Add section “Channel of Communication”.

• Revamped the artist view of the timeline.

• Minor tweaks under “Submission Period”.

• Minor tweaks under “Discussion Period”. Added a paragraph to deal
with the case where “Author” and “Sponsor” vanish.

• Minor tweaks under “Deliberation Period”: moved sentence; removed
redundant information.

• Minor tweaks under “Merging GCD”.


WDYT?

Cheers,
simon

--
Attachment: v8-v10.diff
--
S
S
Simon Tournier wrote 3 days ago
[bug#74736] [PATCH v9] Add Guix Consensus Document process
(address . 74736@debbugs.gnu.org)
8734hiskwm.fsf@gmail.com
Hi,

Please find attach the v9; I hope it addresses the comments.

Attached the diff and the document. The minor changes are:

• Point alone “1. Clone …”

• Replace remaining RFC with GCD.

• Add a sentence about “Sponsor” role.

• Add the role of “Contributor”.

• Tweak the artist view of the Timeline

• Explicit mention that everyone can participate to the “Discussion
Period”. And mention that the main concerns and/or opposition are
collected to the final document.

• Move upfront the aim of “Deliberation Period”. Remove a redundant
sentence.

• Explicit mention the state ‘deprecated’.


WDYT?

Cheers,
simon

--
Attachment: v8-v9.diff
--
S
S
Simon Tournier wrote 2 days ago
Re: [bug#74736] [PATCH v10] Add Guix Consensus Document process
(address . 74736@debbugs.gnu.org)
87tt9ymfqx.fsf@gmail.com
Hi,

I sent v9 (Message-ID: 8734hiskwm.fsf@gmail.com) but that has not
reached the list, hum?! And Hartmut sent a diff as v9, hence v10. :-)

Changes compared to v8:

• Changed some level for the subtitles. And added “Getting Started”.
• Removed trailing dot after repository URL.

• Reworded ’prospective’.

• Removed redundant information about “submitted” and pointed to the
dedicated section. Clarified using the term “draft”.

• Replaced the term RFC by GCD.

• Added a sentence about the role of “Sponsor”. And added a
“Contributor” role. The idea is to rely on that term for clarifying
“author” and who can discuss. But then, the term does not appear…

• Add section “Channel of Communication”.

• Revamped the artist view of the timeline.

• Minor tweaks under “Submission Period”.

• Minor tweaks under “Discussion Period”. Added a paragraph to deal
with the case where “Author” and “Sponsor” vanish.

• Minor tweaks under “Deliberation Period”: moved sentence; removed
redundant information.

• Minor tweaks under “Merging GCD”.


WDYT?

Cheers,
simon

--
Attachment: v8-v10.diff
--
L
L
Ludovic Courtès wrote 2 days ago
Re: bug#74736: [PATCH v2 0/1] Add Request-For-Comment process.
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87ikqdye6a.fsf@gnu.org
Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (21 lines)
>> Perhaps the “Decision Making” section could stress that, with a
>> paragraph above “To learn …” along these lines:
>>
>> Consensus building requires that participants share a common goal,
>> trust each other to act in good faith, listen to one another’s
>> concerns to take them into account, and are committed to donating
>> enough of their time to achieve it.
>
> To me, this paragraph would be redundant with this other paragraph:
>
> 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.
>
>
>> A deliberating member who “insists on disapproving”, without proposing
>> alternative paths, wouldn’t meet these requirements.
>
> Yes and I think that already included in the paragraph above, no?

Yes, looks like it.

Ludo’.
L
L
Ludovic Courtès wrote 2 days ago
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)(address . 74736@debbugs.gnu.org)
87plklwxtp.fsf_-_@gnu.org
Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (3 lines)
> I sent v9 (Message-ID: 8734hiskwm.fsf@gmail.com) but that has not
> reached the list, hum?! And Hartmut sent a diff as v9, hence v10. :-)

Thanks for sending v10, late at night!

It’s of course not the only metric but there’s a bit of possibly
worrying inflation between v8 and v10:

001-gcd-process-v10.md | 116 ++++++++++++++++++++++++++++---------------------
1 file changed, 68 insertions(+), 48 deletions(-)

Toggle quote (4 lines)
> + - A *contributor* is a person contributing to Guix either with code,
> + translation, reviewing, etc. and more broadly any person feeling part
> + of the Guix community.

I would drop the last part, which makes it to fuzzy IMO:

- A *contributor* is a person who has been participating in Guix
activities, for instance by writing or reviewing code, by supporting
users on fora, or by contributing to translations.

Toggle quote (2 lines)
> +## Channels of Communication

Rather “Communication Channels”.

Toggle quote (2 lines)
> + - The *draft* is sent to `guix-devel@gnu.org`.

s/sent/sent by email/

Toggle quote (4 lines)
> +If after 60 days, a final version is not yet published, then a grace period
> +of 14 days is granted. Finally the GCD is considered as *stale* and the last
> +update is picked for the final version.

This is like saying “between 30 and 74 days” in practice.

I would rather stick to the 60-day hard limit and clarify what happens
if author(s) fail to act during that time (starting with the paragraph
just above):

When deemed appropriate, between 30 days and 60 days after the start
of the discussion period, the author(s) may publish a final version
and announce the start of the *deliberation period*. If the authors
fail to do so, the deliberation period automatically starts 60 days
after the start of the discussion period based on the latest version
provided by the author(s).

Toggle quote (3 lines)
> -## Merging Final GCDs
> +## Merging GCD

“Merging GCDs”

Toggle quote (4 lines)
> -Whether it is accepted or withdrawn, a committer merges the final GCD
> -following these steps:
> +Whether it is accepted or withdrawn, a person who has commit permission

“a person with commit rights”

I think it’s a good document at this point!

Ludo’.
R
R
reza wrote 46 hours ago
Re: [bug#74736] [PATCH v6] Add Request-for-Comments process.
010201947430358c-fd89834b-07b3-4535-9ce5-b7d1a4f8f08b-000000@eu-west-1.amazonses.com
Hi Simon

Toggle quote (4 lines)
> I think there is one: the first one is 001 and then they will be
> incremented. For instance, assuming v6, it would be: RFC 001, or RFC
> 001-rfc-process.

Thanks for clarification, I don't see this mention in the document? Also
will this mean we only can do 999 RFC's?

Best,
Reza
S
S
Simon Tournier wrote 43 hours ago
87sephmou1.fsf@gmail.com
Hi Reza,

On Fri, 17 Jan 2025 at 12:15, reza via Guix-patches via <guix-patches@gnu.org> wrote:

Toggle quote (2 lines)
> I don't see this mention in the document?

Well, I think it’s covered with the term “sequence number” and with the
information provided by the 000-template.md.

id: <the next available number>

Toggle quote (3 lines)
> Also
> will this mean we only can do 999 RFC's?

Well, this document will be amended a couple of times before we are
close to have 999 GCDs, I guess. :-) Therefore, we will refine depending
on how it goes.

Moreover, considering the changes that would have required such process
from the 10+ past years, I think we have some time for preparing the
case of 999 before we reach it. :-)

Cheers,
simon

PS: Fun: “sequence number” could be a Fibonacci sequence number… Even,
it could be let to the author as an exercise to determine which
“sequence” the project is following. ;-)
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 74736@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 74736
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch