Re: on project management (was: the Linux man-pages as an educational tool)

enh <[email protected]> Mon, 3 Aug 2026 15:46:00 -0400
Newsgroups gmane.comp.lib.gnulib.bugs,gmane.linux.man,gmane.comp.lib.glibc.alpha,gmane.comp.printing.groff.general
Message-ID <CAJgzZorzA1f+KNAj0m56nXxoKywY_pCj2pX3Rg-CgP1P8TnZuA@mail.gmail.com>
On Mon, Aug 3, 2026 at 12:09=E2=80=AFPM G. Branden Robinson
<[email protected]> wrote:
>
> [looping in groff list because toward the end of this mail I present
> some philosophy that I have applied to my work on that project]
>
> Hi Alex,
>
> At 2026-08-03T01:37:26+0200, Alejandro Colomar wrote:
> > > Date: 2026-08-02 16:27:21-0700
> > > From: Collin Funk <[email protected]>
> > > I can't help but wonder of what happens in WG 14 rejects this
> > > controversial, as obvious by this thread, change. Will the man-pages
> > > changes be reverted? Or will we slowly watch them document personal
> > > preferences instead of existing standards?
> >
> > This patch set is quite independent of the standard.  It documents a
> > header file that has been provided since forever in glibc and most
> > other POSIX-ish systems,
>
> Just yesterday while watching an ncurses build scroll by on my tablet, I
> had occasion to notice that Bionic libc provides a "memory.h" header.
> Curious, I checked it out.
>
> It's a thin wrapper for <string.h>.

the crazy part is that it was an _empty_ file until i made it just
#include <string.h>:
https://android-review.googlesource.com/c/platform/bionic/+/52171

i can't explain that (it was originally checked in as an empty file,
so the history is no help).

