“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.

Please.