Why I don't run Linux

Note: Before you continue reading please make sure that you have read and understood the disclaimer.

Linux is hype today. You may wonder why I don't run it but have chosen for a less widely deployed platform--FreeBSD. There are a couple of considerations:

Linux is basically a reinvent the world project. Unix-like operating systems have been in existence since the early 70s. (If you don't believe this, read Peter H. Salus' excellent »A Quarter Century of UNIX«, ISBN 0-201-54777-5.) There is no point in just repeating an exercise that has been done successfully before, except for one's own sake. Unix systems have grown mature and extremely stable over the years, and then some folks come around and yell »Hey, let's do it again!«. Come on, it's just a waste of effort.

In practice it's even worse: The Linux people are repeating errors that have been done before. Huge amounts of code are being written from scratch -- you bet how the quality of that code compares against code with the same functionality that is almost a decade older?

But again, reality is even more worse. Almost everybody in this world is using TCP/IP code based on the BSD Net/2 distribution. This includes even Microsoft who just reused the code with few adaptions. Only Linux is different; Linux went into let's do it again mode and came up with a freshly written networking software. Though this has gained quality and stability in the meantime, it still caused major headaches for people running Linux.

Another point is BSDism, and that needs a little explanation: I've been a SVR4 addict since the late 80s, just because this was the first true Unix flavor that I got exhibited to. When I switched employers I jumped into a SunOS world and discovered that lots of open software were available which just compiled cleanly and worked. This had been radically different in the SVR4 world -- it had taken me ages to get a C News system decently up and running, but then NN was a huge task. Totally different on Sun platforms--it's all compile & run. At some time later I decided to replace my private worn-out Motorola 68020 VMEbus system with a more decent platform. Refurbished Suns were still too expensive, so I thought I could reuse PCs that were not in use any more. I installed my first FreeBSD PC over ftp, it booted up and worked. Yes, that's all: it worked, hassle-free. FreeBSD's ports collection appeared again as a major step forward to help me running software from the net. Just

make install clean

and done. Do we need anything else?

What I want to say is this: I have converted from a SVR4 addict to a BSDism enthusiast during the years. I have been living intimately in both worlds, in fact down to the lowest layers. BSD's configuration and administration stuff comes just more closely to my mind's setting than anything else. Now unfortunately Linux emulates or even copies a lot of SVR4isms, to start with the run-level model (aka /etc/rc.d).

Are you a Linux user? Have you been hit by a libc incompatibility once? You have. I don't know anyone who hasn't been in a situation where he could run software A only with libc version X but software B required version Y. Boom! IMHO libc is a much too delicate part of any system to allow fiddling with. This is no fun. In my view this displays a way too liberal approach to design issues in the Linux crowd. Seems like if somebody feels like making major changes, he just does them. Here's a recent example about a similar Boom! event, reported and commented from His Master's Voice:

Subject: Re: Signal 11
Date: 14 Dec 2000 11:11:28 -0800
From: torvalds@transmeta.com (Linus Torvalds)
To: linux-kernel@vger.kernel.org

Quite frankly, anybody who uses RedHat 7.0 and their broken compiler for _anything_ is going to have trouble.

I don't know why RH decided to do their idiotic gcc-2.96 release (it certainly wasn't approved by any technical gcc people - the gcc people were upset about it too), and I find it even more surprising that they apparently KNEW that the compiler they were using was completely broken. They included another (non-broken) compiler, and called it "kgcc".

"kgcc" stands for "kernel gcc", apparently because (a) they realised that a miscompiled kernel is even worse than miscompiling some random user applications and (b) gcc-2.96 is so broken that it requires special libraries for C++ vtable chunks handling that is different, so the _working_ gcc can only be used with programs that do not need such library support. Namely the kernel.

In case it wasn't obvious yet, I consider RedHat-7.0 to be basically unusable as a development platform, and I hope RH downgrades their compiler to something that works better RSN. It apparently has problems compiling stuff like the CVS snapshots of X etc too (and obviously, anything you compile under gcc-2.96 is not likely to work anywhere else except with the broken libraries).

Need I say more? Probably one final point. Linux enthusiasts (though certainly not all, and probably not including you :-)) tend to exhibit a slightly religious attitude to their operating platform of choice. Dare to venture into a Linux newsgroup, mention that feature X is better solved on a different operating platform, and you'll have all fun dealing with the uproar. I don't care about such nonsense. I chose my operating platform to get my tasks done most efficiently, and that's all that counts. What I don't like however is when people get religious about some piece of technology, as this doesn't necessarily speak for the technology... Advocacy rules--not!

In short: »Linux is for Microsoft Haters, BSD is for Unix Lovers« (Ruben van Staveren).

For those who care: Of course FreeBSD has a decent Linux emulation which seamlessly runs almost any Linux specific software you might imagine. You could even have a penguin screensaver. :-)

If you still disagree please check this out.


automagically generated for 38.103.63.18 at 22 May 2008 22:00:16 CEST
last modified by myself at 16 Jul 2005 08:40:30 CEST
accessed 1319 times since 13 May 2005 16:37:27 CEST
validated HTML 4.01