git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Linus Arver <linusa@google.com>
To: Junio C Hamano <gitster@pobox.com>,
	 Linus Arver via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org,
	Christian Couder <christian.couder@gmail.com>,
	 Jeff King <peff@peff.net>,
	Phillip Wood <phillip.wood123@gmail.com>
Subject: Re: [PATCH] RFC: add MAINTAINERS file
Date: Tue, 26 Mar 2024 22:33:34 -0700	[thread overview]
Message-ID: <owly34sc1bo1.fsf@fine.c.googlers.com> (raw)
In-Reply-To: <xmqq8r27nhwo.fsf@gitster.g>

Oops, I should have just responded to this email once as you quoted
your original reply. Sorry for the inconvenience.

BTW thanks for spurring on the discussion. I've also CC'ed additional
folks directly to try to get more feedback for this topic.


Junio C Hamano <gitster@pobox.com> writes:

> Junio C Hamano <gitster@pobox.com> writes:
>
> [...]
>
> So here are some more from the top of my head.
>
>  - Corollary to "nominating successors from the group at your
>    company may not work well", it may be hard to self-nominate
>    yourself as an area expert if you are not confident that others
>    consider you to be one.

There probably needs to be some sort of voting mechanism to affirm
membership into the "maintainers" group.

>  - How authoritative should these "maintainers" be?  Do they have
>    the final say to even override a concensus in a discussion if
>    needed, when clueless discussion participants are drawing a
>    conclusion that would hurt the codebase in the longer term?

I want to say "it depends", but for sake of simplicity, I think "yes" is
a better answer than "no". If the existing area expert is not happy with
the direction of a patch series... tough luck, try again. If we end up
overruling the opinions of established experts very often then the title
of "maintainer" loses teeth and I don't like that consequence.

IIUC in the Linux Kernel people pull large chunks of changes from each
other until it all converges into the one owned by Torvalds. That model
works because of the "network of trust" amongst the various maintainers,
each maintainer being an area expert.

I'm digressing a little bit here, but perhaps the "area expert" model
will only work if we move to a more Kernel-like model with multiple
separate "collection points" of patches (where there are multiple
maintainers). But I don't think Git is large enough where that model
makes sense. I'm not sure.

>  - For whom do we partition the areas?  "For revision walking using
>    connectivity bitmaps, experts are ..." sounds (at least to me)
>    like a plausible and reasonable way to define an expertise area,
>    but the description of the area may be understood only by those
>    who are reasonably familiar with the way how "git log" internally
>    works, for example.  Is it OK to assume that the reader has some
>    basic understanding of how the system works in order to use the
>    maintainer list effectively?

I think that assumption is fine. We have to start somewhere.

BTW I expect such a "maintainers" doc to evolve a bit as we hit bumps on
the road along the way.

>  - The above worry may be reduced if we partition the area primarily
>    along the file boundaries.  If a set of functions that are not
>    logically related to feature X but has to be in the same
>    compilation unit for some reason live in the file whose primary
>    purpose is to house implementation of the feature X, it may give
>    us an interesting project to figure out how to separate them out
>    and give them "correct" place, and the end result, even though it
>    is a side effect, would be a more modular and readable code.

Yup, file boundaries may be the simplest one.

Another partitioning dimension might be individual internal libraries
(header files to start, although some things like git-compat-util.h
might need more than one expert due to its complexity).

>  - If we adopt the file format from the kernel project, can we
>    leverage their tooling as well to query the maintainers file?  I
>    thought they have a tool that reads your patch into and figures
>    out what area is being touched to spit out a good set of Cc
>    candidates?

Yes. I found guidance [1] which suggests using scripts/get_maintainer.pl
[2] to find the CC list. And this script appears [3] to use the
MAINTAINERS file format to do its work.

I'm not a big fan of Perl but I suppose as long as we keep the same
format we can always just reuse that script (assuming it doesn't have
Kernel-only things hardcoded into it that make it unusable outside the
Kernel).

>  - Can contrib/contacts/git-contacts be taught about this new source
>    of information, and if so how?

