unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#61894] [PATCH RFC] Team approval for patches
@ 2023-03-01 16:13 Ludovic Courtès
       [not found] ` <871qm8wf8e.fsf@cbaines.net>
  0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2023-03-01 16:13 UTC (permalink / raw)
  To: 61894; +Cc: guix-devel, guix-maintainers

[-- Attachment #1: Type: text/plain, Size: 1373 bytes --]

Hello Guix!

The project has been steadily gaining new contributors, which is great,
and I think we need to adjust our processes accordingly.

Currently teams are described mostly as pools of people who can mentor
contributors in a particular area and who can review patches in that
area.  My proposal is to give teams formal approval power over changes
to code in their area.

This is sorta happening already, but informally: if a non-committer
sends a patch, someone from the team eventually “approves” it by pushing
it.  Within a team, the situation is different: people usually discuss
changes, and the submitter (also committer) eventually pushes them;
sometimes, the submitter pushes changes without getting approval (or
feedback) from others on the team.

With the proposed policy, members of a team would also have to review
and approve each other’s work.  Formal approval means getting an
explicit “LGTM” (or similar) from at least one other team member.

This is similar to the review thresholds found on GitLab & co., where
project admins can specify a minimum number of approvals required before
a change is marked as ready.  I think it avoids the unavoidable
misunderstandings that can arise in a growing group and help pacify
day-to-day collaboration.

Below is a suggested change.

What do people think?

Ludo’.


[-- Attachment #2: Type: text/x-patch, Size: 2042 bytes --]

diff --git a/doc/contributing.texi b/doc/contributing.texi
index c436bc4a31..d8ca6802c4 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -1486,7 +1486,7 @@ reply to incoming bugs and patches, which contains the bug number.
 @anchor{Notifying Teams}
 @cindex teams
 The @file{etc/teams.scm} script may be used to notify all those who
-may be interested in your patch of its existence (@pxref{Teams}).
+may be interested in your patch and may approve it (@pxref{Teams}).
 Use @command{etc/teams.scm list-teams} to display all the teams,
 decide which team(s) your patch relates to, and use
 @command{etc/teams.scm cc} to output various @command{git send-email}
@@ -1557,6 +1557,9 @@ these changes are necessary.
 @subsection Teams
 @cindex teams
 
+The project is structured as @dfn{teams}, which play two related roles:
+mentoring people who contribute code in their area of expertise, and
+reviewing and approving changes to that code.
 There are several teams mentoring different parts of the Guix source
 code.  To list all those teams, you can run from a Guix checkout:
 
@@ -1840,8 +1843,14 @@ Patches}).  It also allows patches to be picked up and tested by the
 quality assurance tooling; the result of that testing eventually shows
 up on the dashboard at
 @indicateurl{https://qa.guix.gnu.org/issue/@var{ISSUE_NUMBER}}, where
-@var{ISSUE_NUMBER} is the number assigned by the issue tracker.  Leave
-time for a review, without committing anything (@pxref{Submitting
+@var{ISSUE_NUMBER} is the number assigned by the issue tracker.
+
+When your patch falls under the area of expertise of a team
+(@pxref{Teams}), you need the explicit approval of at least one team
+member before committing (another team member if you are on the team).
+
+In other cases,
+leave time for a review, without committing anything (@pxref{Submitting
 Patches}).  If you didn’t receive any reply after one week (two weeks
 for more significant changes), and if you're confident, it's OK to
 commit.

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
       [not found] ` <871qm8wf8e.fsf@cbaines.net>
@ 2023-03-01 19:21   ` Felix Lechner via Guix-patches via
  2023-03-01 22:45   ` Ludovic Courtès
  1 sibling, 0 replies; 9+ messages in thread
From: Felix Lechner via Guix-patches via @ 2023-03-01 19:21 UTC (permalink / raw)
  To: Christopher Baines
  Cc: guix-devel, Ludovic Courtès, 61894, guix-maintainers

Hi,

On Wed, Mar 1, 2023 at 9:31 AM Christopher Baines <mail@cbaines.net> wrote:
>
> I'm unclear how it would
> impact the things I push for others. I pushed some patches today, would
> this mean that I'd have to look at what team/teams are involved
> (according to /etc/teams.scm.in) for each commit/series, and then either
> continue if I'm a member of that team, or skip it if I'm not?

Perhaps a compromise would be to ask committers to get a second
opinion from another committer whenever they feel it is necessary.

A committer who is confident enough, however, would be encouraged to
sidestep the restriction.

