diff mbox series

RFC: add MAINTAINERS file

Message ID pull.1694.git.git.1711164460562.gitgitgadget@gmail.com (mailing list archive)
State New
Headers show
Series RFC: add MAINTAINERS file | expand

Commit Message

Linus Arver March 23, 2024, 3:27 a.m. UTC
From: Linus Arver <linusa@google.com>

This patch is designed to spur discussion about adding an official
MAINTAINERS file to our project. The hope is that it could be used as a
reference in (at least) the following scenarios:

  (1) [CC list] patch authors want to know who to CC on their
      submissions, without resorting to git-blame-level of precision;

  (2) [escalation path] patch authors have been waiting 1+ weeks for
      review comments, but are not sure who to escalate to (other than
      Junio);

  (3) [status tracking] record former maintainers/reviewers who are now
      inactive.

In addition having a MAINTAINERS file could give a more official sense
of ownership in the codebase.

The MAINTAINERS file here is stolen from the one used in the Linux
Kernel. We do not have to follow its format at all; it is merely added
here as a reference for comparison and prior art.

Signed-off-by: Linus Arver <linusa@google.com>
---
    RFC: add MAINTAINERS file

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1694%2Flistx%2Fmaintainers-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1694/listx/maintainers-v1
Pull-Request: https://github.com/git/git/pull/1694

 MAINTAINERS | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 85 insertions(+)
 create mode 100644 MAINTAINERS


base-commit: 11c821f2f2a31e70fb5cc449f9a29401c333aad2

Comments

Junio C Hamano March 23, 2024, 7:19 p.m. UTC | #1
"Linus Arver via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Linus Arver <linusa@google.com>
>
> This patch is designed to spur discussion about adding an official
> MAINTAINERS file to our project. The hope is that it could be used as a
> reference in (at least) the following scenarios:
>
>   (1) [CC list] patch authors want to know who to CC on their
>       submissions, without resorting to git-blame-level of precision;
>
>   (2) [escalation path] patch authors have been waiting 1+ weeks for
>       review comments, but are not sure who to escalate to (other than
>       Junio);
>
>   (3) [status tracking] record former maintainers/reviewers who are now
>       inactive.
>
> In addition having a MAINTAINERS file could give a more official sense
> of ownership in the codebase.

OK.  They are understandable goals.

As to the format of the actual file, I do not have much opinion.
What works for the kernel may or may not work for us, as the project
size is very different, but I am fairly confident that we can agree
on something usable.

I am more worried about how the file is used and maintained.  Some
things to think about while in the "spurred discussion" I can think
of are:

 - Is the project big enough to require this (especially for the
   purpose of (1)), or would

   $ git shortlog -n --no-merges --since=24.months -- path-to-file

   be sufficient and more importantly the value that it will keep
   current automatically outweigh the benefit of having this file
   that can go stale?  To answer this question, we'd need to know
   the turnover rates of past project contributors, of course.  If
   it is too high, having such a list may help for (1) and (3)
   above.

 - How binding is it for a contributor to be on this list as an area
   expert?  Will there be concrete "expected response time"?  It can
   be different for each area expert, of course.  I'd expect better
   from those who work on Git as a major part of their job and
   contributes some part of their work product back to the upstream,
   than from folks who do Git as a hobby.  Is each contributer
   expected to volunteer to be on this list, with self declared
   service level target?

 - With many good reviewer candidates being employed in companies
   and doing Git as part of their job, how would we handle folks
   getting transferred out of the Git ecosystem?  Unlike in a
   corporate environment, nominating successors who have no track
   record in the community by the current area expert would not work
   at all.  The successors themselves have to earn respect by
   demonstrating their own competence, which would take time.

There may be many others.

Thanks.

