* Request-For-Comment process: concrete implementation
@ 2023-10-31 11:14 Simon Tournier
2023-11-16 15:03 ` Ludovic Courtès
2023-11-23 7:04 ` Efraim Flashner
0 siblings, 2 replies; 6+ messages in thread
From: Simon Tournier @ 2023-10-31 11:14 UTC (permalink / raw)
To: Guix Devel
[-- Attachment #1: Type: text/plain, Size: 561 bytes --]
Hi,
This is a proposal for implementing Request-For-Comment process.
Comment are welcome in #66844 [1]:
1: https://issues.guix.gnu.org/issue/66844
The proposal is highly inspired by Rust RFC:
https://github.com/rust-lang/rfcs
and also by GHC Haskell proposal process [1] and Nix RFC process [2]. Based
on my understanding of Guix community interactions, I write down this
text; below the text for easing the reading.
Cheers,
simon
1: https://github.com/ghc-proposals/ghc-proposals
2: https://github.com/NixOS/rfcs
--
RFC process
===========
[-- Attachment #2: rfc.txt --]
[-- Type: text/plain, Size: 7678 bytes --]
# -*- 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 controlled path for new features to enter the Guix project, so that all
stakeholders can be confident about the direction it is evolving in.
* Motivation
The freewheeling way that we add new features to Guix has been good for early
development, but for Guix to become a broadly used system we need to develop
some more self-discipline when it comes to changing our beloved system. 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 substancial 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 agree 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)
+ massive Python 2 removal
(Merging the purge-python2-packages branch, mailing list guix-devel)
+ 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.
+ Any change that modifies Guix API
+ Big restructuring of packages
+ Introduction or removal of subcommands
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
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 is 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
rfcs/unsuccessful/.
** 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.
** Comment period
It is up to the supporter and co-supporter to ensure that sufficient
discussion is solicited. Let two weeks for people to comment is a good
average. Make sure that all have the time for expressing their comments. The
proposal is about significant changes, thus more time is better than less.
** 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
Whoever merges the successful RFC should do the following:
1. Fill in the remaining metadata in the RFC header, including links for the
original Debbugs submission.
2. Commit everything.
** Template of RFC
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.
** 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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Request-For-Comment process: concrete implementation
2023-10-31 11:14 Request-For-Comment process: concrete implementation Simon Tournier
@ 2023-11-16 15:03 ` Ludovic Courtès
2023-11-20 9:42 ` Simon Tournier
2023-11-23 7:04 ` Efraim Flashner
1 sibling, 1 reply; 6+ messages in thread
From: Ludovic Courtès @ 2023-11-16 15:03 UTC (permalink / raw)
To: Simon Tournier; +Cc: Guix Devel
Hello,
Simon Tournier <zimon.toutoune@gmail.com> skribis:
> This is a proposal for implementing Request-For-Comment process.
> Comment are welcome in #66844 [1]:
>
> 1: https://issues.guix.gnu.org/issue/66844
Thanks for starting the discussion! I think that getting such a process
in place is key to sustain friction-less development of Guix, giving
everyone a chance to have their voice heard.
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Request-For-Comment process: concrete implementation
2023-11-16 15:03 ` Ludovic Courtès
@ 2023-11-20 9:42 ` Simon Tournier
2023-11-22 18:17 ` Ludovic Courtès
0 siblings, 1 reply; 6+ messages in thread
From: Simon Tournier @ 2023-11-20 9:42 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Guix Devel
Hi Ludo,
Thanks for giving a look.
On Thu, 16 Nov 2023 at 16:03, Ludovic Courtès <ludo@gnu.org> wrote:
> Thanks for starting the discussion! I think that getting such a process
> in place is key to sustain friction-less development of Guix, giving
> everyone a chance to have their voice heard.
Do you have comments on the current proposal? About points where you
think they could be improved? As wording? Or process? Or else?
Cheers,
simon
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Request-For-Comment process: concrete implementation
2023-11-20 9:42 ` Simon Tournier
@ 2023-11-22 18:17 ` Ludovic Courtès
0 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2023-11-22 18:17 UTC (permalink / raw)
To: Simon Tournier; +Cc: Guix Devel
Simon Tournier <zimon.toutoune@gmail.com> skribis:
> On Thu, 16 Nov 2023 at 16:03, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> Thanks for starting the discussion! I think that getting such a process
>> in place is key to sustain friction-less development of Guix, giving
>> everyone a chance to have their voice heard.
>
> Do you have comments on the current proposal? About points where you
> think they could be improved? As wording? Or process? Or else?
I haven’t taken the time to look at it yet but plan to do so.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Request-For-Comment process: concrete implementation
2023-10-31 11:14 Request-For-Comment process: concrete implementation Simon Tournier
2023-11-16 15:03 ` Ludovic Courtès
@ 2023-11-23 7:04 ` Efraim Flashner
2023-11-28 13:34 ` Simon Tournier
1 sibling, 1 reply; 6+ messages in thread
From: Efraim Flashner @ 2023-11-23 7:04 UTC (permalink / raw)
To: Simon Tournier; +Cc: Guix Devel
[-- Attachment #1: Type: text/plain, Size: 1583 bytes --]
On Tue, Oct 31, 2023 at 12:14:42PM +0100, Simon Tournier wrote:
> Hi,
>
> This is a proposal for implementing Request-For-Comment process.
> Comment are welcome in #66844 [1]:
>
> 1: https://issues.guix.gnu.org/issue/66844
>
>
> The proposal is highly inspired by Rust RFC:
>
> https://github.com/rust-lang/rfcs
>
> and also by GHC Haskell proposal process [1] and Nix RFC process [2]. Based
> on my understanding of Guix community interactions, I write down this
> text; below the text for easing the reading.
>
> Cheers,
> simon
>
> 1: https://github.com/ghc-proposals/ghc-proposals
> 2: https://github.com/NixOS/rfcs
I think this is a great idea and that we should implement it. Looking
through it I didn't see anything that jumped out to me as something that
needed to be changed.
Currently we have largish changes split between guix-patches and
guix-devel, with no real clear way to draw people's attention to them.
Currently I'm aware of re-arranging the go packages, splitting some of
the system services into their own modules, I'd like to add a field to
(guix platform), it'd be good to formalize some of these processes to
make it clearer about what's expected and what's going on.
Actually, in terms of suggestions, I'd add the rfc/ folder in
etc/teams.scm to set guix-devel as one of the team members.
--
Efraim Flashner <efraim@flashner.co.il> רנשלפ םירפא
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Request-For-Comment process: concrete implementation
2023-11-23 7:04 ` Efraim Flashner
@ 2023-11-28 13:34 ` Simon Tournier
0 siblings, 0 replies; 6+ messages in thread
From: Simon Tournier @ 2023-11-28 13:34 UTC (permalink / raw)
To: Efraim Flashner; +Cc: Guix Devel
Hi Efraim,
Thnaks for your comments.
On Thu, 23 Nov 2023 at 09:04, Efraim Flashner <efraim@flashner.co.il> wrote:
> Actually, in terms of suggestions, I'd add the rfc/ folder in
> etc/teams.scm to set guix-devel as one of the team members.
Good idea!
Cheers,
simon
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-11-28 15:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-31 11:14 Request-For-Comment process: concrete implementation Simon Tournier
2023-11-16 15:03 ` Ludovic Courtès
2023-11-20 9:42 ` Simon Tournier
2023-11-22 18:17 ` Ludovic Courtès
2023-11-23 7:04 ` Efraim Flashner
2023-11-28 13:34 ` Simon Tournier
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).