Chad Perrin: SOB

31 December 2009

The Great Fallacy of BSD Unix vs. Linux

Filed under: Geek — apotheon @ 11:01

“Linux is just a kernel.” It’s a commonly heard refrain amongst the arguments put forward by BSD Unix aficionados, and it is a true statement, but it is all too often abused to try to make a fallacious point.

FreeBSD, NetBSD, and OpenBSD are complete core operating system projects. Each of these projects has integral to it the concept of a “base system”, which consists of the kernel, basic userland, et cetera. The Linux project itself is only the kernel, by contrast; to make a complete operating system, you need to add a bunch of stuff from outside the Linux project. Many people and organizations have done so, resulting in a plethora of what are known as “Linux distributions”. These distributions, or “distros”, of Linux vary significantly from one case to the next.

A typical BSD-oriented list of differences between a BSD Unix OS and Linux will point out that “Linux is just a kernel,” with a wide variety of distributions being built on top of it, then go on to explain how (to quote the FreeBSD and Linux post at RootBSD):

While this gives you a lot of choices, the existence of so many distributions also makes it difficult to use different distros since they are all a little bit different. Distributions don’t just differ in ease-of install and available programs; they also differ in directory layout, configuration practices, default software bundles, and most importantly the tools and procedures for software updates and patches.

This represents something of a double-standard. Each Linux distribution is its own separate OS, just as each BSD Unix system is its own OS. The difference between “Linux” and a given BSD Unix OS is that the various Linux-based operating systems share a kernel, rather than that the Linux kernel’s OS context varies from case to case. If you want to make a point about how skills particular to one Linux distribution do not necessarily transfer to another Linux distribution, and compare it to the BSD Unix tradition, you should also explain how skills particular to one BSD Unix system do not necessarily transfer to another BSD Unix system.

Viewed in this light, one might actually come to the conclusion that the Linux distributions’ way of doing things is superior, because having the same kernel suggests that they actually homogenize the admin/user and developer experience slightly more than the BSD Unix systems might. There are very real benefits to the “base system” approach taken by the major BSD Unix options, but this is not in fact one of them, and I believe that dragging this canard out every time someone tries to point out the benefits of some BSD Unix OS over “Linux” — treating Linux like a singular OS that can’t be trusted across distributions to be the same, while stating that Linux isn’t really an OS as support for this supposed problem — actually hurts the cause of raising awareness of, and interest in, the BSD Unix OSes. While this kind of thing might make one feel warm and fuzzy to say, as all cases of preaching to the converted do, its effect on “outsiders” (the supposed audience of BSD Unix vs. Linux writings) will likely be to make them less interested in BSD Unix alternatives to their Linux-based systems.

I had such a negative reaction to such claims back when I was still using Linux-based systems for almost everything, and had never done more than the most superficial things with FreeBSD. When someone makes a hypocritical claim like that, it drives those who are not already convinced to think poorly of the following arguments. This is one reason arguments should strive as much as possible to be fair and honest; when they are not, and people discover this fact, any additional arguments from the same source tend to be more quickly (and perhaps unfairly) dismissed. Luckily, in my case, the audience was someone who is willing to look past a flaw in one argument to see whether there is value in other, associated arguments. I saw such value, and that (combined with licensing) eventually compelled me to give FreeBSD a shot for everyday use when Debian finally pissed me off enough to pull up stakes and move on. Most people are not so reasonable, however.

In short, if we want to talk about the differences between Linux distributions when trying to advertise for FreeBSD or any other BSD Unix system, we really need to compare apples to apples — FreeBSD vs. Debian or Fedora, and the whole collection of BSD Unix OSes vs. the whole collection of Linux distribution OSes. Otherwise, we run the risk of presenting an argument that will have the opposite of the intended effect on the audience, thanks to its fallacious presentation. There’s little point in using this as an argument for, e.g., FreeBSD vs. “Linux” when one could make the same argument (a single, consistent OS vs. a number of “confusing” differences) for Debian vs. “BSD”.