> The MAINTAINERS file here is stolen from the one used in the Linux
> Kernel. We do not have to follow its format at all; it is merely added
> here as a reference for comparison and prior art.
>
> Signed-off-by: Linus Arver <linusa@google.com>
> ---
>     RFC: add MAINTAINERS file
>
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1694%2Flistx%2Fmaintainers-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1694/listx/maintainers-v1
> Pull-Request: https://github.com/git/git/pull/1694
>
>  MAINTAINERS | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 85 insertions(+)
>  create mode 100644 MAINTAINERS
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> new file mode 100644
> index 00000000000..34fa3baf3a5
> --- /dev/null
> +++ b/MAINTAINERS
> @@ -0,0 +1,85 @@
> +List of maintainers
> +===================
> +
> +Descriptions of section entries and preferred order
> +---------------------------------------------------
> +
> +	M: *Mail* patches to: FullName <address@domain>
> +	R: Designated *Reviewer*: FullName <address@domain>
> +	   These reviewers should be CCed on patches.
> +	L: *Mailing list* that is relevant to this area
> +	S: *Status*, one of the following:
> +	   Supported:	Someone is actually paid to look after this.
> +	   Maintained:	Someone actually looks after it.
> +	   Odd Fixes:	It has a maintainer but they don't have time to do
> +			much other than throw the odd patch in. See below..
> +	   Orphan:	No current maintainer [but maybe you could take the
> +			role as you write your new code].
> +	   Obsolete:	Old code. Something tagged obsolete generally means
> +			it has been replaced by a better system and you
> +			should be using that.
> +	W: *Web-page* with status/info
> +	Q: *Patchwork* web based patch tracking system site
> +	B: URI for where to file *bugs*. A web-page with detailed bug
> +	   filing info, a direct bug tracker link, or a mailto: URI.
> +	C: URI for *chat* protocol, server and channel where developers
> +	   usually hang out, for example irc://server/channel.
> +	P: *Subsystem Profile* document for more details submitting
> +	   patches to the given subsystem. This is either an in-tree file,
> +	   or a URI. See Documentation/maintainer/maintainer-entry-profile.rst
> +	   for details.
> +	T: *SCM* tree type and location.
> +	   Type is one of: git, hg, quilt, stgit, topgit
> +	F: *Files* and directories wildcard patterns.
> +	   A trailing slash includes all files and subdirectory files.
> +	   F:	drivers/net/	all files in and below drivers/net
> +	   F:	drivers/net/*	all files in drivers/net, but not below
> +	   F:	*/net/*		all files in "any top level directory"/net
> +	   One pattern per line.  Multiple F: lines acceptable.
> +	X: *Excluded* files and directories that are NOT maintained, same
> +	   rules as F:. Files exclusions are tested before file matches.
> +	   Can be useful for excluding a specific subdirectory, for instance:
> +	   F:	net/
> +	   X:	net/ipv6/
> +	   matches all files in and below net excluding net/ipv6/
> +	N: Files and directories *Regex* patterns.
> +	   N:	[^a-z]tegra	all files whose path contains tegra
> +	                        (not including files like integrator)
> +	   One pattern per line.  Multiple N: lines acceptable.
> +	   scripts/get_maintainer.pl has different behavior for files that
> +	   match F: pattern and matches of N: patterns.  By default,
> +	   get_maintainer will not look at git log history when an F: pattern
> +	   match occurs.  When an N: match occurs, git log history is used
> +	   to also notify the people that have git commit signatures.
> +	K: *Content regex* (perl extended) pattern match in a patch or file.
> +	   For instance:
> +	   K: of_get_profile
> +	      matches patches or files that contain "of_get_profile"
> +	   K: \b(printk|pr_(info|err))\b
> +	      matches patches or files that contain one or more of the words
> +	      printk, pr_info or pr_err
> +	   One regex pattern per line.  Multiple K: lines acceptable.
> +
> +Maintainers List
> +----------------
> +
> +.. note:: When reading this list, please look for the most precise areas
> +          first. When adding to this list, please keep the entries in
> +          alphabetical order.
> +
> +3C59X NETWORK DRIVER
> +M:	Steffen Klassert <klassert@kernel.org>
> +L:	netdev@vger.kernel.org
> +S:	Odd Fixes
> +F:	Documentation/networking/device_drivers/ethernet/3com/vortex.rst
> +F:	drivers/net/ethernet/3com/3c59x.c
> +
> +...
> +
> +THE REST
> +M:	Linus Torvalds <torvalds@linux-foundation.org>
> +L:	linux-kernel@vger.kernel.org
> +S:	Buried alive in reporters
> +T:	git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> +F:	*
> +F:	*/
>
> base-commit: 11c821f2f2a31e70fb5cc449f9a29401c333aad2
Junio C Hamano March 25, 2024, 2:51 a.m. UTC | #2
Junio C Hamano <gitster@pobox.com> writes:

> I am more worried about how the file is used and maintained.  Some
> things to think about while in the "spurred discussion" I can think
> of are:
> ...
>  - Is the project big enough to require this (especially for the
>    purpose of (1)), or would
>
>    $ git shortlog -n --no-merges --since=24.months -- path-to-file
>
>    be sufficient and more importantly the value that it will keep
>    current automatically outweigh the benefit of having this file
>    that can go stale?  To answer this question, we'd need to know
>    the turnover rates of past project contributors, of course.  If
>    it is too high, having such a list may help for (1) and (3)
>    above.
>
>  - How binding is it for a contributor to be on this list as an area
>    expert?  Will there be concrete "expected response time"?  It can
>    be different for each area expert, of course.  I'd expect better
>    from those who work on Git as a major part of their job and
>    contributes some part of their work product back to the upstream,
>    than from folks who do Git as a hobby.  Is each contributer
>    expected to volunteer to be on this list, with self declared
>    service level target?
>
>  - With many good reviewer candidates being employed in companies
>    and doing Git as part of their job, how would we handle folks
>    getting transferred out of the Git ecosystem?  Unlike in a
>    corporate environment, nominating successors who have no track
>    record in the community by the current area expert would not work
>    at all.  The successors themselves have to earn respect by
>    demonstrating their own competence, which would take time.
>
> There may be many others.

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.

 - 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?

 - 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?

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

 - 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?

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

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

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

 - 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.
Linus Arver March 26, 2024, 10:24 p.m. UTC | #3
Junio C Hamano <gitster@pobox.com> writes:

> "Linus Arver via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
>> From: Linus Arver <linusa@google.com>
>>
>> This patch is designed to spur discussion about adding an official
>> MAINTAINERS file to our project. The hope is that it could be used as a
>> reference in (at least) the following scenarios:
>>
>>   (1) [CC list] patch authors want to know who to CC on their
>>       submissions, without resorting to git-blame-level of precision;
>>
>>   (2) [escalation path] patch authors have been waiting 1+ weeks for
>>       review comments, but are not sure who to escalate to (other than
>>       Junio);
>>
>>   (3) [status tracking] record former maintainers/reviewers who are now
>>       inactive.
>>
>> In addition having a MAINTAINERS file could give a more official sense
>> of ownership in the codebase.
>
> OK.  They are understandable goals.
>
> As to the format of the actual file, I do not have much opinion.
> What works for the kernel may or may not work for us, as the project
> size is very different, but I am fairly confident that we can agree
> on something usable.
>
> I am more worried about how the file is used and maintained.  Some
> things to think about while in the "spurred discussion" I can think
> of are:
>
>  - Is the project big enough to require this (especially for the
>    purpose of (1)), or would
>
>    $ git shortlog -n --no-merges --since=24.months -- path-to-file
>
>    be sufficient and more importantly the value that it will keep
>    current automatically outweigh the benefit of having this file
>    that can go stale?  To answer this question, we'd need to know
>    the turnover rates of past project contributors, of course.  If
>    it is too high, having such a list may help for (1) and (3)
>    above.
>
>  - How binding is it for a contributor to be on this list as an area
>    expert?  Will there be concrete "expected response time"?  It can
>    be different for each area expert, of course.  I'd expect better
>    from those who work on Git as a major part of their job and
>    contributes some part of their work product back to the upstream,
>    than from folks who do Git as a hobby.  Is each contributer
>    expected to volunteer to be on this list, with self declared
>    service level target?
>
>  - With many good reviewer candidates being employed in companies
>    and doing Git as part of their job, how would we handle folks
>    getting transferred out of the Git ecosystem?  Unlike in a
>    corporate environment, nominating successors who have no track
>    record in the community by the current area expert would not work
>    at all.  The successors themselves have to earn respect by
>    demonstrating their own competence, which would take time.
>
> There may be many others.

