Re: [PATCH 0/2] Add maintainers to the admin guide

From: Mauro Carvalho Chehab
Date: Tue Dec 13 2016 - 04:38:26 EST


Em Mon, 12 Dec 2016 12:56:50 -0800
Joe Perches <joe@xxxxxxxxxxx> escreveu:

> On Mon, 2016-12-12 at 11:00 -0700, Jonathan Corbet wrote:
> > On Fri, 2 Dec 2016 10:15:13 -0200
> > Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> wrote:
> >
> > > On the past approaches, was planning to keep the documentation
> > > about what's at the MAINTAINERS file inside it, but that would
> > > require running an external script or use some Sphinx extension.
> > >
> > > This time, I took a much simpler approach: convert the initial
> > > part of the MAINTAINERS file to ReST and move to a file at the
> > > admin-guide. So, MAINTAINERS file will now contain only the
> > > maintainer's database, and a single line pointing to its documentation.
> >
> > So sorry for the silence on this...I decided that I wanted to think about
> > it past the merge window, then promptly got buried by other stuff.

Yeah, MAINTAINERS and ABI are two things that require some thinking.

> >
> > I like this approach better than one came before, but I do still have to
> > wonder about what the objective is. The documentation of the MAINTAINERS
> > format is going to be of interest to people while the are ... looking at
> > or modifying MAINTAINERS. So perhaps it's already in the most useful
> > place? Are we really doing people a favor by telling them they have to
> > follow a pointer to a different file? What is gained by doing that?

The MAINTAINERS file currently has 3 parts:

1) instructions for patch submitters;
2) descriptions about the database fields;
3) the maintainer's database.

IMHO, part (1) is misplaced. Also, before doing the conversion, I suspect
that the last time I read it were when I became a maintainer, more than
ten years ago :)

Along all those years, I read part (2) only on rare situations,
e. g. when I need to do something different. On such cases, I usually
open MAINTAINERS file on two windows, one with part (2) and another one
on the editor where I'm filling the database. So, at least for my usecase,
it doesn't really matter if both are in the same file or on different ones.

With regards to part (3), what I do myself, and what it seems that
new media drivers' submitters do is that they simply clone the media
subsystem's entry (or a previous clone of it) and then modify the "M:"
and the "F:" entry, eventually adding new "L:" entries, when other lists
should be c/c on patch submissions, like on this example:

AIMSLAB FM RADIO RECEIVER DRIVER
M: Hans Verkuil <hverkuil@xxxxxxxxx>
L: linux-media@xxxxxxxxxxxxxxx
T: git git://linuxtv.org/media_tree.git
W: https://linuxtv.org
S: Maintained
F: drivers/media/radio/radio-aimslab*

IMHO, the meaning of the most used fields are clear to anyone that reads the
database, even without reading part (2).

That's said, in the case of ABI database, the instructions about the
expected fields are on a separate file (Documentation/ABI/README).
That doesn't make any harder to write a new ABI file.

So, I don't see any issue on splitting the non-database stuff on
separate file(s).

Yet, if you prefer to keep them altogether, we could return back to
the previous approach of having a parser that would detect where the
database starts and show it in a literal way. On such case, we could
apply patch 1/2 and modify get_maintainers.pl to output MAINTAINERS
as a ReST format, adding a Sphinx extension that would allow calling
get_maintainers.pl.

> > I won't dig in my heels against this forever, but I am curious to hear
> > what others think about why this change should (or should not) be made.
>
> As long as I don't have to update the get_maintainers script
> just to satisfy some external desire to make it rst style
> compatible, I don't much care.
>
> About the change itself:
>
> Does the boxing with the ======= blocks align properly?
> It it really useful? Is there another/better way?

Do you mean those?

=============================== ================================
``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``
=============================== ================================

This is a table. We might instead use a literal block, like:

::

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

But the result looks uglier when generating LaTeX or HTML, as it won't
unwrap the continuation lines of the field descriptions.

Another alternative would be to use ascii artwork, like:

+------------------------------------+----------------------------------+
| ``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`` |
+------------------------------------+----------------------------------+

That makes it better to read, at the expense that it takes more time to
handwrite.

Yet, once the tables are there, they can easily convert it to ascii artwork
with pandoc:

$ pandoc -f rst -t rst Documentation/admin-guide/maintainers.rst

If you think that it makes easier to read, I can replace the tables
there by their asciiart alter ego.

Thanks,
Mauro