groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Why does groff use Texinfo? (was: "Writing my PhD using groff")


From: G. Branden Robinson
Subject: Why does groff use Texinfo? (was: "Writing my PhD using groff")
Date: Sun, 24 Jul 2022 17:44:37 -0500

[dropped DJ from Cc]

At 2022-07-24T13:18:46-0700, Larry McVoy wrote:
> Has anyone proposed redoing the texinfo stuff in Groff?

You do, approximately every time the subject comes up.[1]  ;-)

> Am I the only person who thinks that have *roff documentation in a
> different markup is crazy?

In literal terms, you might be.

> I wrote a couple source management systems, this is like I was storing
> BitKeeper in Git.  That says I trust Git but not my own code.

In groff Git, and in 1.23 whenever we can get that out, we'll be
shipping the (at current count) 385-page compiled groff man pages along
with the 303-page TeXinfo manual, as well as the 27-page ms.ms document.
Among other *roff documents.

So, yes, we eat our own dog food.

> If not, why not?

My guess?  History and priorities.  Trent Fisher contributed the
original cut of the manual in Texinfo format, sometime in 1999
apparently.[2]  Werner Lemberg expanded it from there.  And I've done my
stuff to it since 2019.

"Officially," "GNU manuals" are in Texinfo format.  If I had to guess, I
would assume that is why the original selection of format was made.
Perhaps the idea was to try to invite the, ehrm, "thought leader" of the
GNU project to cease the practice of treating groff like a red-headed
stepchild.  (Refusing to recognize the value or even existence of man
pages, for instance.)  The FSF never published paper-bound copies of the
groff manual.  (Admittedly, there were some incomplete, stubbed-out
sections, but they weren't essential, and ca. 20 years ago I saw printed
and bound GNU manuals with worse professionalism problems than that.)

I think that in turn was a matter of chasing different tail-lights.
Brian Reid's Scribe was everything you--for particular values of
"you"--could want in a formatting markup language, except for its
license, and TeX was all you could ever want in a typesetting engine and
moreover had the holy aura of Donald Knuth around it.  Meanwhile,
everything that came from Bell Labs was a bit suspect of being crap.
Maybe this was because (1) it didn't come from an elite CS university
like MIT or Stanford and (2) AT&T lawyers had spent a decade-plus being
magnificent dicks about it.  Recall that the Unix kernel itself was
evaluated as a bit naff,[3] and something that was supposed to be
"replaced" by a microkernel accompanied by a "hird" of "daemons".

Now, for my part, having read Liedtke and Heiser and others, I _do_
happen to have drunk the microkernel Kool-Aid.  As I understand the
literature, Mach seriously stumbled by trying to take a monolithic
kernel and slim it down instead of starting from nothing and only
putting into the microkernel what you absolutely had to to get something
that could account for hardware capabilities and switch tasks (Liedtke's
minimality principle).  (Even the former isn't _strictly_ necessary, but
omitting it makes a poor candidate for a high-integrity system.)  Mach's
working set was too big--it parked itself in nearly all of the meager
processor cache you had back in 1990, murdering your performance.

At the same time I kind of wonder how much kernel selection mattered
when the only users who mattered were going to spend all day every day
in an Emacs window anyway.

My surmise is probably excessively cynical.  GNU did, by the accounts
I've read, actually _fund_ James Clark to implement groff in the first
place.  From what I can tell he worked effectively, and quickly, given
the volume of work to be done.  So why the comprehensive diss afterward?
Is there another story to be told?

Moving from speculation about the past to facts about the present, yes,
I'm well situated to undertake the work of migrating our Texinfo manual
to a groff macro package.  Why haven't I?

If you look closely, you'll find that a great deal of our Texinfo manual
has parallel forms in other groff documentation.  I'll characterize the
manual as it exists in Git today.

Chapter 1: Introduction: ~4 pages of basic concepts and a nice capsule
           background from Doug McIlroy
Chapter 2: Invoking groff: duplicates portions of groff(1) and troff(1)
           (mostly the "Options" sections)
Chapter 3: Tutorial for Macro Users: duplicates meintro.me, more or
           less--it is generalized a bit
Chapter 4: Macro Packages: almost entirely stumps referring to man
           pages; the remainder is a description of the tmac/man.ultrix
           file or duplicates ms.ms
Chapter 5: gtroff Reference: this has much original content, and it is
           in fact the bulk of the manual by page count.  However, even
           here, much if not quite all of the description of GNU
           extensions to CSTR #54 troff (excluding examples) is
           duplicated in groff_diff(7).  Notwithstanding, much
           presentation of fundamental concepts is duplicated in
           roff(7).
Chapter 6: File Formats: duplicated in groff_font(5) and groff_out(5).

That's it.  The remaining 50 pages are a copy of the GNU FDL (but the
manual is nevertheless dual-licensed under the GPL[4]) and indexes.

Regarding Chapter 4 in particular, my intention has been to stub out the
description of ms as well, once I'm "done" updating Larry Kollar's ms.ms
document, which I characterized as near earlier in this thread.[5]  I've
described my plans before, but can't scare up a citation.  My fault for
sending a lot of mail.  :-/

As you can see, there are some things our Texinfo manual has that you
can't find elsewhere (mostly examples), but less than you might suppose
when considering its page count.

So, when someone asks why we, as developers of a document formatting
system, have a bunch of essential content locked up in a document format
that isn't ours and which we don't control, I know they haven't done
their homework, or had someone do it for them--in other words, that they
haven't been _reading_ it.  It reminds me of interviewing with the
founder of a startup.  They've got vision.  Boy, do they.  Their
eyesight is another matter.

But even that's okay, if they're willing to listen when I explain how
they're mistaken (assuming I am equipped to do so).  I get it.  Guys
like me don't book sales.  But delivery gets tough if you drive away all
your implementors.

To get simplistic and Manichean about it, there are two types of
personality in the tech field.  There's Steve Jobs and his Reality
Distortion Field, to which one willingly submits if one wants to keep
drawing a salary...

...and there's Isaac Asimov, who said "There is a cult of ignorance in
the United States, and there has always been.  The strain of
anti-intellectualism has been a constant thread winding its way through
our political and cultural life, nurtured by the false notion that
democracy means that 'my ignorance is just as good as your knowledge.'"

That does sound a bit preachy, doesn't it?  This is why we don't
organize workplaces as democracies.  Who wouldn't prefer a confident,
ignorant autocrat?

Maybe I'll rant a little less when these 90 dBs' worth of dehumidifer
and fans are out of the damned house.  The ass clown plumber who plants
a time bomb to go off in your home after seven years is just one
specimen of the celebrated small business owner of America.

Regards,
Branden

[1] A sampling:
    https://lists.gnu.org/archive/html/groff/2002-12/msg00007.html
    https://lists.gnu.org/archive/html/groff/2005-10/msg00107.html
    https://lists.gnu.org/archive/html/groff/2020-02/msg00033.html

[2] Our "NEWS" file declares its arrival in groff 1.12, but that
    release, like 1.13, is _not_ archived at
    <https://ftp.gnu.org/gnu/groff/old/>.

[3] Someday I want to run ITS under simulation, if that is even
    possible, and see if I can form any notion at all of why it was so
    freakin' beloved in contrast even to V7 Unix.  I expect little.

[4] https://git.savannah.gnu.org/cgit/groff.git/tree/LICENSES
[5] https://lists.gnu.org/archive/html/groff/2022-07/msg00148.html

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]