[Top][All Lists]

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

Proposed: 3 disruptive changes for groff 1.23.0

From: G. Branden Robinson
Subject: Proposed: 3 disruptive changes for groff 1.23.0
Date: Fri, 18 Jun 2021 01:48:15 +1000
User-agent: NeoMutt/20180716

Hi folks,

Back in October, a release looked imminent, but it doesn't seem so now.
Over 700 commits have been pushed since rc1, so an rc2 seems called for
on quantitative grounds alone.  I'm therefore seeking feedback on three
_structural_ changes to the groff repo and/or the source distribution.

1. "Skip the stripper".  Mooted several times on this list in the past,
   this proposal to stop shipping some macro packages (hdtbl, mdoc, and
   "me") in a condensed, hard-to-read form akin to JavaScript
   minification already enjoys a consensus, but was shelved on perceived
   scheduling grounds.

2. Move grog from src/roff to src/utils.  I mooted this on 5 June.  I
   already drastically altered grog's internal structure, making it a
   stand-alone script.[1]

3. Rename "an-old.tmac" to simply "an.tmac".  I'm not happy with the
   whiff of deprecation that the current nomenclature carries.  I've
   done a fair amount of work on the macro package source, fixing bugs,
   rearranging it, adding comments, and making it more accessible (or
   trying to).  I first mooted a rename in broad terms last October, and
   reiterated it in April.  No one screamed, so I propose now to be even
   bolder, permitting the "an" package to reclaim its proper name among
   the macro package file names.

   This would be a NEWS-worthy item because the "-man" argument to groff
   (or nroff, or troff) would no longer load the andoc wrapper.  Is this
   a problem?  You might think so.  But I think I have discovered that
   it is not.  Most people don't use groff(1) for batch-rendering of
   multiple man pages from one invocation at the command line.  If they
   want to render multiple man pages, they use man(1), which in turn
   appears to execute a separate groff process for every page.  (And
   most of the time, people don't ask man(1) for multiple pages anyway.)

   Why do I characterize our users thus?  Because batch-rendering of
   multiple man pages, up through groff 1.22.4, was very buggy, yet few
   reports of its obvious flaws were present in the Savannah bug tracker
   or mentioned on this list.  I've spent considerable effort making it
   work better.  (HTML driver support for rendering of multiple man page
   documents in one invocation was apparently not contemplated at all.)

   I think andoc.tmac is cool and wish to keep it around; apart from
   being useful for its stated purpose, it's an excellent exhibit of how
   to do certain clever things with the *roff language family (and brief
   enough to not defy comprehension).  But I do not think the case for
   andoc arrogating the "-man" and "-m man" arguments to itself is a
   strong one.

   The asymmetry of doc.tmac(-u) not also causing a redirection through
   andoc.tmac is bothersome, though defensible on terms that may chagrin
   mdoc(7) advocates--there are many more man(7) pages in the world, so
   anyone who asks for "-mdoc" is likely to know what they are doing.
   But I believe we have seen that people who don't, don't say "-man"
   instead--they let man(1) do their thinking for them.  That's
   okay--that's part of its job (with an assist from our andoc.tmac).
   In any case, with the proposed change, the asymmetry disappears.

   So I propose to advise users (and authors of man(1) librarians) in
   the NEWS file to invoke groff with the "-mandoc" argument.  This was
   already a good idea, but not truly necessary.  Now it will be.



    I intend, sooner or later, to similarly restructure Bernd's other
    Perl scripts.  The arrangement of having most of the real logic
    stuffed into a "" file would be admirable if one were to
    actually make a working library out of them, but that hasn't been
    done and in the meantime, the arrangement makes the programs hard to
    test, with a distressing impact on implementation quality.

Attachment: signature.asc
Description: PGP signature

reply via email to

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