i _can_ explain why i made it match glibc rather than just deleting it
though: i didn't want to break existing code that was [harmlessly]
including an empty file, and i wanted to increase the amount of the
code from other libcs that would "just work". (and note that ios/macos
have a <memory.h> that's just a #include <string.h> too.)

> I endorse your reformist attitude because every technological success
> story begins ossifying as soon as its market position can be milked for
> economic rent.  As the old Demotivator poster said of consulting: "If
> you're not a part of the solution, there's good money to be made in
> prolonging the problem."[1]
>
> Thus trigraphs.  Thus K&R function declarations.  Thus "wastebasket
> taxon" header files.
>
> > so changes to the standard are unlikely to have any effects.  I've
> > clarified this extensively.  If you want to discourage me from
> > applying the change, you should rather bring up technical reasons.
>
> I don't think Collin's totally off base.
>
> What is the overall mission of the Linux man-pages project as you
> conceive it?
>
> Take some time to draft one, if you haven't already and I missed it.
> Here are some points you might consider.
>
> *  Is delivery of factual information more or less important than
>    advocacy of correct methods and accepted idioms?
>
> *  If the foregoing are equally important, are you _sure_ they need to
>    be?  Can you escape dilemmas that frustrate day-to-day stewardship
>    work by favoring one over the other?
>
> *  If you maintain that the two are equally important, nevertheless, how
>    do you resolve conflict?  Disclose the principles you employ to
>    decide such issues, and write them down where people can find them.
>    That way they can better understand why you reason the way you do,
>    and you bind yourself to those principles, so that you and others are
>    less seduced by the urge to "shift the goalposts" in a dispute.
>
> > This passive-aggressive message is not something that will have the
> > desired effects you could possibly reach with technical arguments.
>
> I'd say less that it was a passive-aggressive message than that it was a
> deployment of a slippery-slope argument.  Fallaciously?  I don't know.
>
> But it is also true that people are pushing back on your proposals
> regarding re=C3=ABnvisioning of libc's memory buffer and string APIs from=
 two
> fronts.  Only one is technical.  The other is managerial.
>
> As a maintainer, your role is to serve your community.  This is a
> privilege and a responsibility.  Generally, one is accepted in that role
> because one has demonstrated a high level of expertise and sufficient
> resources to carry out the tasks the role requires.
>
> Someone earlier in the thread made reference to the personage of past
> glibc maintainer Ulrich Drepper, whose maintainership of glibc came to
> an unhappy end.  Anyone who'd deny that Drepper was a world-class domain
> expert or diligently applied himself to his work, I would not take
> seriously.  Apart from glibc maintenance, he wrote some excellent papers
> on dynamic shared objects and on the nature of the memory abstraction in
> Unix and Unix-like systems.  (Since the latter paper got so deep into
> the topic of cache memory architecture, I'd venture it applies more
> broadly still.)
>
> I reiterate: world-class.  Any engineer in this space who doesn't read
> Drepper disserves themselves professionally.  His stuff is up there with
> Goldberg's 1991 paper on floating-point arithmetic, in my opinion.  Even
> if you don't 100% digest what these people have to say, they'll improve
> your thinking, because you'll become more familiar with the problem
> domain.  (And if you disagree with them and can back up your claims,
> start writing a paper of your own.  That's where the confidence one
> manifests in the Google interview or break room evaporates.)
>
> So how does a guy like that get himself into trouble as a maintainer?
>
> By persistently failing to attend to the demands/needs of the community
> they serve.
>
> Listen to your users.  Even if they're "wrong".
>
> Here's how I apply the foregoing mode of analysis to my own work.
>
> I've occasionally ruffled feathers by changing defaults in groff.[2]  I
> _think_ that I have kept myself from being deposed by the sans-culottes
> by going well out of my way to ensure that configuration knobs are
> available to override those defaults, to document not just their
> substance but their rationale, and to present examples in a
> configuration file in /etc/groff so that all people have to do is
> uncomment something to override my contemptible idiocy.  (Eventually,
> some learn the hard way why I made my choice.)
>
> Frequently, I pitch potentially disruptive changes--stuff that we'd
> report in the "NEWS" file--as an email to the groff list with
> "Proposed:" in the Subject line.  More often than not, what I suggest
> involves such an esoteric detail of formatter behavior that I get no
> feedback at all.  Few have mastered such oddities as diversion trap
> management, to name an example of something that's moving a little bit
> in groff 1.25 and might, theoretically,[3] break some old AT&T troff
> documents (but none written targeting GNU troff itself).
>
> But I also have a counterexample.
>
> 2 release cycles in a row, in anticipation of groff 1.24 and 1.25, I've
> pitched a small redesign of GNU troff such that the configured
> hyphenation language--basically, the set of patterns used for automatic
> hyphenation of words, which are locale-specific (English, French,
> German)--is a property of the environment, like all other hyphenation
> configuration parameters, rather than a global one.
>
> Twice in a row, one person has spoken against the change--it _would_
> require changes to some macro packages.  That person is Peter Schaffter,
> author of mom(7), a macro package that shows off GNU troff's
> capabilities as a typesetting system better than any other.
>
> I haven't yet managed to make a concrete case to him strongly enough to
> persuade him that the objective is worth the candle.
>
> Now, I'm dead certain that my proposal is the correct course from a
> software design perspective.  It's a Yourdon/Constantine "cohesion"
> no-brainer.
>
> But, because environments are formatter-level objects, such a change's
> impact is not limited to internal data design.  It affects the language,
> and I have users.  So, I've interpreted Peter's objection as a
> procedural veto.  Rhetorically, he hasn't been so strident.  What I
> infer is that I need to spend time coming up with one or more concrete
> exhibits to establish the benefit of the change.  I have an idea for
> what would do it: a multi-lingual document, say an mm(7) document where
> most of the body text is in English but the document uses the package's
> "bottom block" `BS` and `BE` macros to present at the foot of every page
> some kind of disclaimer in, for instance, French.
>
> Just articulating the idea isn't enough.  Given the unusual resistance
> on this point, and recognizing the general indulgence shown by the
> community toward my madcap reformist schemes as something I'd be wise
> not to squander, I've decided what I need to do is build a real document
> with a real macro package, and illustrate what changes to that package
> would be necessary to fulfill the promise of the redesign.
>
> I expect the disruption level to be low and the benefit to be high--for
> its applicable problem domain.  The potential impact either way is
> limited because multilingual documents are simply not common.
>
> Because groff's community is small, I interpret a single dissenting
> voice as putting consensus out of reach.  It helps in this case that the
> single dissenting voice is a known member of the community.  If our
> mailing list suffered from anonymous drive-by trolls, I'd be in the
> perilous position of bifurcating participants into a class that gets
> "taken seriously" and a class that does not.  I spoke earlier in this
> thread of "moral hazard".  I feel there is significant moral hazard in
> making such classifications.  For one thing, sometimes anonymous
> contributors make cogent points, and for another, temptation is
> ever present to make the class of "people to be taken seriously"
> coextensive with those who agree with, flatter, or indulge you.
>
> Kings, presidents, executives, generals, and "BDFL"s express
> mystification and confusion regarding their failures because they
> mistake sycophancy for objective judgment.
>
> Regards,
> Branden
>
> [1] https://www.reddit.com/r/Demotivational/comments/1fdyxe/consulting/
>
> [2] The most famous example is the great hyphen-minus debacle of 2023.
>     https://lwn.net/Articles/947941/
>
> [3] And I do mean theoretically.  I surveyed a large corpus of
>     historical Unix troff documents and could not find _any_ that came
>     close to slipping through the "hole in the grammar" that I
>     identified and closed.
>     https://savannah.gnu.org/bugs/?68357#comment1