How would we make linux man pages authoritative?
Carlos O'Donell
carlos@redhat.com
Fri May 22 15:34:11 GMT 2020
Michael,
Could we create a process by which we might incrementally mark linux
man pages as authoritative for a given C library implementation and
at the same time encourage more C library community involvement in the
development and maintenance of the linux man pages?
I'm including Rich Felker the main musl developer, because I think
this topic applies to musl, and the linux man pages already contain
some markup for other C libraries.
Let me paint a picture of the future (what else are Fridays for):
* The project manual is a task-oriented document that describes how
to use APIs together to achieve certain purposes. We update the
manual based on new uses and complex task-oriented requirements
e.g. how do you effectively use clone, or vfork, or unshare with
all the right APIs to do something useful like starting your own
container by hand.
* The linux man pages are the authoritative reference for all the
APIs that are derived from ISO C, POSIX, BSD, and other systems.
I say "derived" because we do not follow them strictly, but instead
derive from them and deviate where appropriate given the underlying
kernel.
* A process exists to mark a manual page as authoritative for the C
library API it implements e.g. Authoritative for glibc, or musl,
or uclibc. Such markup means a developer from that project should
review patches to that page in a timely fashion to agree that we
haven't crossed any implementation boundary e.g. documented something
that is not guaranteed. Such review needs a timeout as part of the
agreement.
* The C libraries have as a goal to update the API documentation in
the linux man page as the authoritative source of the API reference
and make it part of their submission process. Yes, this involves
committing across two projects, and some good coordination.
In such a future we have the following assurances:
* More developers familiar with C library implementations working on
the linux man pages project, and providing continuity of care for
the project.
* The linux man pages project accepts certain authors as needing
to review, in a timely fashion, certain changes to certain marked
man pages.
* The downstream C library implementations are all incentivized
to contribute to the existing linux man pages project and support
that effort, thus growing the quality and coverage of the man pages.
* We reduce duplication of efforts in documenting the APIs as they
are derived, with differences, from ISO C, POSIX, BSD etc, for Linux.
The glibc project retains a manual as a task-oriented guide which
can be read by developers to learn how to do certain tasks, but does
not contain API references (those are delegated to the linux man pages
project). We incrementally remove the API references in the glibc manual,
and convert them one-by-one into task-oriented documentation about how to
use that API well.
I'm trying to think of a beautiful future. If you think this future
is ugly, please tell me so, and suggest something else :-)
--
Cheers,
Carlos.
P.S. Martin, please forgive me is this is the beautiful future you wanted.
More information about the Libc-alpha
mailing list