2017-10-26
The 'standard set' of Unix programs is something that evolves over time
I've recently been writing about how OmniOS's minimal set of additional programs has made it annoying to deal with. In the process of this I've casually talked about 'the standard set' of programs that I expect a Unix system to have. In a comment on yesterday's entry, David Magda provided a comment that is a perfect lead in for something that I was going to write about anyway:
Define "standard set". :) Isn't that one of the reasons POSIX was created?
There are a number of problems with leaning on POSIX here, but the one I want to focus on today is that it's outdated. At the time POSIX was created, its set of utilities was probably a decent selection (and in some ways it was forward-looking). But that was a long time ago, and the Unix world has not stood still since then (even though it may sometimes feel that way).
There hasn't been any actual standardization or updates to standards, of course, because that is not really how the Unix world works for things like that. Instead, to copy from the IETF, it is more 'rough consensus and sufficiently popular code'. If enough Unix environments provide something and that something is popular, it evolves into a de facto standard. Pragmatically, you when something has reached this point because if you leave it out, people are surprised and annoyed. For instance, here in 2017, shipping a non-bare-bones Unix system with networking but without SSH would get you plenty of grumpy reactions, especially if you included a telnet daemon.
(A lot of people would specifically expect OpenSSH; providing another SSH implementation that wasn't usage-compatible with it would be annoying.)
One consequence of this evolution in the 'standard set' of Unix programs is that any Unix that freezes their set of programs is going to increasingly disappoint and irritate people over time. More and more people are going to show up, try to use the system, and say 'what, it's missing obvious program <X>? This is bogus; how old and outdated is this thing?' This is inconvenient for people building and maintaining Unixes, but that's life. Unix is not a static entity and never has been; Unix has always evolved.
(Your view of what should be included in this standard set is
affected both by what you do and what Unixes you do it on. As a
sysadmin, I have my own biases and they include programs like top
,
tcpdump
, and sudo
. But my set also includes less
and more
ordinary programs like rsync
and gzip
, and these are probably
on many people's lists.)
PS: Just as people expect new programs to be in this 'standard set' on your Unix, they also expect your versions of existing standard programs to evolve and keep up with the times. One obvious sign of this is that the GNU versions of tools (or close imitations of them) are probably now expected by many people.