On Fri, May 10, 2024 at 7:23 PM Nevin Liber <nliber(a)gmail.com> wrote:
On Fri, May 10, 2024 at 11:37 AM Clem Cole
<clemc(a)ccc.com> wrote:
The key is that not all "bloat" is the
same (really)—or maybe one person's bloat is another person's preference.
A lot of "bloat" comes because our systems really aren't focused on
"discoverability".
While I probably have used "pr" in the past, I've totally forgotten, the
name "pr" doesn't really help me understand what it is for, and it's
just one of 982 files in my /usr/bin directory alone. How does one discover it?
This is a fantastic question. At one point, I went through every
command in /bin and /usr/bin and figured out what it did. That was a
tremendously useful exercise, but that was in the days when the total
number of commands in those directories numbered in the low hundreds;
982 is a lot.
`pr` is an interesting case in point. I would guess that the name
comes from Multics, where `print` (short name `pr`) is sort of the
equivalent of `cat`, but contains a lot of extra functionality to
control output, read archives, etc. But if one has never used Multics
(and let's be honest: the total number of people in the world who have
done so is a tiny, tiny fraction of the number of computer users), one
would never guess that. When I started using Unix, I thought that "pr"
was how you sent a file to the printer; "lpr" was highly
non-intuitive, but I'd never seen a line printer at that point (our
first home computer was a Mac with an imagewriter); the idea of
`cat`ing a file into the printer device wasn't something I'd ever even
considered (besides, I think the device was owned and writable only as
root).
It's like using "sed" instead of
"head": sure, if you already know "sed", you don't need
"head", but for English speaking folks who know "tail" is there, it
would be (and was in the old days) surprising and frustrating not to have
"head".
I don't know if this is an argument about bloat per se, but rather
about system design generally. Sure, `sed 10q` does more or less what
`head` does, but that's not a great argument for `head` not existing.
After all, assembler can do everything that C can, and yet given a
choice between the two, for most programs I'd prefer the latter.
If I have a command and I want it to do something
slightly different, the first place I look is to see if there is a command line option for
that. I know how to discover that (either --help or the man pages).
GUIs were better at discoverability. The menu at the top made it easy to see (and
constantly reinforced) what was possible, at least until we got into the era of contextual
menus, gestures and force presses.
They aren't perfect. I get plenty of dialog boxes which have a check box for
"Do not show this message again" which I don't dare check, because I
don't know how to bring up whatever choice it wants me to decide on should I need to
change it in the future.
And once you have users/customers, it's hard to get rid of things, because they
value stability.
Absolutely.
- Dan C.