Thanks for the initial comments! I will try to formulate a response
soon while I consider your other comments also.
Taylor Blau March 26, 2024, 11:39 p.m. UTC | #4
On Sat, Mar 23, 2024 at 12:19:15PM -0700, Junio C Hamano wrote:
>  - Is the project big enough to require this (especially for the
>    purpose of (1)), or would
>
>    $ git shortlog -n --no-merges --since=24.months -- path-to-file
>
>    be sufficient and more importantly the value that it will keep
>    current automatically outweigh the benefit of having this file
>    that can go stale?  To answer this question, we'd need to know
>    the turnover rates of past project contributors, of course.  If
>    it is too high, having such a list may help for (1) and (3)
>    above.

I might be biased, but I think that we are not quite there, yet.
Subjectively, I find myself working in areas where I mostly know who to
CC based on what parts of the tree that I'm touching. But in the cases
where I do not, the shortlog --since=2.years.ago is usually pretty
small.

The output below lists number of individuals in the right-hand column,
and the number of files with that many individuals having touched it in
the last two years in the left-hand column:

    for f in $(git ls-files **/*.{c,h})
    do
      git shortlog -s --since-as-filter=2.years.ago -- $f | wc -l \
        || return 1
    done |
    sort -n | uniq -c | sort -rnk1
        192 1
        160 0
        112 2
         94 3
         80 4
         68 5
         40 6
         30 9
         27 8
         25 7
         19 11
         12 10
         11 12
          5 17
          5 14
          3 13
          2 18
          2 16
          1 22
          1 20
          1 19
          1 15

So a vast majority of *.ch files have fewer than 10 individuals working
on it in the past two years. By my count, there are 891 total source
files matching **/*.{c,h}, 828 of which have fewer than 10 people
working on it.

IOW, ~92.3% of the project is touched by no more than 9 people in the
last two years.

That kind of scale doesn't strike me as something that needs something
like a MAINTAINERS file to help make sense of it. It's possible that
some of the files that see more contributors might need some sort of
aide, but there are so few of them I have a hard time imagining it.

>  - How binding is it for a contributor to be on this list as an area
>    expert?  Will there be concrete "expected response time"?  It can
>    be different for each area expert, of course.  I'd expect better
>    from those who work on Git as a major part of their job and
>    contributes some part of their work product back to the upstream,
>    than from folks who do Git as a hobby.  Is each contributer
>    expected to volunteer to be on this list, with self declared
>    service level target?

I share your concern here, too.

Another thought that comes to mind is the difference between
"maintainer" and "reviewer". For a file with, say, 4 committers in the
past two years, I imagine that as the maintainer that you'd give about
equal weight to any of their reviews (with obvious exceptions, like if
someone had showed up in the shortlog over a much longer period, or had
significantly more or substantial patches in a given area).

Those kinds of things are hard to quantify exactly, and perhaps that is
the point of a MAINTAINERS file. But I think quantifying those things
matters a lot more when you have dozens or more individuals contributing
to files across the tree, and the numbers above show that (at least for
a large majority of the project) we're simply not there yet.

Thanks,
Taylor
Junio C Hamano March 27, 2024, 12:05 a.m. UTC | #5
Taylor Blau <me@ttaylorr.com> writes:

>>  - How binding is it for a contributor to be on this list as an area
>>    expert?  Will there be concrete "expected response time"?  It can
>>    be different for each area expert, of course.  I'd expect better
>>    from those who work on Git as a major part of their job and
>>    contributes some part of their work product back to the upstream,
>>    than from folks who do Git as a hobby.  Is each contributer
>>    expected to volunteer to be on this list, with self declared
>>    service level target?
>
> I share your concern here, too.

But I wasn't expressing any concern above ;-)

I'd consider it a progress if we can give contributors (and the
maintainer, too) more predictable review experience.  If we can even
optionally give some assurance on the response time, e.g., "I'll to
respond to and usher to completion any patches in this area if they
are promising within X days; I may not respond to all patches and
certainly not to ones that I do not find interesting" would already
be better than some patches that do not see any reviews for three
weeks without such an "optional" maintainer.

> Those kinds of things are hard to quantify exactly, and perhaps that is
> the point of a MAINTAINERS file.

Yeah, I am not interested in what exact form such a list of folks
who are willing to help guiding topics along comes from.  What I am
hoping to find out is if we can come up with a bit more structured
way to say "yes" or "no" to topics, rather than the current "nobody
may be interested in a topic, in which case it is anybody's guess
what will happen to it" (actually the default is "to drop", and I
often end up to be "somebody who gets sympathetic and reads the
topic to salvage, instead of the default action that is to drop").

