All,
So, we've been talking low-level design for a while. I thought I
would ask a fundamental question. In days of old, we built small
single-purpose utilities and used pipes to pipeline the data and
transformations. Even back in the day, it seemed that there was
tension to add yet another option to every utility. Today, as I
was marveling at groff's abilities with regard to printing my man
pages directly to my printer in 2021, I read the groff(1) page:
example here: https://linux.die.net/man/1/groff
What struck me (the wrong way) was the second paragraph of the
description:
The groff program allows to control the whole groff system by
command line options. This is a great simplification in comparison
to the classical case (which uses pipes only).
Here is the current plethora of options:
groff [-abcegilpstzCEGNRSUVXZ] [-d cs] [-f fam] [-F dir] [-I dir]
[-L arg] [-m name] [-M dir] [-n num] [-o list] [-P arg] [-r cn]
[-T dev] [-w name] [-W name] [file ...]
Now, I appreciate groff, don't get me wrong, but my sensibilities
were offended by the idea that a kazillion options was in any way
simpler than pipelining single-purpose utilities. What say you? Is
this the perfected logical extension of the unix pioneers' work,
or have we gone horribly off the trail.
Regards,
Will