Signs of Triviality

Opinions, mostly my own, on the importance of being and other things.
[homepage] [index] [] [@jschauma] [RSS]

Unix? What Unix? This is Linux!

What, me worry?It seems that we have come to a point where "Unix" has become synonymous with "Linux", and we're losing a significant in-depth understanding of how the Unix-family of operating system works. Our servers are being dumbed down...

When I was a student, I had access to a mix of NeXT, Solaris, IRIX and, later, NetBSD machines. The NeXT and Solaris installations disappeared with time, and even though a number of servers continued to run IRIX, all Unix resources available to students were running NetBSD. But slowly small pockets of Linux installations popped up, and nowadays the school only provides access to Linux.

I observed similar tendencies in other academic institutions, where almost all Unix versions were quickly pushed out by Linux. More so, the same pattern can be seen in the industry as well. Sure, there are sizeable installations of various different Unix flavors, but over time most of these seem to converge on Linux. Non-Linux Unix systems are almost entirely restricted to special-purpose niches.

Consider W3Tech's "Usage statistics and market share of Unix for websites":

w3tech's Usage statistics and market share of Unix for websites

The "Unknown" category is likely to be a hodgepodge of various commercial Unix versions as well as all sorts of products such as load-balancers, http accelerators, proxy servers etc. -- frequently and increasingly also linux-based. The market share that Linux has in the server market is overwhelming. A report from 2009 illustrates this as well:

Distributions using Apache, 2009

When was the last time you saw a job posting that referred to a Unix version that was not Linux? If you've interviewed in the last couple of months, when was the last time somebody asked you questions that related specifically to a non-Linux? Even standard troubleshooting questions quickly lead to Linux-specific solutions; strace(1) instead of ktrace(1); references to procfs (much more common on Linux, it seems to me, though available on other systems) are abound; SELinux instead of BSD secure levels; all sorts of (pseudo-)virtualization technologies like OpenVZ or LXC in favor of jail(8)s; ... the list goes on.

Monocultures are bad, mmkay?Now choosing Linux may at times very well be the right solution, but I'm afraid the current trend is leading to a new monoculture. The ubiquitousness of Linux brings with it the standardization of many of its tools, or rather: their variation of a given tool. GNU extensions to the regular Unix tools are now frequently assumed; software vendors' shell scripts are invariable written with bash(1)isms like [[ expression ]] or == operators and of course they routinely break if run on non-Linux platforms -- without explicit checks for such features!

I notice this particularly in my classes, where students are continuously equating "Unix" with "Linux". This has gotten to the point where they are dumbfounded when finding themselves presented with a shell that is not bash(1).

"The system had a broken shell; the up-arrow did not work."
   -- a student upon logging in using csh(1)

Troubleshooting of any errors is frequently limited to "googling" the error code. Which... inevitably leads to a Linux forum where somebody with equal or less clue attempts to guess what might work, frequently without any relation to the problem at hand. (``Reinstall glibc and recompile the kernel - that worked for me.'' is common advice for any error ranging from a syntax error in the input sources to problems resulting from attempting to link 32bit and 64bit libraries.)

I'm in favor of teaching a woman to fish. The industry is making it more and more difficult for me to expose students to different platforms: the school only offers Linux; using Amazon's EC2, I regularly try to get students access to other platforms, but recently Oracle yanked all Solaris AMIs, so now I can only expose students to Linux, FreeBSD and NetBSD. Having had access to Solaris or IRIX was always a wonderful way to illustrate to students the limitations of their assumptions.

This presents me with a conundrum: on the one hand, I feel rather strongly that students need to be exposed to different Unix flavors, to understand how to handle differences across multiple platforms. On the other hand, I also at times feel that, given the very limited time I have to teach students something useful, I should provide opportunities for them to learn on and exercise tools they are likely to use later on. In some way, this reflects the old dichotomy of academic versus business interests. I tend to favor the first, but am aware of the second. Teaching to fish and all that...

March 4, 2012

[Unpatch (!= patch -R)] [index] [Down with the fancy pants with^Wat Velocity]