Thanks.
Linus Arver March 27, 2024, 4:32 a.m. UTC | #6
Junio C Hamano <gitster@pobox.com> writes:

> "Linus Arver via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
>> From: Linus Arver <linusa@google.com>
>>
>> This patch is designed to spur discussion about adding an official
>> MAINTAINERS file to our project. The hope is that it could be used as a
>> reference in (at least) the following scenarios:
>>
>>   (1) [CC list] patch authors want to know who to CC on their
>>       submissions, without resorting to git-blame-level of precision;
>>
>>   (2) [escalation path] patch authors have been waiting 1+ weeks for
>>       review comments, but are not sure who to escalate to (other than
>>       Junio);
>>
>>   (3) [status tracking] record former maintainers/reviewers who are now
>>       inactive.
>>
>> In addition having a MAINTAINERS file could give a more official sense
>> of ownership in the codebase.
>
> OK.  They are understandable goals.
>
> As to the format of the actual file, I do not have much opinion.
> What works for the kernel may or may not work for us, as the project
> size is very different, but I am fairly confident that we can agree
> on something usable.

Agreed.

> I am more worried about how the file is used and maintained.  Some
> things to think about while in the "spurred discussion" I can think
> of are:
>
>  - Is the project big enough to require this (especially for the
>    purpose of (1)), or would
>
>    $ git shortlog -n --no-merges --since=24.months -- path-to-file
>
>    be sufficient and more importantly the value that it will keep
>    current automatically outweigh the benefit of having this file
>    that can go stale?
>
>    To answer this question, we'd need to know
>    the turnover rates of past project contributors, of course.  If
>    it is too high, having such a list may help for (1) and (3)
>    above.

In addition to checking git-shortlog on the Git repo, perhaps it's also
worth running a similar query against the public-inbox repo of this
list? We could perhaps use a script to generate this list automatically
every Git release (or some other cadence that we undergo regularly)?

>  - How binding is it for a contributor to be on this list as an area
>    expert?  Will there be concrete "expected response time"?  It can
>    be different for each area expert, of course.  I'd expect better
>    from those who work on Git as a major part of their job and
>    contributes some part of their work product back to the upstream,
>    than from folks who do Git as a hobby.  Is each contributer
>    expected to volunteer to be on this list, with self declared
>    service level target?

Ideally there should be some teeth to the document/agreement (esp for
service level targets), but I think practically the best we can do is
positive reinforcement. So maybe a prominent "The Git Code Review Team"
web page (somewhere on git-scm.com?) with profile photos and short
biographies should be enough to motivate people to stay engaged and keep
their spot.

I realize that such an idea is beyond the scope of a simple MAINTAINERS
(or similar) file that's checked into the Git code repo, but I think
it's worth stating as a thought experiment. The overall point I want to
make is that we need to be extra-thankful to those who sign up to say
"yes, I can review patches in areas X, Y, Z" and recognize (in a very
official way) their generosity in contributing back to this project.

>  - With many good reviewer candidates being employed in companies
>    and doing Git as part of their job, how would we handle folks
>    getting transferred out of the Git ecosystem?  Unlike in a
>    corporate environment, nominating successors who have no track
>    record in the community by the current area expert would not work
>    at all.  The successors themselves have to earn respect by
>    demonstrating their own competence, which would take time.

Unfortunately I don't think there's a good answer here. I agree that
only those who have demonstrated a good track record should become a
"successor".

OTOH, if we are fortunate enough to have multiple people sign up for a
particular area, then maybe that can be a sub-team and finding a
successor won't be such a big deal. It would only be a problem for those
areas where there is only 1 person who signed up for it.
Linus Arver March 27, 2024, 5:33 a.m. UTC | #7
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/
Patrick Steinhardt March 27, 2024, 7:17 a.m. UTC | #8
On Sun, Mar 24, 2024 at 07:51:03PM -0700, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
> 
> > I am more worried about how the file is used and maintained.  Some
> > things to think about while in the "spurred discussion" I can think
> > of are:
> > ...
> >  - Is the project big enough to require this (especially for the
> >    purpose of (1)), or would
> >
> >    $ git shortlog -n --no-merges --since=24.months -- path-to-file
> >
> >    be sufficient and more importantly the value that it will keep
> >    current automatically outweigh the benefit of having this file
> >    that can go stale?  To answer this question, we'd need to know
> >    the turnover rates of past project contributors, of course.  If
> >    it is too high, having such a list may help for (1) and (3)
> >    above.

I don't think of this as "big enough to require this". I rather think
about the onboarding experience for new folks here. Sure, we can ask
them to "Please run git-shortlog(1) to figure out whom to Cc". But if we
instead provide a nice script that does it for them then we make their
lifes easier.

It's also easy to include this for example into GitGitGadget in an
automated way.

> >  - How binding is it for a contributor to be on this list as an area
> >    expert?  Will there be concrete "expected response time"?  It can
> >    be different for each area expert, of course.  I'd expect better
> >    from those who work on Git as a major part of their job and
> >    contributes some part of their work product back to the upstream,
> >    than from folks who do Git as a hobby.  Is each contributer
> >    expected to volunteer to be on this list, with self declared
> >    service level target?

This is a good question. I don't really think that we should enforce any
kind of "service level agreements" here. I think people who are deeply
invested into any of the subsystems are mostly doing a good job of
replying to related patch series already, so I don't see an urgent need
to enforce something here. I would rather assume that we have problems
in areas which _don't_ have an active expert, and I doubt that the
introduction of a "MAINTAINERS" file would help here.

I would thus reformulate the proposal from "MAINTAINERS" to "REVIEWERS".
Instead of saying that person A is a maintainer of subsystem B, it would
say person A has a keen interest in subsystem B and would thus be a very
good candidate to Cc in all your mails touching this subsystem.

