BSD, Linux and Running Water


Saturday morning is not usually a day when I glance at the online news over breakfast. Only too often, it's a day when I glance at an actual paper newspaper over lunch, which despite being "breakfast" in my personal timescale is usually around two o'clock or so.

But today I have an alumni get-together over here, so I got up early and had some time to spare a look at the chaos that is Slashdot (which, as geeks get older and realise the relative importance of things, tends to be more UFOlogy than actual news, but which remains entertaining nonetheless).

So I came across a piece referring to the newest of Matt Fuller's Rants: BSD for Linux Users, which was hard not to miss - such items are always a cause for much posturing, trolling and name-calling, and this one was the most commented item on the home page...

Matt (in what every Linux zealot will consider a somewhat pretentious tone) outlines in fairly broad strokes the differences between "grown", cohesive BSD and chaotic, modular Linux, and I tend to agree with most of what he says - in the sense that Linux can be a right pain to maintain and often feels like a hodgepodge of bleeding-edge and badly portable code. He does skip over RedHat (which is now a lot more cohesive and polished than most Linux distros), but makes a few fine points that are likely to be missed by the overenthusiastic Linux fanboy crowd, namely:

  • BSD's philosophy of ensuring all packages work properly together is far more deep-reaching than any Linux distro you care to name (with occasional exceptions inside RedHat and Debian, although they emphasise consistency in different fields).
  • It is far easier to fully upgrade a BSD box than a Linux one, in the sense that things that worked before keep working. Linux upgrades (and I mean between top-level distro versions) are an unsightly mess, and it's easier to just reinstall the whole thing.
  • BSD is not about the bleeding edge. It's about stability, uniformity and consistency, with itself and other UNIXes. As Matt himself quotes, BSD is what you get when a bunch of Unix hackers sit down to try to port a UNIX system to the PC. Linux is what you get when a bunch of PC hackers sit down and try to write a UNIX system for the PC.

But, all in all, I think the best way to explain the main difference between the two camps can be found over at the Slashdot discussion, as this guy's comment to the "running water" metaphor.

The difference that I generally see between that and FreeBSD is that many FreeBSD users just want everything to work as expected - like running water. No one expects anything fancy to happen with their running water. What they do expect is that they can go to the faucet at any time, day or night, turn it on, and get water. To continue the analogy, the mainstream Linux folks seem to enjoy disassembling all the pipes every so often so they can be re-run. They can get all sorts of different flavors and colors of water, but occassionally a couple pipes come loose and need to be hammered back into place. That's not to say that either line of thought is better or worse, merely that the lines of thinking tend to be different.

I couldn't have put it in a better way - my favorite kind of running water is called Aqua, of course, and it does come at a premium (bottled in nice white plastic rather than off the tap) but that's beside the point right now - I'm not that picky about water (or UNIX) anyway.

Now, where is my Coke... er... Windows laptop?