This guidance would gently bump the perceived penalty for a misstep,
because ignorance was then part of the mix when an error occurred.

The second person will often be from an affected team, but sometimes
they won't. That would only need to be revisited when there was a
problem. Otherwise, it was water under the bridge.

A softer guidance would also allow the project to experiment gradually
with greater checks and balances.

After some time, the committers would be able to weigh—both
individually as well as collectively—whether the additional rules
actually provided the benefits they were designed to produce.

Kind regards
Felix Lechner




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
       [not found] ` <871qm8wf8e.fsf@cbaines.net>
  2023-03-01 19:21   ` Felix Lechner via Guix-patches via
@ 2023-03-01 22:45   ` Ludovic Courtès
  2023-03-02 11:04     ` Andreas Enge
  2023-03-07  1:53     ` 宋文武 via Guix-patches via
  1 sibling, 2 replies; 9+ messages in thread
From: Ludovic Courtès @ 2023-03-01 22:45 UTC (permalink / raw)
  To: Christopher Baines; +Cc: guix-devel, 61894, guix-maintainers

Hi Chris,

Christopher Baines <mail@cbaines.net> skribis:

> I guess I'm still a team sceptic, I think the idea is interesting and I
> have added myself as a member of some teams. But the main impact on me
> so far is that I've just been getting some unwanted personal email,
> messages that previously wouldn't have landed in my inbox have been
> doing so.

Same for me (took me a while to understand why I was suddenly Cc’d on
some many patches.  :-))  I’m not sure how to improve on that.

> Regarding this change specifically though, I'm unclear how it would
> impact the things I push for others. I pushed some patches today, would
> this mean that I'd have to look at what team/teams are involved
> (according to /etc/teams.scm.in) for each commit/series, and then either
> continue if I'm a member of that team, or skip it if I'm not?
>
> If I'm going to not be pushing stuff I would have previously pushed
> because I'm not in the relevant teams, maybe I should just add myself to
> every team? I guess this is not a serious question, but I'm more making
> the point that if teams become a formal part of patch review, then some
> formalities over membership of a team is probably a prerequsite.
>
> As a point of clarification, if a patch or series touches files that
> fall within the scope of several teams, am I correct in saying that this
> change would require approval from all teams?

Good questions.

For teams like ‘core’ or ‘home’, there should be no overlap, so it’s
quite easy to see who’s in charge.

Teams related to packages are more likely to overlap, and it’s also an
area where we generally want more flexibility.  The example you
give—pushing patches even though you’re not on the corresponding
team(s)—is something we’d still want to allow most of the time.

There seems to be different requirements depending on teams.  I’d like
more coordination and clearer responsibilities for subsystems (guix/*,
gnu/{services,system,build}/*, etc.) and key packages/tools (Python,
ocaml-build-system, etc.).  For “random packages”, I’m fine with the
status quo.

WDYT?

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
  2023-03-01 22:45   ` Ludovic Courtès
@ 2023-03-02 11:04     ` Andreas Enge
  2023-03-07  1:53     ` 宋文武 via Guix-patches via
  1 sibling, 0 replies; 9+ messages in thread
From: Andreas Enge @ 2023-03-02 11:04 UTC (permalink / raw)
  To: Ludovic Courtès
  Cc: guix-devel, Christopher Baines, 61894, guix-maintainers

Hello,

in the current situation I think the suggestion is putting the horse before
the cart. In a first step before adding policy, we should make the teams
functional. While working on core-updates, I have been realising we are
already spread too thin: Some important languages have teams with one or
two members, who would effectively become bottlenecks. Other software has
no team (Qt/KDE). All in all, I also think we have too few committers.
Adding policy might completely stall the project...

If for every trivial update of a Python package we need not only submit a
patch to the bugtracker, wait for QA, get back to the patch, resign it,
push it and close the bug, but additionally wait for one of the two Python
team members to have a look at it (or let an additional week pass),
incentives to participate will tend to zero.

Your suggested policy can help against commits of too bad quality; but I
do not think this is our problem, our problem is rather a lack of fast
progress.

So I think we need to add committers, add committers to teams, encourage
teams to engage in work, and if everything works smoothly, maybe add policy.

Andreas





^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
  2023-03-01 22:45   ` Ludovic Courtès
  2023-03-02 11:04     ` Andreas Enge
@ 2023-03-07  1:53     ` 宋文武 via Guix-patches via
       [not found]       ` <ZAcTw6I31Rl3nRDE@jurong>
  1 sibling, 1 reply; 9+ messages in thread
