At 2023-06-29T06:27:44+0000, segaloco via TUHS wrote: > Man of course finds use in the manual pages (although there are > different representations of manpages in nroff over time.) Setting aside the well known bifurcation between man(7) and mdoc(7), which manage to stay out of each other's way in the macro name space, I'm not aware of any comparative survey of different man(7) implementations. Ultrix at some point--I have no insight into the chronology of it--had a large set of extensions that remains quietly documented and supported by groff to this day, albeit off in a corner where it seems to receive little attention. (Just as well, in my opinion, as not all of its innovations are worthy of embrace.) As far as other vendor extensions and developments go, I have collected all of the information known to me into the groff_man(7) page in the any-minute-now groff 1.23.0 release. Here are the relevant sections. (There are two because concept and implementation are distinguishable.) History M. Douglas McIlroy designed, implemented, and documented the AT&T man macros for Unix Version 7 (1979) and employed them to edit the first volume of its Programmer's Manual, a compilation of all man pages supplied by the system. That man supported the macros listed in this page not described as extensions, except .P and the deprecated .AT and .UC. The only strings defined were R and S; no registers were documented. .UC appeared in 3BSD (1980). Unix System III (1980) introduced .P and exposed the registers IN and LL, which had been internal to Seventh Edition Unix man. PWB/UNIX 2.0 (1980) added the Tm string. 4BSD (1980) added lq and rq strings. SunOS 2.0 (1985) recognized C, D, P, and X registers. 4.3BSD (1986) added .AT and .P. Ninth Edition Research Unix (1986) introduced .EX and .EE. SunOS 4.0 (1988) added .SB. The foregoing features were what James Clark implemented in early versions of groff. Later, groff 1.20 (2009) originated .SY/.YS, .TQ, .MT/.ME, and .UR/.UE. Plan 9 from User Space's troff introduced .MR in 2020. Authors The initial GNU implementation of the man macro package was written by James Clark. Later, Werner Lemberg supplied the S, LT, and cR registers, the last a 4.3BSD-Reno mdoc(7) feature. Larry Kollar added the FT, HY, and SN registers; the HF string; and the PT and BT macros. G. Branden Robinson implemented the AD and MF strings; CS, CT, and U registers; and the MR macro. Except for .SB, the extension macros were written by Lemberg, Eric S. Raymond, and Robinson. This document was originally written for the Debian GNU/Linux system by Susan G. Kleinmann. It was corrected and updated by Lemberg and Robinson. The extension macros were documented by Raymond and Robinson. I welcome any further insights people can offer. This man page isn't the best place to document extensions that withered on the vine (like Eighth/Ninth Edition Research Unix's addition of multi-column macros for man(7)), but I wouldn't mind collecting such things into some sort of auxiliary article. While the mandoc(1)/mdocml project's "History of UNIX Manpages"[1] is an invaluable resource, it doesn't really do what's written on the tin, and serves more as a history of (some) *roff _formatters_--not of the man(7) language. I assume that this stance is in part due to the unease bordering on antipathy that mandoc(1) proponents have for the man(7) macro package. In their view, everybody should be writing mdoc(7). Unfortunately this lacuna has left useful historical information about the man(7) package uncollected. Regards, Branden [1] https://manpages.bsd.lv/history.html