> >  - With many good reviewer candidates being employed in companies
> >    and doing Git as part of their job, how would we handle folks
> >    getting transferred out of the Git ecosystem?  Unlike in a
> >    corporate environment, nominating successors who have no track
> >    record in the community by the current area expert would not work
> >    at all.  The successors themselves have to earn respect by
> >    demonstrating their own competence, which would take time.

I think that this problem would go away if we reformulated the problem
to be about discoverability of interested folks instead of setting up
submaintainers.

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

I also think that this becomes less of a problem because you don't have
to be _the_ expert in order to say "I'm curious, please Cc me here".

>  - 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?

Do we actually need this? I'm not too thrilled about people having more
authority simply because they are around longer and have been appointed
as a maintainer. I think that discussions should be decided based on the
merit of arguments, not based on the role one of the participants has.

This is also based on the assumption that experts of a subsystem would
be able to highlight why exactly something is a bad idea and argue
accordingly. Thus, in the ideal case, no authority should be needed
except for the authority that their inherent knowledge already brings
with them.

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

I think partitioning intersted folks along file boundaries would be the
easiest. Also because...

>  - 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?

... the tooling from the kernel project already works in this way. They
do have "scripts/get_maintainer.pl" that can be invoked with a set of
files that have changed, and it will then spit out a list of folks to Cc
as declared in the MAINTAINERS file.

Patrick
Junio C Hamano March 27, 2024, 1:29 p.m. UTC | #9
Linus Arver <linusa@google.com> writes:

> I realize that such an idea is beyond the scope of a simple MAINTAINERS
> (or similar) file that's checked into the Git code repo, but I think
> it's worth stating as a thought experiment.

As we already have agreed that neither of us care the exact format
of the file (yet), regardless of how a contributor, who is about to
send a patch, will find an area "maintainer" to help the patch along
the process, it is far more important to discuss and decide what
responsibilities and authorities are expected of these maintainers.

The development community has been fairly loosely organized so far,
but I'd like to see responsibility and authority spread a bit more
widely yet still not too thinly to compromise the project integrity.

> The overall point I want to make is that we need to be
> extra-thankful to those who sign up to say "yes, I can review
> patches in areas X, Y, Z" and recognize (in a very official way)
> their generosity in contributing back to this project.

Yup.
Linus Arver March 30, 2024, 5:59 p.m. UTC | #10
Junio C Hamano <gitster@pobox.com> writes:

> Linus Arver <linusa@google.com> writes:
>
>> I realize that such an idea is beyond the scope of a simple MAINTAINERS
>> (or similar) file that's checked into the Git code repo, but I think
>> it's worth stating as a thought experiment.
>
> As we already have agreed that neither of us care the exact format
> of the file (yet), regardless of how a contributor, who is about to
> send a patch, will find an area "maintainer" to help the patch along
> the process, it is far more important to discuss and decide what
> responsibilities and authorities are expected of these maintainers.

I'm starting to think that the new responsibility should be as small as
possible, and build from there. So the smallest bit of (initial?)
responsibility expected of the new roster of maintainers could be
"maintainer must respond to CC pings on the list within 7 days".

For those who have more time to spend on the project, the next rung of
responsibility could be "maintainer is available to review patches
outside of their domain of expertise if no one else has reviewed the
series in 7 days".

I haven't thought too much about the "authority" part yet.

> The development community has been fairly loosely organized so far,
> but I'd like to see responsibility and authority spread a bit more
> widely yet still not too thinly to compromise the project integrity.

Agreed.
Linus Arver March 30, 2024, 6:03 p.m. UTC | #11
Patrick Steinhardt <ps@pks.im> writes:

> On Sun, Mar 24, 2024 at 07:51:03PM -0700, Junio C Hamano wrote:
>> Junio C Hamano <gitster@pobox.com> writes:
> [...]
>
> I would thus reformulate the proposal from "MAINTAINERS" to "REVIEWERS".
> Instead of saying that person A is a maintainer of subsystem B, it would
> say person A has a keen interest in subsystem B and would thus be a very
> good candidate to Cc in all your mails touching this subsystem.

Good idea!
Junio C Hamano March 30, 2024, 9:44 p.m. UTC | #12
Linus Arver <linusa@google.com> writes:

> Patrick Steinhardt <ps@pks.im> writes:
>
>> On Sun, Mar 24, 2024 at 07:51:03PM -0700, Junio C Hamano wrote:
>>> Junio C Hamano <gitster@pobox.com> writes:
>> [...]
>>
>> I would thus reformulate the proposal from "MAINTAINERS" to "REVIEWERS".
>> Instead of saying that person A is a maintainer of subsystem B, it would
>> say person A has a keen interest in subsystem B and would thus be a very
>> good candidate to Cc in all your mails touching this subsystem.
>
> Good idea!

Seconded.
Taylor Blau April 1, 2024, 9:33 p.m. UTC | #13
On Wed, Mar 27, 2024 at 08:17:38AM +0100, Patrick Steinhardt wrote:
> On Sun, Mar 24, 2024 at 07:51:03PM -0700, Junio C Hamano wrote:
> > Junio C Hamano <gitster@pobox.com> writes:
> >
> > > I am more worried about how the file is used and maintained.  Some
> > > things to think about while in the "spurred discussion" I can think
> > > of are:
> > > ...
> > >  - Is the project big enough to require this (especially for the
> > >    purpose of (1)), or would
> > >
> > >    $ git shortlog -n --no-merges --since=24.months -- path-to-file
> > >
> > >    be sufficient and more importantly the value that it will keep
> > >    current automatically outweigh the benefit of having this file
> > >    that can go stale?  To answer this question, we'd need to know
> > >    the turnover rates of past project contributors, of course.  If
> > >    it is too high, having such a list may help for (1) and (3)
> > >    above.
>
> I don't think of this as "big enough to require this". I rather think
> about the onboarding experience for new folks here. Sure, we can ask
> them to "Please run git-shortlog(1) to figure out whom to Cc". But if we
> instead provide a nice script that does it for them then we make their
> lifes easier.