From: 宋文武 via Guix-patches via @ 2023-03-07  1:53 UTC (permalink / raw)
  To: Ludovic Courtès
  Cc: guix-devel, Christopher Baines, 61894, guix-maintainers

Ludovic Courtès <ludo@gnu.org> writes:

> Hi Chris,
>
> Christopher Baines <mail@cbaines.net> skribis:
>
>> Regarding this change specifically though, I'm unclear how it would
>> impact the things I push for others. I pushed some patches today, would
>> this mean that I'd have to look at what team/teams are involved
>> (according to /etc/teams.scm.in) for each commit/series, and then either
>> continue if I'm a member of that team, or skip it if I'm not?
>>
>> If I'm going to not be pushing stuff I would have previously pushed
>> because I'm not in the relevant teams, maybe I should just add myself to
>> every team? I guess this is not a serious question, but I'm more making
>> the point that if teams become a formal part of patch review, then some
>> formalities over membership of a team is probably a prerequsite.
>>
> [...]
>
> Good questions.
>
> For teams like ‘core’ or ‘home’, there should be no overlap, so it’s
> quite easy to see who’s in charge.
> [...]
> For “random packages”, I’m fine with the status quo.

Hello, I'd like to know if I'm working fine according to the status
quo..

I usually push patches for others who don't have commit access, while
most packages don't have a team at all, and some with me as the only
team member.

Should I wait for another commiter's approvol under this new policy or
can I push "random packages" (eg: jwm) solo under the status quo?  For
packages I as the only team member (eg: fcitx), should I looking for
another commiter for other's patches and my patches?

Thank you!




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
       [not found]         ` <861qm0da4y.fsf@gmail.com>
@ 2023-03-07 18:29           ` Maxim Cournoyer
  2023-03-07 22:40             ` Leo Famulari
       [not found]             ` <ZAhRg7BjytZGGB5O@3900XT>
  0 siblings, 2 replies; 9+ messages in thread
From: Maxim Cournoyer @ 2023-03-07 18:29 UTC (permalink / raw)
  To: Simon Tournier
  Cc: guix-maintainers, Ludovic Courtès, Christopher Baines, 61894,
	宋文武, Andreas Enge, guix-devel

Hi Simon,

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

> Hi,
>
> On Tue, 07 Mar 2023 at 11:36, Andreas Enge <andreas@enge.fr> wrote:
>
>> 1) Every current and potential new package is covered by a team.
>> 2) Every team has at least 3 members, better yet 4 or 5.
>>    3 members would make it possible that even if one of them is on vacation
>>    or otherwise busy a patch could be pushed without this additional one
>>    week if the other 2 agree.
>
> It would help if being committer implies appearing at least in one team,
> no?
>
> Currently in etc/teams.scm.in, I count 26 members and 20 are committers
> over the 48 ones.  No blame. :-)

If most committers end up being team members, aren't we back to where we
currently stand?  It seems the original motivation here is to add some
extra control/guards against undesirable commits landing in the core of
Guix.  If a committer that previously landed such commits joined the
core team (e.g., myself), it seems to me the situation would be little
changed:

1. Our pool of reviewers would likely continue to be spread too thin.

2. The 2 weeks time window would quickly slip, even with a team looking
at a more focused backlog, or the reviews would only be of the kind "I
think that's not what we want" without more time or energy to offer the
kind of concrete insights that can be turned into action for the
submitter.

3. The team member might be tempted to take their chance and merge their
change with little to no feedback, or feedback they perceived
insufficient or not actionable enough to justify keeping their
submission in limbo for longer.

I think the main problem we have is social, not organizational.  There's
little incentive to jump into the laborious review process compared to
hack on something we like in our free time.  We need to promote and
value review work more, without making it feel like a compulsory chore.
That's a great challenge to solve for a project that's driven by
volunteers.

I'll venture a suggestion to explore: adding enticements to review (some
playful guidelines such as "while waiting for your 2 weeks review
period, please try to review twice as many other submissions that have
been patiently waiting on the patches tracker :-)", or some stats
crunched and advertised periodically to guix-devel or even our to our
blog about our top reviewers, etc.).

-- 
Maxim




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
  2023-03-07 18:29           ` Maxim Cournoyer
@ 2023-03-07 22:40             ` Leo Famulari
       [not found]               ` <874jqvul1v.fsf@gmail.com>
       [not found]             ` <ZAhRg7BjytZGGB5O@3900XT>
  1 sibling, 1 reply; 9+ messages in thread
