I like seeing posts like If you want the features of Solaris, then just use Solaris! cropping up. Not because I think everyone should use Solaris (which I do, but that is beside the point) but because it shows that some people still think about choice of OS rationally. There is a lot of bias among open source operating systems users – most of it completely blind. I won’t pretend to be innocent of this – I was very involved with Brown’s LUG in the past, and was for a time one of the Linux zealots (mostly desktop users) you will occasionally encounter, who treat anyone who favors any other OS with great disdain, and even resentment. Fortunately I mellowed out.
Why should you pick an OS? You should pick the one which best suits your needs. And you should always be open to the possibility that a different OS may serve your needs better than your current one. The main criteria for deciding this tend to be ease of general desktop use, support for common software uses (e.g. Firefox, Thunderbird, office suites), and hardware support.
But in the world of open source UNIX-like operating systems, after configuration, for most desktop users it doesn’t matter. You can use any CLI shell, and you can use any windowing environment. And most open source software will compile on (and is generally available in a package form for) any UNIX-like OS. Most desktop users only go through one main round of software installs, so as great as tools like apt-get are, most people won’t get that much use out of them. For a few the licensing and copyleft ideaology are really key. But for most desktop users, the deciding factor is ease of initial configuration – this is something that more polished Linux distributions* like Debian, Ubuntu, and Red Hat do well, and they certainly deserve credit for it (yes, I said Debian is polished – mostly because of apt-get). Do you really want to be a (possibly unjustified) elitist snob over some nice configuration utilities?
Developers and power users make use of a much wider range of software – compilers, code editors and IDEs, debuggers, more sysadmin-ish command line utilities for resource management and so on and so forth. These are the areas where differences start to emerge. Any of the BSDs, any Linux distribution, Solaris, and with Cygwin even Windows, can run vim/emacs, Eclipse, gcc, gdb and so forth. Want to track down a kernel bug easily, either on a live kernel or on a real, complete crash dump? Solaris is the clear winner: kmdb. Want to track down performance problems easily using a kernel tracing framework that goes through every part of the system and has no performance hit when it’s disabled? DTrace is only available on Solaris, and hopefully soon (eventually?) will be stable on FreeBSD. Need top-of-the-line security? You’re looking at Solaris and OpenBSD. Need fine-grained resource control? Solaris. A copy-on-write shadow-paging filesystem with cheap snapshots and a variation on RAID which can withstand two disk failures in a single disk array? You’re either looking at ZFS on Solaris and FreeBSD, or forking many thousands of dollars over to NetApp (there are other similar filesystems in development, but they’re not very far along). In-kernel support for some variety of native (same-OS) virtualization? FreeBSD, Solaris, and Linux all have their own versions, with their own ups and downs.
Notice any patterns in those lists? Like the fact that FreeBSD has adopted many of the innovations Solaris created and provides as open source? Or the fact that Linux has not? Why is that? Partly it’s licensing – the CDDL and GPL are not compatible, so code written under the two licenses cannot be linked and redistributed. Part of it is the fact that many of the notable Linux kernel developers carry this bias I described earlier. Some of you probably noted the fact that I did not mention SystemTap when I mentioned DTrace earlier. Look at the comment battle on lwn.net or Adam Leventhal’s comments on SystemTap at OSCON and comments responding to his proposal for a DTrace Linux port. You’ll see why.
Don’t get me wrong – I love Linux. I use it almost every day at school. I used it exclusively for a number of years, with great pleasure. But now that I’ve seen what else is out there, I sometimes wonder if it’s lack of innovation that’s holding Linux up, or the attitudes of its leaders and much of its community, of elitism and NIH (not-invented-here) syndrome. There are so many smart people involved, I strongly suspect the latter.
* For the BSDs: I haven’t played with PC-BSD, though I’ve heard good things. I’ve had bad experiences installing FreeBSD. Installing OpenBSD was a breeze, but getting *any* software installed on it was a royal pain in the ass. At some point I want to get around to playing with DragonflyBSD and it’s new vkernel take on virtualization.