Re: [PATCH Y.A. RESEND] MAINTAINERS: fix alpha. ordering

From: Linus Torvalds
Date: Fri Jul 28 2017 - 18:30:39 EST


On Thu, Jul 27, 2017 at 8:12 PM, Joe Perches <joe@xxxxxxxxxxx> wrote:
>
> I think it's better to centralize the MAINTAINERS
> location in <tree>/MAINTAINERS/<files> than spread
> them all over the tree given how many subsystems and
> maintainerships are also spread around the tree.
>
> But the get_maintainers patch I sent allows both
> styles.

Possibly. I just did realize that we have one de-centralized
maintainers file out there already, and have had for 3+ years:
drivers/staging/unisys/MAINTAINERS.

One thing I like about the decentralized model is that it looks like
we could automate the initial split fairly well based on F: patterns.
Something like:

- if we have a single F-pattern line, without directory wildcards,
put the entry in the MAINTAINERS directory for that F-pattern

- else keep it in the top-level MAINTAINERS file

because everything else I looked at kind of sucked. The "first word of
the description" works really well for a couple of cases, but really
badly for the majority.

But my favorite model right now is to actually do it by the "L:"
entry, and then remove the host name and the common parts from the
email name ("devel", "dev", "kernel", "linux" etc).

And then *if* we have multiple entries (arbitrary cut-off: 5) for the
same base (so the rule would be that we never have a MAINTAINERS file
with just a single entry like that unisys one), we'd split it out and
use "MAINTAINERS/xyz" for those entries.

But we'd still need a fallback for the "rest".

Because doing it by mailing list superficially looks like it might
work very well, we have things like this:

5 L: iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx
5 L: keyrings@xxxxxxxxxxxxxxx
5 L: linux-block@xxxxxxxxxxxxxxx
6 L: linux-arm-msm@xxxxxxxxxxxxxxx
6 L: linux-samsung-soc@xxxxxxxxxxxxxxx
7 L: linux-samsung-soc@xxxxxxxxxxxxxxx (moderated for non-subscribers)
7 L: linux-security-module@xxxxxxxxxxxxxxx
7 L: linux-wpan@xxxxxxxxxxxxxxx
8 L: linux-acpi@xxxxxxxxxxxxxxx
8 L: linux-fsdevel@xxxxxxxxxxxxxxx
8 L: linux-ide@xxxxxxxxxxxxxxx
8 L: linux-serial@xxxxxxxxxxxxxxx
8 L: xen-devel@xxxxxxxxxxxxxxxxxxxx (moderated for non-subscribers)
9 L: adi-buildroot-devel@xxxxxxxxxxxxxxxxxxxxx (moderated for
non-subscribers)
9 L: linux-hams@xxxxxxxxxxxxxxx
9 L: linux-mm@xxxxxxxxx
11 L: kvm@xxxxxxxxxxxxxxx
11 L: linux-mmc@xxxxxxxxxxxxxxx
12 L: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
13 L: linux-renesas-soc@xxxxxxxxxxxxxxx
13 L: linux-s390@xxxxxxxxxxxxxxx
16 L: linux-iio@xxxxxxxxxxxxxxx
16 L: linux-mips@xxxxxxxxxxxxxx
17 L: linux-gpio@xxxxxxxxxxxxxxx
18 L: linux-crypto@xxxxxxxxxxxxxxx
18 L: linux-mtd@xxxxxxxxxxxxxxxxxxx
20 L: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
20 L: linux-input@xxxxxxxxxxxxxxx
22 L: linux-i2c@xxxxxxxxxxxxxxx
23 L: linux-edac@xxxxxxxxxxxxxxx
23 L: linux-fbdev@xxxxxxxxxxxxxxx
23 L: linux-rdma@xxxxxxxxxxxxxxx
25 L: linux-omap@xxxxxxxxxxxxxxx
26 L: alsa-devel@xxxxxxxxxxxxxxxx (moderated for non-subscribers)
27 L: linux-pm@xxxxxxxxxxxxxxx
28 L: dri-devel@xxxxxxxxxxxxxxxxxxxxx
29 L: linuxppc-dev@xxxxxxxxxxxxxxxx
33 L: linux-pci@xxxxxxxxxxxxxxx
35 L: platform-driver-x86@xxxxxxxxxxxxxxx
39 L: linux-usb@xxxxxxxxxxxxxxx
44 L: linux-wireless@xxxxxxxxxxxxxxx
46 L: linux-hwmon@xxxxxxxxxxxxxxx
54 L: linux-kernel@xxxxxxxxxxxxxxx
57 L: linux-scsi@xxxxxxxxxxxxxxx
122 L: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx (moderated for non-subscribers)
134 L: netdev@xxxxxxxxxxxxxxx
187 L: linux-media@xxxxxxxxxxxxxxx

so we'd actually be able to create an entry like "media" with 187
maintainers entries automatically based on that heuristic. Same goes
for a lot of other entries, and we'd end up with about 50 files in
MAINTAINERS which sounds manageable but still usefully split up.

So we'd have files like "rdma", "dma", "omap", "pm", "dri", "pci",
"wireless" etc, all of which sound sane.

(The "linux-kernel@xxxxxxxxxxxxxxx" L: entry above would automatically
become moot, because the "filter out the common parts" turns it into
an empty name, which is actually correct - it implies no specific
subsystem)

I generated the above with trivial grep scripting, so some of them may
end up not working or having wrong counts just due to having multiple
L: lines, but it looks like a promising approach to me, and I like how
the names seem to end up all fairly sane.

Comments?

Linus