From: Leo Famulari @ 2023-03-07 22:40 UTC (permalink / raw)
  To: Maxim Cournoyer
  Cc: guix-maintainers, Simon Tournier, Ludovic Courtès,
	Christopher Baines, 61894, 宋文武, Andreas Enge,
	guix-devel

I don't have a strong opinion one way or the other about whether we
should formalize the review process. The status quo isn't working well,
so I'm in favor of trying something.

On Tue, Mar 07, 2023 at 01:29:51PM -0500, Maxim Cournoyer wrote:
> I think the main problem we have is social, not organizational.  There's
> little incentive to jump into the laborious review process compared to
> hack on something we like in our free time.  We need to promote and
> value review work more, without making it feel like a compulsory chore.
> That's a great challenge to solve for a project that's driven by
> volunteers.

However, I agree with this point wholeheartedly. We really need to ask
ourselves, why would anyone review patches? It's a lot of work, often
thankless, and unfortunately sometimes unpleasant.

> I'll venture a suggestion to explore: adding enticements to review (some
> playful guidelines such as "while waiting for your 2 weeks review
> period, please try to review twice as many other submissions that have
> been patiently waiting on the patches tracker :-)", or some stats
> crunched and advertised periodically to guix-devel or even our to our
> blog about our top reviewers, etc.).

In release announcements, alongside to the the normal `git shortlog`
list of authors, I suggest also publicizing the list of committers:

`git shortlog --numbered --summary --committer v1.4.0..HEAD`

A small thing, but hopefully one of many incentives to review and
commit.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
       [not found]               ` <874jqvul1v.fsf@gmail.com>
@ 2023-03-09  8:48                 ` Simon Tournier
  0 siblings, 0 replies; 9+ messages in thread
From: Simon Tournier @ 2023-03-09  8:48 UTC (permalink / raw)
  To: Maxim Cournoyer, Leo Famulari
  Cc: guix-maintainers, Ludovic Courtès, Christopher Baines, 61894,
	宋文武, Andreas Enge, guix-devel

Hi,

On Wed, 08 Mar 2023 at 13:58, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:

> number of their R package updates (thanks!)).  It seems starting to use
> the 'Reviewed-by' git message tag would make this easy to account for.

Quoting from thread [1]:

        I agree that Reviewed-by would be helpful.

        Once reviewed, the author or the reviewer could roll the count and
        re-send the patch (or series), applying the line Reviewed-by.

        It would reward the reviewer for their work.  And it would help the
        committer work.

Subject: Thoughts on committers pushing simple changes from other committers?
1: <https://yhetil.org/guix/86k00avhpv.fsf@gmail.com>

Cheers,
simon




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#61894] [PATCH RFC] Team approval for patches
       [not found]                         ` <87bkku2e14.fsf@gnu.org>
@ 2023-03-17 15:46                           ` Maxim Cournoyer
  0 siblings, 0 replies; 9+ messages in thread
From: Maxim Cournoyer @ 2023-03-17 15:46 UTC (permalink / raw)
  To: Ludovic Courtès
  Cc: guix-maintainers, Simon Tournier, Christopher Baines, 61894,
	宋文武, Andreas Enge, guix-devel

Hi Ludovic,

Ludovic Courtès <ludo@gnu.org> writes:

> Hello!
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
> [...]
>
>>> “Pacify” in the sense that, by being explicit, we avoid
>>> misunderstandings that could turn into unpleasant experiences.
>>>
>>> Like you I’m glad collaboration is nice and friendly; yet, over the past
>>> few months I’ve experienced misunderstandings that seemingly broke the
>>> consensus-based process that has always prevailed.
>>
>> I'm sorry that you feel that way.  I don't think consensus was willfully
>> broken,
>
> That’s my point: by being explicit about approval, we would avoid such
> misunderstandings.
>
>> and perhaps by studying some actual examples of these occurrences we
>> can better understand what went wrong and how the new suggested policy
>> would have helped or could be modified to help avoid such problems in
>> the future.
>
> I don’t want to rehash past occurrences of this problem.  It boils down
> to: changes where pushed despite consensus evidently not being met, at
> least not in the mind of every involved party.
>
> To some extent, that’s bound to happen due to an increase of the number
> of contributors, scope of the project, and diversity of backgrounds.  By
> making it clear that lack of “LGTM” from another team member equates
> with lack of consensus, we would avoid those misunderstandings.

I agree that firm conventions here would make things smoother.  It's
common that someone offers an incomplete review or just forget the LGTM,
and the author is left to ask if it's OK to push or not or assume it is.