Do you think that the script in contrib/contacts does a sufficient job
at this?

I admit that I am not a frequent user of it (mostly because I end up
either having a good sense of who I want to review patches ahead of
time, and/or I end up just running 'shortlog'), so I can't vouch for its
accuracy.

But from running it on a handful of patches just now locally while
replying to your email, it seems to do a reasonable job at identifying a
good set of candidate reviewers.

Perhaps we haven't been as good at advertising this script as we could
be, and that's why it isn't as widely used as it could be? I'm not sure.

Thanks,
Taylor
Junio C Hamano April 1, 2024, 10:13 p.m. UTC | #14
Taylor Blau <me@ttaylorr.com> writes:

>> I don't think of this as "big enough to require this". I rather think
>> about the onboarding experience for new folks here. Sure, we can ask
>> them to "Please run git-shortlog(1) to figure out whom to Cc". But if we
>> instead provide a nice script that does it for them then we make their
>> lifes easier.
>
> Do you think that the script in contrib/contacts does a sufficient job
> at this?

Yup, that was my first reaction.  If it is not sufficient to
mechanically mine history with shortlog or blame or contacts, and if
we can add a high quality hand-curated input to improve the result
contacts gives us, that would be a progress. I view the MAINTAINERS
format just one way to give such human generated input.

> Perhaps we haven't been as good at advertising this script as we could
> be, and that's why it isn't as widely used as it could be? I'm not sure.

Good point.  Do we even mention it in MyFirstSomething docs?
Linus Arver April 2, 2024, 12:22 a.m. UTC | #15
Junio C Hamano <gitster@pobox.com> writes:

> Taylor Blau <me@ttaylorr.com> writes:
>
> [...]
>> Perhaps we haven't been as good at advertising this script as we could
>> be, and that's why it isn't as widely used as it could be? I'm not sure.
>
> Good point.  Do we even mention it in MyFirstSomething docs?

I've pushed up a patch for review to mention it in our docs:
https://lore.kernel.org/git/pull.1704.git.1712017205754.gitgitgadget@gmail.com

(And, sorry for not simply pushing the patch to this thread because I
only know how to use GGG currently... Cheers)
Patrick Steinhardt April 2, 2024, 5:39 a.m. UTC | #16
On Mon, Apr 01, 2024 at 03:13:27PM -0700, Junio C Hamano wrote:
> Taylor Blau <me@ttaylorr.com> writes:
> 
> >> I don't think of this as "big enough to require this". I rather think
> >> about the onboarding experience for new folks here. Sure, we can ask
> >> them to "Please run git-shortlog(1) to figure out whom to Cc". But if we
> >> instead provide a nice script that does it for them then we make their
> >> lifes easier.
> >
> > Do you think that the script in contrib/contacts does a sufficient job
> > at this?

I admittedly never used it much, either. I didn't see a lot of benefit
because I can figure out myself whom to Cc. That would be less true for
newcomers to the community though, where it may be more useful.

> Yup, that was my first reaction.  If it is not sufficient to
> mechanically mine history with shortlog or blame or contacts, and if
> we can add a high quality hand-curated input to improve the result
> contacts gives us, that would be a progress. I view the MAINTAINERS
> format just one way to give such human generated input.

Agreed. I don't think that we have to pick either MAINTAINERS or the
"contrib/contacts" script, but would rather want the existing script to
honor MAINTAINERS as an additional data source.

When it does know about both I also see myself using it more frequently
in the future. It would be nice if git-send-email(1)/git-format-patch(1)
had a switch `--cc-command=` or similar that you can pass the script to
so that To/Cc lines would be added automatically. The script then gets
the commit range as input and can decide based on whatever criteria whom
to Cc. To the best of my knowledge that is not currently possible.

Patrick
Eric Sunshine April 2, 2024, 5:46 a.m. UTC | #17
On Tue, Apr 2, 2024 at 1:40 AM Patrick Steinhardt <ps@pks.im> wrote:
> When it does know about both I also see myself using it more frequently
> in the future. It would be nice if git-send-email(1)/git-format-patch(1)
> had a switch `--cc-command=` or similar that you can pass the script to
> so that To/Cc lines would be added automatically. The script then gets
> the commit range as input and can decide based on whatever criteria whom
> to Cc. To the best of my knowledge that is not currently possible.

I may be misunderstanding your statement, but this automated mode was
exactly the original use-case. contrib/contacts/git-contacts.txt says
this:

    This command can be useful for determining the list of people with
    whom to discuss proposed changes, or for finding the list of
    recipients to Cc: when submitting a patch series via `git
    send-email`. For the latter case, `git contacts` can be used as
    the argument to `git send-email`'s `--cc-cmd` option.
Patrick Steinhardt April 2, 2024, 5:59 a.m. UTC | #18
On Tue, Apr 02, 2024 at 01:46:22AM -0400, Eric Sunshine wrote:
> On Tue, Apr 2, 2024 at 1:40 AM Patrick Steinhardt <ps@pks.im> wrote:
> > When it does know about both I also see myself using it more frequently
> > in the future. It would be nice if git-send-email(1)/git-format-patch(1)
> > had a switch `--cc-command=` or similar that you can pass the script to
> > so that To/Cc lines would be added automatically. The script then gets
> > the commit range as input and can decide based on whatever criteria whom
> > to Cc. To the best of my knowledge that is not currently possible.
> 
> I may be misunderstanding your statement, but this automated mode was
> exactly the original use-case. contrib/contacts/git-contacts.txt says
> this:
> 
>     This command can be useful for determining the list of people with
>     whom to discuss proposed changes, or for finding the list of
>     recipients to Cc: when submitting a patch series via `git
>     send-email`. For the latter case, `git contacts` can be used as
>     the argument to `git send-email`'s `--cc-cmd` option.

