FreeBSD and Linux
|
FreeBSD and Linux are two open-source operating systems.
Both have dedicated communities that often leads to overzealous advocacy in either direction. There are many similarities that are often forgotten when contrasting the two, but those will be discussed after the differences. This article is an attempt to clarify the specific differences between only FreeBSD and Linux.
See operating system advocacy for a general discussion of the issue.
Contents |
Differences
Licensing
FreeBSD
Almost all code in FreeBSD is under the BSD license (one notable exception being the compiler, gcc). The BSD license puts very few restrictions on what can be done with code placed under it. Essentially, the only restrictions are that the user must attribute the previous contributors (i.e. the user can't claim it was all his work), the user cannot claim that the previous contributors endorse the user's product, and the user cannot hold the contributors liable for any mistakes in the code. After meeting those restrictions, essentially anything else can be done with the code, including distributing closed-source modified versions.
Linux
The Linux kernel and much of the utilities commonly distributed with it are under the GNU General Public License (GPL). The GPL allows free use of the software licensed under it under essentially the same restrictions as the BSDL with the additional requirement that if modified code is distributed, then the changes must be made available in source code for all to use.
For discussion of the advocacy of one license over the other, see BSD and GPL licensing.
Organization
Generally, Linux is less centralized than FreeBSD.
Linux by itself is only a kernel. To function as an operating system, other utilities (file and system utilities, shells, etc. see the GNU project) are required. These other utilities are gathered from various sources and collected together with the kernel by various groups in distributions. Kernel and system utilities are developed independently and merged together to form an operating system. This means that the kernel has one version, and all the other utilities in the operating system have others.
FreeBSD is more centralized. The kernel and basic system utilities are developed, versioned, and distributed together. Other programs, such as X and web browsers, can be brought in from elsewhere, but the basic system comes from one source and is designed specifically for the FreeBSD operating system. Being versioned together in the same CVS tree is an advantage. Changes must consider all affected parts, not just the particular part being changed. This leads to a more cohesive, polished system. In fact, the concept of a kernel version different from the rest of the system does not really exist in FreeBSD.
Moreover, Linux is fragmented. There are quite a number of concurrent distributions that all create their own patchwork of versions of all related components. While this to a certain extent also applies to FreeBSD (DragonFly BSD, multiple major versions in parallel use), the amount of combinations of library versions and packaging decisions that one will encounter is much lower.
It is hard to say whether centralized or distributed is better, and both models have their advocates. One has to keep in mind, however, that the FreeBSD and Linux projects are not equal in size (as in contributors). A model that works for one doesn't necessarily work for the other. The same applies to FreeBSD vs the other BSDs, where FreeBSD is significantly larger.
Similarities
Because the FreeBSD vs Linux argument is so common, it may be easy to forget all the similarities.
The two systems share much of the same functionality. They are often able to run programs coded for the other system. When a complete desktop environment, such as GNOME or KDE is running, the two systems are often difficult to tell apart. FreeBSD can also run Linux programs due to a very lightweight Linux subsystem, which is capable of running even commercial Linux software.