Follow-up Comment #3, bug#65101 (group groff):

Okay, that reply seems a tad heated.

[comment #2 comment #2:]
> Why are you doing this?

I said already.  See comment #1.  "I was pursuing my goal of consistent
styling between rendered groff's own man(7) and mdoc(7) documents.  In my
opinion, it should be difficult to impossible for a person reading a rendered
man page to tell which macro package was used for its composition."

> Should I expect mdoc to use four fonts

Why do you pick four, in particular?  I hope you are not referring to "R, I,
B, and BI" specifically.  If so, you may benefit from a the following
perspective.


"The manual was intended to be typeset; some detail is sacrificed
on terminals." (man(1), _Unix Time-Sharing System Programmer's
Manual_, Eighth Edition, Volume 1, February 1985)


But to answer your question, no.  I expect mainly to see:

On terminals:
* mainly roman, bold, and italics
* occasionally bold italics, for example in `Sh` and `Ss` where the font
weight is already heavy (bold)

On typesetters:
* as above, plus
* Courier roman in displayed examples
* Courier bold in displayed examples where input and output need to be
distinguished

I have yet to see good use cases for Courier italic or bold-italic in man
pages.  Nor will you see them in many man pages produced when AT&T and BSD
Unix were going concerns, because back then you paid for your fonts by the
typeface.  At the time of Unix System III (1980), the only constant width font
was upgright (Courier roman) and it bore the name "CW" because evidently no
one foresaw that more than one style of constant-width face would ever be
needed.  And BSD troff didn't support even that; they were stuck on Ossanna
_troff_ for the C/A/T, which supported neither a constant-width face nor even
proportional bold-italic.

(What BSD managed to milk out of a plotter via _vtroff_ may be another
matter.)

> and have all the controls that make precise layouts possible stripped out
because man doesn't have them?

I "stripped out" exactly _one_ control; see below.  I have no plans to remove
any others.

> I never should've bothered reporting this after that time I posted about
using Tn and you deleted it because you don't like it.

I _changed_ the `Tn` default to stop altering the type size because doing so
simplified other reforms I was making and because I consulted with _mandoc_(1)
maintainer Ingo Schwarze, and he said that there did not seem to be a clear
and well-established semantic meaning for it.  It may be that his preference
and/or *BSD tradition has neglected use of the macro.

But what I did *not* do was remove anyone's capacity for customizing this
arrangement.  The elaborate style-sheet-esque system that (I suppose) Cynthia
Livingston designed in to _mdoc_ remains there, just with much longer
identifiers naming them (blissfully).

The one knob I removed is the one you're complaining about (not as the topic
of this ticket, mind you, but as a change of subject).

Here is the commit message relevant to that change.


commit 5125754cdfaa7008f65d9c3f2936626b7bcf0498
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
Date:   Wed Feb 23 22:08:01 2022 +1100

    [mdoc]: Stop setting `Tn` arguments smaller.
    
    * tmac/doc.tmac (Tn):
    * tmac/mdoc/doc-syms (Ux, Bx): Stop interpolating string
      `doc-Tn-font-size` to set macro arguments at a smaller type size.
      This leaves the string without a purpose, so...
    
    * tmac/mdoc/doc-ditroff:
    * tmac/mdoc/doc-nroff: Drop definitions of `doc-Tn-font-size`.
    
    * tmac/mdoc/doc-syms: Drop interpolations of that string from numerous
      other string definitions.
    
    Fixes <https://savannah.gnu.org/bugs/?60616>.


However, if you grep, you will notice that _no other_ mdoc _macro_ permits
customization of its type size like this.


