Package: groff-base
Version: 1.18.1.1-7
Severity: normal

Let's begin with some quotes from grotty(1):

  By default, grotty emits SGR escape sequences (from ISO 6429, also
  called ANSI color escapes)

  ...

  For SGR support, it is necessary to use the -R option of less(1)
  to disable the interpretation of grotty's old output format.
  Consequently, all programs which use less as the pager program have
  to pass this option to it.

Instructions of the form "all programs ... have to ..." should be taken as a
warning that whatever's being documented is a disruptive misfeature, and this
is a perfect example.

In previous versions of groff (for example the last version of groff in
woody, and as far as I know every version of groff in every version of Debian
prior to sarge), this worked:

  ( echo .ft B ; echo bold ; echo .ft R ; echo not bold ) > foo
  nroff foo | less

Now it doesn't. Instead it shows ESC[1m and ESC[22m. grotty(1) documents a
splendid variety of ways to avoid this outcome: by setting an environment
variable, adding an option to the grotty command line, or sticking a
directive into the intermediate [di]troff output. There are so many ways to
disable this new behavior, you can't avoid thinking that the perpetrator must
have known he was about to cause a lot of trouble.

The burden of tracking down scripts that need to be rewritten, changing options,
and setting environment variables rightly belongs on the few who want the new
functionality, not the many who were happy with nroff as it has always been.
Enabling a new, incompatible output format by default and then boldly
declaring that "all programs ... have to" adapt to it is arrogant and rude.

The advice to use less -R is helpful to some people, I suppose, but it is
basically a layering violation. Decades of UNIX tradition have established
the basic rules to be followed when the PAGER environment variable is used.
It can be assumed that the PAGER behaves reasonably on sequences like
b^Hbo^Hol^Hld^Hd, showing it as the world "bold" in bold if possible, but it
cannot be assumed that the PAGER is less, or that the PAGER has a less-ish -R
option or that it can interpret sequences like ESC[1m. PAGER is a protocol.
One side does not get to unilaterally dictate changes in the other.

grotty is violating the Robustness Principle here: be conservative in what
you send.

Aside from that, the use of ANSI escape sequences without regard to the TERM
environment variable is an unwarranted assumption. less interprets
b^Hbo^Hol^Hld^Hd by outputting the correct escape sequences for the terminal
in use. less -R just passes through the ESC[1m, which does no good on a Wyse
terminal. All the world's not a VT100.

Apparently, some of these problems have already been noticed, because
/etc/groff/man.local contains the magic code to enable the sensible,
backward-compatible behavior. But if it was correct to make that decision for
man pages, why shouldn't it be done for all other uses of nroff too?

Please, if upstream will not reverse the default, do it in the Debian
package, for all of the reasons listed above. This ill-conceived new behavior
must not stand.

-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.4.29
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages groff-base depends on:
ii  libc6                       2.3.2.ds1-22 GNU C Library: Shared libraries an
ii  libgcc1                     1:3.4.3-13   GCC support library
ii  libstdc++5                  1:3.3.5-13   The GNU Standard C++ Library v3

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to