Why we're stuck with man(7) (was: man/man8/ldconfig.8: document system-wide tunables)
"G. Branden Robinson" <[email protected]> Fri, 10 Jul 2026 14:58:54 -0500
| Newsgroups | org.kernel.vger.linux-man |
|---|---|
| Message-ID | <20260710195854.ud4riftmhrfzu54d@illithid> |
Hi DJ, At 2026-07-10T14:12:10-0400, DJ Delorie wrote: > Alejandro Colomar <[email protected]> writes: > > mandoc: .tmp/man/man8/ldconfig.8:250:2: WARNING: skipping paragraph macro: PP empty > > mandoc: .tmp/man/man8/ldconfig.8:270:2: WARNING: skipping paragraph macro: PP empty > > Fixed. I think. We need a better language for this ;-) 21 years ago I figured we'd get one that would conquer the world. We haven't. Too bad. I could have started working on groff back then. Here's a summary of how we got here. * man(7) (Bell Labs CSRC, 1979) was "good enough" ("worse is better"). At least one generation of Unix people came up venerating the documents written using it. * Many, many programmers don't want to _write_ documentation at all. * Many programmers' managers regard documentation as an unwelcome friction slowing down the launch of a Minimum Viable Product. * Many of the programmers who _do_ want to write documentation don't want to compose it in anything more complex than Markdown. * Markdown can't do semantics. ∴ Goodbye, "semantic Web". * People who did want a semantic Web ran into problems. * XML overpromised and underdelivered. * DocBook-XML was lexically overcomplicated--meaning hard to learn--with something like 400 elements. A part-time practitioner, such as a person writing in a "real" programming language, could not retain the markup language in their head between periods of exile to Documentation Land. Further, its toolchain, involving stuff like jade and opensp, was heavyweight and difficult to work with. And also written in Java because Java was going to be the One Language to Rule them All, with C and C++ forgotten, by 2005 or so. ∴ "Semantics" got a bad rap because everyone with a fat wallet who backed it bet on a losing horse for the delivery of said semantics. They spent 10+ years telling the world that XML was the _only way to do semantics_. And because venture capitalists and tech bros are infallible geniuses in black turtlenecks, everybody believed them. * There's mdoc(7), which one might uncharitably say brought you the worst of all worlds. Semantics? Yes! But many element types. (Only about 1/4th as bloated as DocBook, though. And Ingo Schwarze insists you can get by with much less than that. Until you guess wrong and he reviews your document. ;-) ) And if you don't like *roff as a macro system, wait until you discover mdoc! It implements a macro processor on top of your macro processor! And mdoc(7) was only created in the first place because AT&T were such jerks about the licensing of troff (and Unix generally). So the Berkeley CSRG's mandate, I infer, was to spec out a macro system that could eventually be ripped free of troff and set down on top of something else. * That decision, taken in maybe 1987 or 1988, predated by only one year the advent of James Clark's "groff", which BSD promptly shipped in Net/2 and later 4.4BSD. (Later, its descendants ripped it out again, because GPL and C++ bad. BAD!) * That "other" macro system didn't arrive until about 2010, in the shape of mdocml(1)--now known as mandoc(1)--which, because man(7) documents had not had the decency to shrink below 90-95% of man pages on all systems, ended up reimplementing huge chunks of...troff. ∴ Almost the only people writing mdoc(7) are strident BSD partisans. You can write your man page in mdoc(7), but sooner or later you'll be asked why you aren't running *BSD, and you'll get treated like an idiot if you don't. You will then understand how *BSD is a refuge from the evangelicalism of GNU people.[1] ;-) * In my estimation, TeX could have conquered this space too. It was pristinely engineered (if idiosyncratically implemented), had tons of momentum, oodles of capable practitioners, and a benign, deific, universally esteemed figure behind it. * TeX's holy mission is beautiful typography, and it's good at it. * People read man pages on terminals 90%+ of the time. * You can't do beautiful typography on terminals. * Terminals can **** off. ∴ TeX ceded this ground without ever contesting it. I've ventured my own proposal for the addition of a flexible semantic system to man(7) with backwards compatibility, at the cost of only two additional macro names.[2] Literally no one has expressed interest. So it goes. Regards, Branden [1] mdoc(7) is fine. It has some nice features, and insofar as I have a command of it, I'm happy to help people draft or improve their man pages that use it. What it is not, is easier than man(7). [2] https://lists.gnu.org/archive/html/groff/2022-12/msg00075.html
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEh3PWHWjjDgcrENwa0Z6cfXEmbc4FAmpRTvcACgkQ0Z6cfXEm bc42Ig/+PR/dBTwAsS8/SAO598ET7E1kyEaO39ejVGvxYDEd5XS7HY2AYD3CGAf+ cXtHC5n7SjpKTU3n1nHF1utTs0Im79RUxh1Z8V7/MuysPDS6mDWSL+I9ASQZRy9R zVgxJPqv5UjoZyNjr7bn9F6r9J2ebrHKI2IanPsTOaExHzu5mYa7W/r7586jw2y1 0k2HCNQsFhTzEFfHVxgR7+rZb2WDsSDmA9tQN5EoD+OzVo93Jw/hqwd9WhkVO9W0 ESnw7T08KvWzdeGQHXbo04n+Y/UiC/gzqY9B9psB7JkbB3hduzUsnzzhQC/RyJtw /ABTnoWFivl4NrwyrCbEa5a+BDwyK4ZHup1o6fQ7f29gRH4awUU8YYDATiCtWNCf 9dMTNZPlbHXG9PkHGMCCuAI+KxCK1YNRVYEJ6WritYxpRBUfJ9IeHZCPmhaxbHcP ByFODl9DfQHYSqpGjSThMUsFp+PgzYdkO9eleKC4VIM83axN5FP05Z6hz6gZEzQS nLJZMb84GvXcmOO57BcK2a0ZjQg4O0/HuOQnos5GFQuF/Rf0Q3j0mxEqEyFn/VNv mZDDKnxfEh04e0qinqywP5wLcYggyhoDvQR0DC2p8f0aKx30qJG6/8w+ta1UNtnX 9fCAX074ytTjT97ooenZXHvitMutirewKtXW15AMGbs2yIXPqh4= =DVCh -----END PGP SIGNATURE-----