$ git grep -- -size tmac/doc.tmac tmac/mdoc/*
tmac/doc.tmac:.\" NS doc-fontmode-size-stackXXX global register
tmac/doc.tmac:.nr doc-fontmode-size-stack0 0
tmac/doc.tmac:.\" NS   doc-fontmode-size-stackXXX
tmac/doc.tmac:.    nr doc-fontmode-size-stack\n[doc-fontmode-depth] \n[.ps]
tmac/doc.tmac:.    nop
\)\s[\n[doc-fontmode-size-stack\n[doc-fontmode-depth]]u]\c
tmac/doc.tmac:.    nr doc-fontmode-size-stack\n[doc-fontmode-depth] 0
tmac/doc.tmac:.    nr doc-fontmode-size-stack\n[doc-reg-dsgv]-saved
\n[doc-fontmode-size-stack\n[doc-reg-dsgv]]
tmac/doc.tmac:.    nr doc-fontmode-size-stack\n[doc-reg-drgv]
\n[doc-fontmode-size-stack\n[doc-reg-drgv]]-saved
tmac/mdoc/doc-common:.    tm doc-fontmode-size-stack\n[doc-reg-Rd] ==
'\n[doc-fontmode-size-stack\n[doc-reg-Rd]]'


You can try this grep on an older _groff_ source tree, if you like.

So, why did I pick on poor little `Tn`?

1.  It was a challenge to manage its fiddling with the type size in a
coherent, reliable, and predictable away.  _mdoc_'s bespoke reentrant macro
system made this really hard.

2. No clear semantics, as noted above.  It was documented, via materials of
BSD origin, as being for "type names", but no one seemed to use it that way. 
An alternative expansion was for "trade names", but people didn't consistently
use it for that either. 
[https://www.investopedia.com/articles/personal-finance/120415/trade-name-vs-trademark-know-difference.asp
"A trade name refers to the company's official name, while a trademark
provides a company's brand with legal protection."]  Historically, people
seized upon the words "trade name", applied it to "trademarks" used for
_products_, like "Unix", or "nroff", or "troff", or "GECOS", of which the last
was the only appropriate application, because it was a _pronounceable
acronym_.  (1) It actually stood for something (though that fact got damaged
when General Electric sold GECOS to Honeywell, forcing a rebrand to GCOS). 
(2) Acronyms are not the same thing as initialisms.  "FBI", "CIA", and "NSA"
are initialisms; "NASA" and "DEFCON" are acronyms.  Traditionally, only
acronyms are set in small caps (at this point, the thing I suspect you
actually care about enters the discussion).  This was done to cue the reader
that you were to read the capital letters together as a word, not pronounce
the individual letters as in an initialism.

3.  This careful distinction between acronyms and initialisms was largely lost
(possibly in the crib) at some point during the Cold War (50+ years ago), when
brand managers saw the small caps used for acronyms in materials produced with
great prolificity by the U.S. Defense Department and its many contractors,
which included numerous large U.S. firms, including those in the tech sector
and the ARPAnet, the immediate predecessor of today's Internet.  Anyway, the
brand managers thought small caps "looked cool" and decided to mandate their
use for all sorts of things, including the word "Unix", expressly against the
desires of the people who actually developed Unix.  See testimonials by people
who were there and know:
https://lists.gnu.org/archive/html/groff/2015-01/msg00026.html and
https://lists.gnu.org/archive/html/groff/2015-01/msg00029.html.

4.  We have professional typographers on the _groff_ mailing list.  I take
their views seriously.  They aver that getting the small caps affect by simply
setting a standard typeface smaller is actually a _bad_ way to achieve the
desired effect.  There exist fonts that are actually _designed_ as all-caps
faces.  They still have distinct upper and lower cases, it is simply that the
glyph designs for the lowercase letters strikingly resemble uppercase.  See
[https://lists.gnu.org/archive/html/groff/2015-01/msg00013.html this 2015 post
and follow-ups to the list.]

5.  A good reason for that dovetails with another thing Ingo pointed out:
shouting capitals are bad for assistive technologies like screen readers. 
Apparently, what they tend to do upon encountering a sequence of capitals is
to spell them out by letter name.  This has included (historically) the
section titles of man pages, which is surely tedious for the users of such
devices to deal with.  That's also why _groff_ now uses mixed case for
these--but, seeing furious complaints like yours coming, I added a tunable
register to _man_(7) and _mdoc_(7) to enable the user to make them shout once
more.  Their man pages have documented this since I landed the feature. 
(Well, _groff_mdoc_(7) might have lagged a little, but I got it done for
1.23.0.)

> But I'll dig because this is just so insane to me. How are mdoc and man
related here and man relevant here _at all_?

Documents in these macro languages are what you see when you use the "man"
command at a Unix shell prompt.

> Why do you feel like you have the right to take a document someone else
wrote and alter it because you don't like how it looks?

That right and responsibility is part of parcel of developing a document
formatting software system.

> It may not feel like that's what you're doing mechanically but you are
altering a 30-year-old body of work out of personal preference.

Not solely that.  I run my ideas by the _groff_ mailing list and many of them
spend months or years gathering feedback.  The overall level thereof is pretty
low, though.  Your unbroken paragraph may constitute a perceptible percentage
of the feedback offered in the past 12 months.

> Do you feel you should be doing this and that this is a good thing to be
doing?

Yes, of course.  If you review my commit messages, I think you will find that
I am generally at pains to motivate my decisions.

> What in _god's own name_ is "history of how man page topics got rendered
over time" doing in a response to "you made a macro that rendered in a
specific consistent way for 30 years render in a completely different way"?

Understanding historical development is one element of making an informed
decision responsibly.

> If you like that way better, because this is all _your personal visual and
editorial preference_, then gate it all on \n[groff_new_mdoc] and let
_individual authors_ opt into it.

That is a sound approach for some changes--not all.

> You are not manufacturing a singular system here (you can tell because you
haven't written any new manuals or edited any existing manuals to fit the new
macro system),

This is nor merely an unfair statement but an inaccurate one.  I have done
extensive work on _man_(7) and _mdoc_(7) documents for multiple projects. 
(Much more the former than the latter, by roughly the same proportion as these
formats appear in field, I would guess.)

On balance, my suggestions are well received (often accepted as-is), and in
fact I get into far fewer arguments than I expect.  One might dare to conclude
that I generally come across as knowing what I'm doing.  (When I don't, I
strive to clearly accept blame, as--again--one can see in my commit
messages.)

> and your goal is not to make every page somehow magically look identical
(because you *didn't write those documents*; this is also obviously
impossible)

"Identical" is a vast overstatement here.  Please keep in mind that the
sequence of English words that composes a man page is the information of first
order, not typeface, indentation, or other details of formatting.

Once one considers that point, one realizes--I would hope--that "magically"
presenting man pages _in a consistent format_ is in fact a benefit to the
reader.

Occasionally someone gets angry with the man page format and decides to
radically depart from it just to make a point. 
[https://gitlab.com/procps-ng/procps/blob/7ac9a0e1f5606696dc799b773d5ec70183ca91a3/ps/ps.1
Here's my favorite example of such petulance.]

In any case, properly considered, this goal is restricted to the _groff_
corpus of man pages.  I want _those_ to be consistent with each other.  Even
that is not done yet.  But I would claim that they have much greater parity
with each other now than they did in, say, the 1.22.3 release.

The process of revising _groff_'s own man page corpus is generally what has
drawn my attention to and motivated adjustments to macro package behavior.  I
invite you to check out _groff_'s Git repository and measure such changes
compared to my revisions to man page formatting _within_ the existing macro
languages.
 
>, you are providing an _interface_ for others to write documents against,
which has been consistent for 30 years,

This is another way of saying "unmaintained", which is only a slight
overstatement.

> with occasional bug fixes and extensions, sure, but not with _a fundamental
change of what output is generated_, and how it behaves.

If you want a TRIP test, you will need to migrate to TeX.  Neither the *roff
formatter nor any of its macro packages has a specification as rigid as your
stated position suggests you desire.

What you are offering in the place of such a specification is mere _inertia_.

> I would 100% opt into a groff_new_mdoc "look" and write documents against
it.

Well, stay tuned--I may have some ideas along these lines over the next few
years.

> If you market it as The New Unified Common Free Way most authors probably
would.

I dislike marketing.  In any case, I've been working the same way Ingo has
been with _mandoc_(1)'s dialect of _mdoc_.  Small, incremental changes over
time.  To my knowledge, no software system in the world exists that can
support the demand "take this _mdoc_ input and render it as AT&T _troff_ on
4.3BSD-Reno would have."  If you want that, you'll need to run the exact
system in question (probably under simulation).

(To be honest, I'm not sure Ossanna _troff_ was ever ported to the VAX, so I'm
not sure _what_ the CSRG used to set their manuals.  Maybe they had to pay for
a Documenter's Workbench or other commercial _troff_ license like everybody
else at the time--until James Clark came along with _groff_.  Actually, come
to think of it, it was Berkeley--so I'd guess they used the System V
device-independent _troff_ on SunOS.)

> I _will not_ tolerate, defined as "getting my knickers in a twist" 🤮,
just flagrantly changing my documents because you don't like them. I don't
think you would either!

It depends.  I'm a detail-oriented person.  I'm willing to acknowledge that I
sometimes put great weight on matters that other people consider unimportant. 
Can you say the same?

> This is crazy to me because I thought if there's one API one could count on
being consistent to lay out documents with it'd be mdoc which has been used to
lay out documents for decades with a consistent look and feel and a
well-behaved and constant interface.

Every "full-service" macro package that _groff_ ships, apart from possibly
_mom_ (only 20 years old or so), is about this moribund: _man_, _ms_, _me_,
_mm_, and of course _man_.  I get the impression you are indeed an _mdoc_
partisan, so you might not have troubled yourself to read the "History"
section of the _groff_man_(7) document.  I would ask you to do so.

And I have a shock for you.  _mdoc_ has evolved over the past 30 years, too. 
As noted above, Ingo's added some things (though I can't remember which, off
the top of my head), and more tellingly there are the `Brq`, `Brc`, and `Bro`
macros, which obviously cannot possibly have been supported with distinct
meaning by AT&T _troff_.

> _Groff itself_ has for a long time defined a contract: hey Nm looks like
this. Xr looks like this. Li looks like this. Sx looks like this. Tn looks
like this. The manual is perfectly clear on what all the macros look like.

It's not a contract--it's a _description_.  But otherwise, yes.

> And you decided to completely violate this.

I do strive to document the changes I make.  In what respect do you assert
that I haven't?

> They no longer look like what they have been documented to look like for
decades. This isn't cruft (like the Pq thin spaces were), this isn't something
to correct (like the Ss indent the section name goes multi-line), this is
deliberate design.

Some people nevertheless may have relied upon such cruft or bugs to achieve
the effects they produced.  You would have no trouble telling people that they
were wrong to do so.

I'm telling you that you are mistaken to infer "we will never change this"
from any statement in _groff_ documentation.

That said, I don't change things unless I think I have a good reason.  So the
grounds on which you need to engage me when disagreeing with such a change are
the ones upon which I premised them.  A rant about how I'm some mindless force
of entropic havoc smashing its way through the _groff_ code base is unlikely
to change my mind.  As of this week, _groff_ is up to 188 regression and unit
tests.  Of those, I've written 185.  If that doesn't suggest to you the depth
of my commitment to stable and predictable behavior, then I will have to
conclude that nothing will.

> I have personally spent days if not weeks (months, actually, but most of
that time was also spent producing the text itself, and I also care about
troff renders; this will just be days-to-weeks for most people) making sure
that out of four fonts available in nroff mode the body of the text is clear
and obvious.

That is laudable.  I care about that too.  However, I would always treat
choice of typeface as a _supplement_ to semantics.  As noted above, some of
your audience (the visually impaired) may be unable to perceive their
signification (or are unassisted by their technology in doing so).  Much more
prosaically, any time we copy and paste from a man page, we lose all the
typeface information.  From a technical writing perspective, I urge you to
compose your materials to be as robust against this loss as you can manage.

> Shuffling the fonts around *100% breaks this*.

Around the time of 386BSD and Linux 1.0, man page authors--and this may have
included the original developers of _mdoc_--already took it upon themselves to
shuffle the fonts around because of a stupid limitation of VGA text mode, and
essentially flushed italics down the toilet in the favor of spraying boldface
everywhere they possibly could, because it was just so cool to have *nix
running on your PC instead of having to go to campus to play with it.  (And it
was, but in their excitement, they made some short-sighted decisions.)

https://lists.gnu.org/archive/html/groff/2023-08/msg00005.html

Anyway, I complained a while back that _mdoc_ in particular uses "too much
Courier and too much bold".  In fact, I appear to have said this more than
once.  [https://lists.gnu.org/archive/html/groff/2022-12/msg00123.html No one
bothered to argue with me about it.]

If only you'd been there, no?

> Again, if this were just a new mode? I'd opt in and write with it when it
reaches stability. If this new german psyche is rendered unto my documents by
force? I am violated.

I'm not happy to hear that you feel that way.  I suggest that a better
response is to join the _groff_ mailing list (and _bug-groff_ and
_groff-commit_ if you have the spoons) and engage these issues you disagree
with at the time they're mooted.

> Sorry, long post. If you don't care about reading my essay about
colonialism

I believe I have done you the courtesy of engaging with it.

And colonialism, meh, well, that just comes with the pale skin.  Spending all
day indoors at the computer doesn't help with that, but it does keep me out of
my neighbors' business...

> please just put the altered L&F behind .if dgroff_new_mdoc and unbreak the
last 30 years of documents. I'd define groff_new_mdoc in my new mdoc documents
:)

I will not pledge to do that, but I'm open to suggestions for preparing means
of rendering historical _mdoc_ documents in a more historically authentic way.
 Maybe something analogous to _groff_'s own "compatibility mode".  Possibly we
could have little macro packages loadable with "-m" that bundle piles of
register and string definitions constitutive of a style sheet for _mdoc_. 
This would take a bit of work to develop in the details and I would hope you'd
contribute to such an effort.

Happy New Year!

Regards,
Branden


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?65101>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/


Reply via email to