Ah. I myself use git-format-patch(1) and mutt(1) to send the resulting
patches, and that command doesn't know about `--cc-cmd`. But
git-send-email(1) in fact does, good to know. So my statement still
partially stands, and we might want to make `--cc-cmd` available in
git-format-patch(1), too.

Patrick
Patrick Steinhardt April 2, 2024, 6:22 a.m. UTC | #19
On Sat, Mar 30, 2024 at 10:59:53AM -0700, Linus Arver wrote:
> Junio C Hamano <gitster@pobox.com> writes:
> 
> > Linus Arver <linusa@google.com> writes:
> >
> >> I realize that such an idea is beyond the scope of a simple MAINTAINERS
> >> (or similar) file that's checked into the Git code repo, but I think
> >> it's worth stating as a thought experiment.
> >
> > As we already have agreed that neither of us care the exact format
> > of the file (yet), regardless of how a contributor, who is about to
> > send a patch, will find an area "maintainer" to help the patch along
> > the process, it is far more important to discuss and decide what
> > responsibilities and authorities are expected of these maintainers.
> 
> I'm starting to think that the new responsibility should be as small as
> possible, and build from there. So the smallest bit of (initial?)
> responsibility expected of the new roster of maintainers could be
> "maintainer must respond to CC pings on the list within 7 days".
> 
> For those who have more time to spend on the project, the next rung of
> responsibility could be "maintainer is available to review patches
> outside of their domain of expertise if no one else has reviewed the
> series in 7 days".
> 
> I haven't thought too much about the "authority" part yet.

One thing that makes me feel a bit uneasy about the authority part is
that contributors to Git are quite often direct competitors on the
company level, as well. This never has been a problem in the past, quite
on the contrary: I really value the cross-competitor collaboration we
have in this project.

But I have to wonder what it can potentially lead to if we did assign
more authority to some contributors. Theoretically speaking, that would
allow for sabotaging interests of a direct competitor.

Mind you, I don't think this would happen in the current state of the
project. I'm merely trying to think about worst-case scenarios, which
may or may not be helpful in this context.

Patrick

> > The development community has been fairly loosely organized so far,
> > but I'd like to see responsibility and authority spread a bit more
> > widely yet still not too thinly to compromise the project integrity.
> 
> Agreed.
Patrick Steinhardt April 2, 2024, 7 a.m. UTC | #20
On Wed, Mar 27, 2024 at 06:29:13AM -0700, Junio C Hamano wrote:
> The development community has been fairly loosely organized so far,
> but I'd like to see responsibility and authority spread a bit more
> widely yet still not too thinly to compromise the project integrity.

I guess the main motivation of this statement is to reduce your load in
particular, right? If so, do you have any particular pain points that
can be spread across the community that would help you? Or is it really
only spreading the review load by relying more on subsystem-maintainers?

Patrick
Junio C Hamano April 2, 2024, 5 p.m. UTC | #21
Patrick Steinhardt <ps@pks.im> writes:

> On Wed, Mar 27, 2024 at 06:29:13AM -0700, Junio C Hamano wrote:
>> The development community has been fairly loosely organized so far,
>> but I'd like to see responsibility and authority spread a bit more
>> widely yet still not too thinly to compromise the project integrity.
>
> I guess the main motivation of this statement is to reduce your load in
> particular, right? If so, do you have any particular pain points that
> can be spread across the community that would help you? Or is it really
> only spreading the review load by relying more on subsystem-maintainers?

It is not for load reduction, per-se.

I wish people spent more time and effort on reviewing and helping
others to polish topics as much as writing their own topic.  We see
corporate sponsored entities propose a feature, polish it with
reviewers, and then after the topic lands and collect their perf
scores, leave it bitrot, making it "the community's problem" to
maintain it.  They may even have to leave the project due to reorg.

Somebody comes with a patch in such an area, and receives no
response.  The only two ways I see to reduce such "abandoned parts"
of the system are:

 * Those who are still with the project but their interest moved to
   other areas in the project to come back to help in the area they
   were involved in, and

 * Those who haven't been involved in an area to grow expertise in
   it.

The latter is far more sustainable than the former.  People forget
and become no longer more expert than others who have fresh interst
in the same area.  But for that to happen, we first need to know
where the gaps of expertise coverage are.  If we try to spread
responsibility and authority, we will quickly identify these areas
as we find no experts in these areas.
Linus Arver April 4, 2024, 12:47 a.m. UTC | #22
Patrick Steinhardt <ps@pks.im> writes:

> On Sat, Mar 30, 2024 at 10:59:53AM -0700, Linus Arver wrote:
>> Junio C Hamano <gitster@pobox.com> writes:
>> 
>> > Linus Arver <linusa@google.com> writes:
>> >
>> >> I realize that such an idea is beyond the scope of a simple MAINTAINERS
>> >> (or similar) file that's checked into the Git code repo, but I think
>> >> it's worth stating as a thought experiment.
>> >
>> > As we already have agreed that neither of us care the exact format
>> > of the file (yet), regardless of how a contributor, who is about to
>> > send a patch, will find an area "maintainer" to help the patch along
>> > the process, it is far more important to discuss and decide what
>> > responsibilities and authorities are expected of these maintainers.
>> 
>> I'm starting to think that the new responsibility should be as small as
>> possible, and build from there. So the smallest bit of (initial?)
>> responsibility expected of the new roster of maintainers could be
>> "maintainer must respond to CC pings on the list within 7 days".
>> 
>> For those who have more time to spend on the project, the next rung of
>> responsibility could be "maintainer is available to review patches
>> outside of their domain of expertise if no one else has reviewed the
>> series in 7 days".
>> 
>> I haven't thought too much about the "authority" part yet.
>
> One thing that makes me feel a bit uneasy about the authority part is
> that contributors to Git are quite often direct competitors on the
> company level, as well. This never has been a problem in the past, quite
> on the contrary: I really value the cross-competitor collaboration we
> have in this project.
>
> But I have to wonder what it can potentially lead to if we did assign
> more authority to some contributors. Theoretically speaking, that would
> allow for sabotaging interests of a direct competitor.
>
> Mind you, I don't think this would happen in the current state of the
> project. I'm merely trying to think about worst-case scenarios, which
> may or may not be helpful in this context.

No problem (I also like to think worst-case scenarios, so thanks for the
thought experiment).

Initially I agreed with the concerns you raised, but on further thinking
I don't have the same concerns any more, for two reasons.

  (1) It's impossible to tell if someone is actually intentionally
      sabotaging the interests of a competitor --- simply because no one
      will admit to doing so openly on this list.

  (2) Even if we do have authority figures on this project, if they
      block a patch series from being merged, the reasons they give must
      remain purely technical. Otherwise, I think such authority figures
      will compromise (lose) their reputation pretty quickly.

For (2) it could be that they could block something for both $DAYJOB and
technical reasons, but I think this is still fine. The fact that they
have $DAYJOB reasons wouldn't take away any merit from the technical
reasons.
diff mbox series

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
new file mode 100644
index 00000000000..34fa3baf3a5
--- /dev/null
+++ b/MAINTAINERS
@@ -0,0 +1,85 @@ 
+List of maintainers
+===================
+
+Descriptions of section entries and preferred order
+---------------------------------------------------
+
+	M: *Mail* patches to: FullName <address@domain>
+	R: Designated *Reviewer*: FullName <address@domain>
+	   These reviewers should be CCed on patches.
+	L: *Mailing list* that is relevant to this area
+	S: *Status*, one of the following:
+	   Supported:	Someone is actually paid to look after this.
+	   Maintained:	Someone actually looks after it.
+	   Odd Fixes:	It has a maintainer but they don't have time to do
+			much other than throw the odd patch in. See below..
+	   Orphan:	No current maintainer [but maybe you could take the
+			role as you write your new code].
+	   Obsolete:	Old code. Something tagged obsolete generally means
+			it has been replaced by a better system and you
+			should be using that.
+	W: *Web-page* with status/info
+	Q: *Patchwork* web based patch tracking system site
+	B: URI for where to file *bugs*. A web-page with detailed bug
+	   filing info, a direct bug tracker link, or a mailto: URI.
+	C: URI for *chat* protocol, server and channel where developers
+	   usually hang out, for example irc://server/channel.
+	P: *Subsystem Profile* document for more details submitting
+	   patches to the given subsystem. This is either an in-tree file,
+	   or a URI. See Documentation/maintainer/maintainer-entry-profile.rst
+	   for details.
+	T: *SCM* tree type and location.
+	   Type is one of: git, hg, quilt, stgit, topgit
+	F: *Files* and directories wildcard patterns.
+	   A trailing slash includes all files and subdirectory files.
+	   F:	drivers/net/	all files in and below drivers/net
+	   F:	drivers/net/*	all files in drivers/net, but not below
+	   F:	*/net/*		all files in "any top level directory"/net
+	   One pattern per line.  Multiple F: lines acceptable.
+	X: *Excluded* files and directories that are NOT maintained, same
+	   rules as F:. Files exclusions are tested before file matches.
+	   Can be useful for excluding a specific subdirectory, for instance:
+	   F:	net/
+	   X:	net/ipv6/
+	   matches all files in and below net excluding net/ipv6/
+	N: Files and directories *Regex* patterns.
+	   N:	[^a-z]tegra	all files whose path contains tegra
+	                        (not including files like integrator)
+	   One pattern per line.  Multiple N: lines acceptable.
+	   scripts/get_maintainer.pl has different behavior for files that
+	   match F: pattern and matches of N: patterns.  By default,
+	   get_maintainer will not look at git log history when an F: pattern
+	   match occurs.  When an N: match occurs, git log history is used
+	   to also notify the people that have git commit signatures.
+	K: *Content regex* (perl extended) pattern match in a patch or file.
+	   For instance:
+	   K: of_get_profile
+	      matches patches or files that contain "of_get_profile"
+	   K: \b(printk|pr_(info|err))\b
+	      matches patches or files that contain one or more of the words
+	      printk, pr_info or pr_err
+	   One regex pattern per line.  Multiple K: lines acceptable.
+
+Maintainers List
+----------------
+
+.. note:: When reading this list, please look for the most precise areas
+          first. When adding to this list, please keep the entries in
+          alphabetical order.
+
+3C59X NETWORK DRIVER
+M:	Steffen Klassert <klassert@kernel.org>
+L:	netdev@vger.kernel.org
+S:	Odd Fixes
+F:	Documentation/networking/device_drivers/ethernet/3com/vortex.rst
+F:	drivers/net/ethernet/3com/3c59x.c
+
+...
+
+THE REST
+M:	Linus Torvalds <torvalds@linux-foundation.org>
+L:	linux-kernel@vger.kernel.org
+S:	Buried alive in reporters
+T:	git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
+F:	*
+F:	*/