If you are intent on talking some Linux distribution’s user into giving your BSD Unix system of choice a fair shake, I implore you: don’t use this bad argument. If you must talk about the fact “Linux is just a kernel,” talk about closer integration between the kernel and the other components of the base system than you might encounter in a Linux distribution, or major version updates for kernel and userland utilities happening at the same time, or really anything that might provide a real, beneficial difference between the BSD Unix family of OSes and the Linux distribution family of OSes.



  1. I love *BSD, but one sad fact is that Zend has stopped supporting FreeBSD and even stopped releasing new versions of Zend Optimizer. This will make it even more difficult to use in production environments. It’s absolutely absurd

    Comment by Brian — 31 December 2009 @ 04:21

  2. […] The Great Fallacy of BSD Unix vs. Linux “Linux is just a kernel.” It’s a commonly heard refrain amongst the arguments put forward by BSD Unix aficionados, and it is a true statement, but it is all too often abused to try to make a fallacious point. […]

    Pingback by Links 1/1/2010: Many New GNU/Linux Releases, Ubuntu Tweak 0.5 | Boycott Novell — 31 December 2009 @ 08:08

  3. This is a good write-up. Thanks.

    Comment by Enzyme — 1 January 2010 @ 04:29

  4. I’m a long time Linux user and love the OS — especially Fedora, Gentoo, and Arch. However, I really appreciate the 3 major BSDs. Each have their own little niche. I find the development style and communities are excellent too.

    If I had to choose a daily driver, FreeBSD is similar in scope and philosophy to most Linux distros (desktop oriented, x86 focused, good selection of Xorg packages, plenty of modern drivers).

    I think BSD was far more stable and mature for a long time. It’s interesting how Linux rose to power. These days, the average user probably wants to stick to Linux because it is the most popular and receives new development first (wireless and graphics drivers).

    Comment by Kevin Bowling — 1 January 2010 @ 12:41

  5. I’m getting ready (hopefully the end of next week) to install FreeBSD on my tower. Eventually I want to have three active computers. My daily use computer (FreeBSD), gaming computer (MSWindoze), and fiddle computer (some flavor of Linux, probably starting out with Gentoo).

    Comment by Joseph A Nagy Jr — 2 January 2010 @ 05:49

  6. Social comments and analytics for this post…

    This post was mentioned on Reddit by juped: Maybe some BSD advocates don’t explain it fairly, but the fact that Linux distributions are aggregations of other people’s software and the BSDs are operating systems each developed by a single team is pret…

    Trackback by uberVU - social comments — 18 January 2010 @ 06:18

  7. What was it about Debian that caused you to switch? What do you like about FreeBSD that makes it a better fit for you?

    I have tried FreeBSD before — and will probably do so again some time. But I found that it is way over my head technically as I am not an IT person by profession or training. I have a lot to learn to become proficient with it.

    Comment by JDM — 21 January 2010 @ 06:43

  8. JDM:

    While I cannot speak for Chad, what caused me to leave Debian can be summed up in one reason.

    Package management. It was horrible. New packages were released once every 6 or more months, regardless of issues of security or bug fixes. Dependency resolution was absolutely crude. Even with the right servers for the package manager, it could not resolve a good number of dependencies when trying to do a major install (such as upgrading KDE to 3.2 (I forget what version I was trying to upgrade from, but it wasn’t a big version jump)). Even switching from the stable to unstable or testing didn’t resolve the issue of out-of-date packages.

    Installation was a nightmare in it’s own right. From RH 6.2 (when I started using Linux) to 8 and with Gentoo I had absolutely no problems with installation. I left RH because of bloat and dependency resolution (and because of relatively quick EOL). I stopped using Gentoo for some reason I really cannot recall (it was probably a bad reason anyway). From everything I’m hearing about FreeBSD I shouldn’t have any issues (once I get it installed, I’m having what I’m assuming is hardware issues). I’m already used to a ports-based package manager (Gentoo’s emerge completely rocks my socks). By default it’s set to be /secure/. Since I won’t be doing anything except local web design, email, browsing and word processing (and lots of mucking around with the internals, just because I really cannot leave well enough alone) I really don’t expect much problems.

    I’m sure Chad has some great reasons (probably better and better articulated than my own). I’m actually quite eager to hear them (again). (:

    Comment by Joseph A Nagy Jr — 22 January 2010 @ 03:33

  9. Joseph and I have had discussions about the relative benefits and detriments of using Debian before, and I think it basically boiled down to us having completely different experiences. His, in fact, appear to have been worse than mine by an order of magnitude. I saw (and still see, since I kinda follow such stuff, writing about security professionally these days) security patches deployed through APT when they’re needed, rather than the six-month lag that Joseph saw. Dependency resolution was always much more advanced than the common binary package manager alternatives (especially YUM, URPMI, YAST, and of course bare RPM), in my opinion. My experience with, and knowledge of, emerge isn’t sufficient to really comment on its dependency management, and the same applies to Slackware’s pkgtool. I haven’t ever had any problems with dependency management in either case, though, in the relatively rare times I’ve had to use them (and the same goes for DEB/APT).

    I’ve had a couple of issues with getting the Debian installer to recognize hardware, but nothing outside the realm of reasonability (such as the installer not recognizing a hardware interface for an optical drive that had only hit the market a month or so before). The same issues can crop up with any OS.

    My technical issues, described in more detail at a previous SOB posting titled the decay of the Debian distribution, included:

    • occasional GnuPG errors for package fetching — terribly annoying to resolve
    • occasional software configuration breakage after an update
    • installation and update errors for certain packages that would crop up occasionally
    • package compatibility issues that could appear after an update

    Most of the time, I never saw any of those problems arise. When they did, though, they tended to come in groups, and I got sick of it. Judging by the SigO‘s experience in recent years, that stuff has died down a bit, but it’s too late; I’ve already moved on to something else that I like much more — FreeBSD. I find FreeBSD not only more stable, more secure by default, and better managed, but also less “surprising” in terms of how admin skills translate from one subsystem to the next. It suffers less bloat in many ways, too, which is one of the things I liked about Debian in the first place, compared with other distributions. I also appreciate the licensing policies of FreeBSD more — it allows me to easily install stuff with more restrictive licenses than Debian would allow, but at the same time its core licensing is less restrictive (with a copyfree license as its preferred license, rather than a copyleft license).

    I briefly mentioned Slackware and Gentoo, so I figure I may as well touch on some of my reasoning for not using them.

    First of all, there are the generic-to-Linux-systems reasons — licensing; more surprising administration stuff; less complete system integration; more reliance on GNU tools and their quirky, nonstandard behavior; and so on.

    While Gentoo’s emerge seems like a decent toolset, my experiences with actually using it were less than stellar. Gentoo’s attempt to stay more current than stability-oriented distributions like Debian seems to doom it to intermittent software breakage issues on updates. One of the reasons I’m glad I escaped from the land of MS Windows years ago is the fact I don’t have to jump through so many hoops of using staging servers to ensure continued operation of the system on updates — and Gentoo threw that out the window for me. The toolset may be great, but the policies for package maintenance appear to be gruesomely substandard from my own personal experience. Also, while the documentation is pretty decent for a Linux distribution, it’s no better than Debian’s (worse in many respects), and more necessary thanks to an expected system administration workflow that strikes me as sometimes perversely tedious and complex.

    Slackware’s software management system seems less plagued with issues than Gentoo’s, and it is much more tolerant of inserting software from outside the official software management system than both Debian’s APT and Gentoo’s emerge. On the other hand, basic Slackware administration stuff that is particular to the distro seems to be incredibly primitive by comparison, as if automation of common tasks is almost anathema to the philosophy of Slackware. By contrast, FreeBSD allows one to jump into software management and system aministration anywhere along a spectrum between even closer to the bare metal than Slackware and even closer to MS Windows levels of abstraction than, say, MacOS X. Debian provides the same low-level tool kind of access to stuff as you can get from Slackware, if you really want it, but the default is much slicker and easier to use for common tasks.

    Then, of course, there’s the fact that, contrary to common erroneous belief, FreeBSD does not lack for available software in its standard software management system. Sure, it gets somewhat less support from proprietary software vendors than even Linux-based systems do (and, frankly, if you want proprietary vendor support you should be using RHEL anyway), but in terms of the way most of us open source software users actually use the systems, FreeBSD has ungodly craploads of software in its ports system (the archives for its software management system). In fact, it easily outstrips the extensiveness of software archives for any Linux distribution available except Debian. Slackware and Gentoo just can’t compete with that.

    Much of the above is a matter of opinion. Some of it is very much a matter of provable fact (such as the extensiveness of software archives for the software management system). Hopefully that answers the question about why I dropped Debian in favor of FreeBSD, at any rate.

    Comment by apotheon — 23 January 2010 @ 12:41

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

All original content Copyright Chad Perrin: Distributed under the terms of the Open Works License