Despite a common tendency to gloss over the differences, Linux and BSD have a number of characteristics that set them apart from one another. Jack Wallen points out several important distinctions.
How often do you hear people lumping together Linux and any of the BSDs? I've done it on occasion, and I hear it all the time. Of course, there are plenty of similarities between Linux and BSD: They are both based on UNIX. For the most part, both systems are developed by noncommercial organizations. And I must say that both the Linux and BSD variants have one common goal -- to create the most useful, reliable operating system available.
Still, there are significant differences as well. And when people overlook them, the whole BSD community shivers with anger. So I thought I would do my best to help my BSD brethren out and explain some of the ways Linux differs from BSD.
Note: This article is also available as a PDF download.
As we all know, the Linux operating system is licensed under the GPL. This license is used to help prevent the inclusion of closed source software and to ensure the availability of the source code. The GPL attempts to prevent the distribution of binary-only source.
The BSD License is much less restrictive and even allows for the distribution of binary-only source. The core difference, however, can be looked at like this: The GPL gives you the right to use the software any way you want, but you MUST ensure the source code is available to the next person who uses it (or your variation of it). The BSD license does not require that you make sure the next person who uses (or modifies your code) makes that code available.
The BSD code is not "controlled" by any one user, which many people see as a big bonus. Whereas the Linux kernel is mostly controlled by Linus Torvalds (the creator of Linux), BSD does not have a single person dictating what can and can't go into the code. Instead, BSD uses a "core team" to manage the project. This core team has more say in the direction of the project than all non-core members of the BSD community.
3: Kernel vs. operating system
The BSD project maintains the entire operating system, whereas the Linux project focuses primarily on the kernel alone. This really isn't quite as encompassing as it seems because many of the applications that are used are used on both operating systems.
There is an old saying about BSD vs. Linux: "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." That expression says a lot. What you will find is that the BSDs are much more similar to UNIX because they are, in fact, direct derivatives of traditional UNIX. Linux, on the other hand, was a newly created OS loosely based on a UNIX derivative (Minix, to be exact).
5: Base systems
This one is crucial to understanding the differences between BSD and Linux. The "base system" for Linux doesn't really exist, as Linux is a conglomeration of smaller systems that come together to make a whole. Many will say that the Linux base system is the kernel. The problem is a kernel is pretty worthless without any usable applications. BSD, on the other hand, has a base system that encompasses numerous tools -- even libc is a part of the base system. Because these pieces are all treated as a base system, they are all developed and packaged together. Many argue that this creates a more cohesive whole.
6: More from source
Because of the way BSD is developed (using the Ports system), more users tend to be installing from source rather than prepackaged binary packages. Is this an advantage or a disadvantage? That depends on the individual. If you're a fan of user-friendly simplicity, you will surely look at this and immediately turn away. This is especially true for new users. Few new users want to have to compile from source. This can make for a cumbersome distribution. But installing from source has its advantages as well (library versioning, building system specific packages, etc.).
Because of the way BSD is developed (see item #5), you can upgrade your entire base system to the most recent release by issuing a single command. Or you can download the sources to whatever build you want, unpack them, and build them as you would any application. With Linux, you can also upgrade a system by using the built-in package management system. The former updates only the base system; the latter will upgrade the entire installation. Remember, though, upgrading to the newest base system does not mean that all of your additional packages will be updated. With the Linux upgrade, all your packages will benefit from the upgrade process. Does that mean the Linux process is better? Not necessarily. I have been a first-hand witness to a Linux upgrade that went horribly wrong, requiring the entire system to be reinstalled. This is much less likely to happen with a BSD upgrade.
8: Bleeding edge
It's unlikely that you'll see a BSD running a bleeding edge version of anything. Linux, on the other hand, has plenty of distributions that offer bleeding edge packages. If you're a fan of "If it isn't broken, don't fix it," you will be a big fan of BSD. But if you're of the ilk that requires the most recent of everything, you better migrate over to Linux ASAP or you'll be behind the curve in the time it takes you to reinstall your OS.
9: Hardware support
You will find, in general, that Linux supports hardware much sooner than BSD does. This doesn't mean that BSD doesn't support as much hardware as Linux. It just means that Linux will support it before BSD (in some cases, LONG before BSD). So if you want the latest, greatest graphics, don't even think about BSD. If you're looking at a shiny new laptop with a newer wireless chipset, you might have better luck with Linux.
10: User base
I'm going to go out on a limb here and generalize about computer users. I will preface this by saying there are exceptions to EVERY rule (or generalization, in this case). But I present to you my generalization of the cross-section of user-to-distribution. From the left to the right we go from the least PC-savvy users to the most PC-savvy users. As you can see, Linux falls in the middle, where BSD leans closer to the right. Many will argue this; some will be offended by it. But this is a fairly accurate generalization of which users use which operating systems.
Mac -----> Windows -----> Linux -----> BSD -----> UNIX
This list is not, in any way, meant to suggest that one is better than the other. I have found that BSD and Linux each has its place. What about you? Do you find the differences between Linux and BSD enough to keep you using one over the other? Have you tried both? What makes you use one over the other? Sound off and let your fellow readers know your opinions.
Check out 10 Things... the newsletter
Get the key facts on a wide range of technologies, techniques, strategies, and skills with the help of the concise need-to-know lists featured in TechRepublic's 10 Things newsletter, delivered every Friday. Automatically sign up today.