Wow, I had no idea this existed.

One (stupid) idea would be to do a set union operation with the output
of git-contacts with the output of scripts/get_maintainer.pl.

>  - Once we start breaking down the system into expertise areas, are
>    there areas without any existng experts already?  If you send
>    patches to the list right now in the following areas, I do not
>    think you'll find capable reviewers whose acks weigh well enough
>    [*]: gitk, git-gui, contrib/completion, git-p4, gitweb, git-svn.
>
>     * Please raise a hand and say "No, you know I am very familiar
>       with that area; you just simply forgot about me because we
>       have not seen any patches in the area recently".

I think the lack of experts in certain areas is fine. It may even be
thee case that there are only a few experts (in a few areas) around to
start with.

>  - When there are no active area experts, what would the default
>    action be?  We would risk degrading the quality of such
>    "neglected" part of the system if we adopt "anything gets
>    accepted blindly" approach, so I would really want to avoid it.

Perhaps we could have a team of "code reviewers" who can be available to
review patches at some basic level, not at the level of experts? Over
time such reviewers could graduate to become an area expert they like to
work on. The idea is to make sure that there's always a steady pipeline
of would-be-experts who are ready to join the "maintainers" ranks, when
the existing maintainers inevitably become inactive or move on from the
project.

Anyway, to answer your immediate question, I think the default action
would still be to wait for code reviews from known people (who are not
new to the community).

>  - When an area with incumbent experts sees interest from some
>    developers, it is the best for these new people to demonstrate
>    their own competence and earn community's trust to eventually
>    become the area experts themselves, but that may not be so easy
>    in practice due to chicken-and-egg problem.

Yeah I agree. I guess I anticipated this problem with my response just
above WRT having a pipeline of would-be-experts. To restate, I think
it's important to have a healthy number of people across all levels of
expertise (beginner, intermediate, advanced) in the community. Maybe we
have that already? If so, the trick would be to incentivize the
beginners and intermediate level folks to stick around long enough to
become experts.

The GSoC [4] program is one way, although I don't know how successful it
has been (and I don't think it's very scalable).


[1] https://www.kernel.org/doc/html/latest/process/submitting-patches.html#select-the-recipients-for-your-patch
[2] https://github.com/torvalds/linux/blob/master/scripts/get_maintainer.pl
[3] https://github.com/torvalds/linux/blob/7033999ecd7b8cf9ea59265035a0150961e023ee/scripts/get_maintainer.pl#L345
[4] https://summerofcode.withgoogle.com/


  reply	other threads:[~2024-03-27  5:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-23  3:27 [PATCH] RFC: add MAINTAINERS file Linus Arver via GitGitGadget
2024-03-23 19:19 ` Junio C Hamano
2024-03-25  2:51   ` Junio C Hamano
2024-03-27  5:33     ` Linus Arver [this message]
2024-03-27  7:17     ` Patrick Steinhardt
2024-03-30 18:03       ` Linus Arver
2024-03-30 21:44         ` Junio C Hamano
2024-04-01 21:33       ` Taylor Blau
2024-04-01 22:13         ` Junio C Hamano
2024-04-02  0:22           ` Linus Arver
2024-04-02  5:39           ` Patrick Steinhardt
2024-04-02  5:46             ` Eric Sunshine
2024-04-02  5:59               ` Patrick Steinhardt
2024-03-26 22:24   ` Linus Arver
2024-03-26 23:39   ` Taylor Blau
2024-03-27  0:05     ` Junio C Hamano
2024-03-27  4:32   ` Linus Arver
2024-03-27 13:29     ` Junio C Hamano
2024-03-30 17:59       ` Linus Arver
2024-04-02  6:22         ` Patrick Steinhardt
2024-04-04  0:47           ` Linus Arver
2024-04-02  7:00       ` Patrick Steinhardt
2024-04-02 17:00         ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=owly34sc1bo1.fsf@fine.c.googlers.com \
    --to=linusa@google.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=phillip.wood123@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.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).