> A good reference on consensus-based decision making is
> <https://www.seedsforchange.org.uk/consensus>.
>
>> It's also worth noting that this consensus-based process has always
>> been implicit; for example, it is not defined/mentioned anywhere in
>> our documentation.  Perhaps it should?
>
> Those who’ve followed the project long enough, such as part of the
> current maintainer collective, are certainly aware of that; it’s also
> spelled out in
> <https://guix.gnu.org/blog/2019/gnu-guix-maintainer-collective-expands/>.
>
> That said, again in the spirit of improving legibility, writing it down
> would be much welcome.

Yes, I've heard 'consensus' for years, and I think I have a good enough
understanding of it, but I think there are subtleties many (including
myself) fail to appreciate that the above link explains well, so I think
there's value in mentioning it somewhere.  I'll send a patch for
everyone to review.

>>> In a way, that’s probably bound to happen as the group grows, and I
>>> think that’s why we must be explicit about what the process is and about
>>> whether one is expressing consent or dissent.
>>>
>>> With so many things happening in Guix (yay!), it’s also easy to overlook
>>> a change and realize when it’s too late.  By having a rule that at least
>>> one other person on the team must approve (consent to) a change, we
>>> reduce that risk.
>>>
>>> Being on a team, then, is a way to express interest on a topic and to be
>>> “in the loop”.
>>
>> That's already what teams can do!
>
> Yes and no.  With the amount of activity going on, it’s easy to overlook
> something.  The explicit synchronization point could mitigate that.
>
>> I'd argue giving them the extra powers that would be conferred to
>> teams in this is not needed/desirable.  Some committer not a regular
>> member of X team may still be confident enough to push a patch sitting
>> on the tracker, and I think they should be able to.
>
> Self-assessment becomes tricky that this scale; I might be confident and
> yet someone will point out a problem (that literally happened to me two
> days ago in <https://issues.guix.gnu.org/62062>).  That’s when review
> really helps.
>
> For “core” work, I insist that explicit approval (and thus peer review)
> is necessary.  I doubt anyone would seriously challenge that.
>
> Now, I agree, as I wrote before, that this may be overkill for “random
> packages”.
>
> Thus we need to find the right balance.
>
> What about team/scope-specific rules?  As in: “Changes covered by teams
> X, Y, and Z need to be explicitly approved by at least one other member
> of the team.”

To me, it seems challenging to partition the code correctly and avoid
overloading the core team with spurious changes, which would slow things
down more (as the core team would be a fraction of the committers
currently enabled to push such changes), but I agree in principle that
it makes sense.

>>> It is not about asserting power or building a hierarchy;
>>> it’s about formalizing existing relations and processes.
>>
>> OK; I think in practice it would amount to that though (building a
>> hierarchy which has some form power).
>
> I disagree: just because power relations are not spelled out doesn’t
> mean they don’t exist.  I don’t know where you’re talking from; one
> thing that to me shed light on these matters is “The Tyranny of
> Structurelessness” (I’m sure I mentioned it before, I certainly did
> during Q&A on this very topic at the Ten Years event; apologies if I
> sound like a broken record!).

As with anything there's probably a middle ground to reach, where
there's some structure, but not too much, that maximizes our collective
happiness.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-03-17 15:47 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-01 16:13 [bug#61894] [PATCH RFC] Team approval for patches Ludovic Courtès
     [not found] ` <871qm8wf8e.fsf@cbaines.net>
2023-03-01 19:21   ` Felix Lechner via Guix-patches via
2023-03-01 22:45   ` Ludovic Courtès
2023-03-02 11:04     ` Andreas Enge
2023-03-07  1:53     ` 宋文武 via Guix-patches via
     [not found]       ` <ZAcTw6I31Rl3nRDE@jurong>
     [not found]         ` <861qm0da4y.fsf@gmail.com>
2023-03-07 18:29           ` Maxim Cournoyer
2023-03-07 22:40             ` Leo Famulari
     [not found]               ` <874jqvul1v.fsf@gmail.com>
2023-03-09  8:48                 ` Simon Tournier
     [not found]             ` <ZAhRg7BjytZGGB5O@3900XT>
     [not found]               ` <878rg7uqb4.fsf@gmail.com>
     [not found]                 ` <86lek6ntpb.fsf@gmail.com>
     [not found]                   ` <874jqtte7c.fsf@gmail.com>
     [not found]                     ` <87bkl0frnk.fsf@gnu.org>
     [not found]                       ` <87356ar6p1.fsf@gmail.com>
     [not found]                         ` <87bkku2e14.fsf@gnu.org>
2023-03-17 15:46                           ` Maxim Cournoyer

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