I have seen many BSD vs Linux articles written by pro-BSD individuals which contains a lot of misleading heavily bias information just to get people to switch from GNU/Linux to BSD. Unfortunately, many Linux advocates ignore them and never write articles to counter them or their own BSD vs Linux articles. So now I am writing this article to fix that and tell the truth.
Both the source code for the BSDs and GNU/Linux are available for viewing and modification. GNU/Linux goes farther with the licensing of their source code under the GPL which maintains the freedom to view, study and modify the source code and its derivatives. It also protects user and developers from DRMs or any malicious persons or companies who try to sue them over the software. The BSDs however licensed their source code under the BSD license which does not protect it’s users or developers and causes a lot of legal complications (see link: https://aboutthebsds.wordpress.com/2013/03/01/bsd-and-stallmans-four-freedoms/) as such allowing one entity who use the source code to sue another also using the source code. So therefore, GNU/Linux is more free than the BSDs.
Due to it being licensed under the GPL, GNU/Linux gets a lot of high quality code contributions back from many developers and companies using Linux. As a result, Linux has grown and improved continuously.
The BSDs on the other hand do not get much contribution back due to the BSD license not enforcing it and code that is contributed are poor quality and often broken. Most of the BSDs growth is done by BSD developers “reinventing the wheel” by writing BSD licensed code to achieve the functionally of software that is already available but under the GPL or proprietary licenses. As a result, the BSDs do not grow very much and often the code base had to shrink as developers familiar with particular sections of the code leave the projects for GNU/Linux.
The BSDs struggles to run modern applications and often requires a lot of effort to configure just to simply run a program. The majority of programs that runs on GNU/Linux without configuration requires recompilation of the kernel to run on BSD. Even then, many modern applications often cause the operating system to crash making daily usage of any BSD system nearly impossible unless using applications developed in the early 1990s. As a matter of fact, this problem is so serious that BSD developers use Mac OS X for daily usage and even when developing BSD. This leads to another problem in which BSD developers test their operating systems not by running them on actual hardware but in VMware running on their Mac OS X. The result is that the BSDs never work well on real hardware. In contrast, GNU/Linux and it’s developers never encounter such problems or commit to such practices.
Another factor that affects the BSDs is how monolithic is its kernel. Linux by contrast is very modular and kernel modules and drivers can be automatically removed once a crash is detected before it can bring down the entire computer. If a driver crashes in BSD, the computer has to be restarted. With Linux, they don’t. This goes to show that the kernels of the BSDs are also very fault intolerant.
The best example of this is the issue with removing USBs. The problem appears when USBs are removed without unmounting them first. The result is a kernel panic. The astounding aspect of this is that this problem has been exhibited by all the major BSD variants Free, Open, Net and DragonflyBSD ever since USB support was implemented in them 5 to 6 years ago and has never ever been fixed. FreeBSD mailing lists even ban people who dare mention about it. In Linux, such things never and happen and bugs as serious as this gets fixed before a release is made.
The tendency for cashing in the BSDs is not helped by the file system being used by them which is the infamously outdated, slow and unreliable UFS. Even for the 1980s, UFS and even the “new” UFS2 is very old and it is poorly designed especially when the operating system crashes. When a BSD machine crashes, it’s UFS file system becomes seriously fragmented and fsck needs to be done to fix the problem. Sometimes however the file system is so badly fragmented that the entire operating system needs to be reinstalling.
The situation becomes worse when BSD crashes while x11 is running. Once restarted, xorg hangs on startup and will continue to do so even when X is reinstalled. The only solution to fix this is to reformat the computer.
Linux on the other hand uses ext3 and lately, ext4. The ext file system has earned a reputation of being extremely fast, robust and fault tolerant. ext4 inductions, journaling reinforced with soft updates which has saved countless numbers amounts of data that would have been lost due to crashes, power outage and catastrophic hardware failure. UFS2 has also introduced journaling and soft updates copied from ext4. BSD advocates say that the journaling system they have is light weight and reliable but test have shown that it only successful saves data once every 15 crashes on average.
Numerous amounts of test by phoronix have shown that BSD is not just slower than GNU/Linux but in fact the BSD that claims to concentrate on performance, FreeBSD, is significantly slower than Solaris (which is itself one of the slowest OSes), Windows and Mac OS X. Future versions of FreeBSD will be even slower as they will be compiled with the ineffective Apple Clang compiler rather than the high performance and capable GCC.
Due to the fact that GNU/Linux is more heavily scrutinized by more people, security flaws in Linux are found and fixed quickly. Also, companies have developed security frameworks (SELinux or AppArmor) for GNU/Linux to protect it from attacks.
The BSDs in contrast are not audited as much and thier code has terribly quality (most of it thrown away by Apple and Microsoft). This is made worse by BSD developers’ design decisions and refusal to except any bug report or fix any code. This is especially the case for the BSD which claims to focus on security, OpenBSD (see link: https://aboutthebsds.wordpress.com/2013/01/25/20/). On top of that, BSD project managers willingly allow spying agencies to put backdoors it thier OSes which make BSD even more insecure. An example is in 2011 where by Theo de Raadt (Head of the OpenBSD project) made an agreement with the FBI to plant a backdoor in OpenBSD, OpenSSH and PF.
Believe it or not, Linux has beaten the so called “portable” NetBSD in it’s game (link: http://www.kroah.com/log/2004/09/29/#more_archs) so Linux is more portable then NetBSD. Not only that but Linux is actually usable on all the platforms that it has been ported to while for NetBSD, the only thing it can do on most platforms is just bootup with no ability for the user to interact with it or use it.
This is the part where Linux just leaves BSD in the dust. All Linux distributions have repositories and fast and easy to use package managers for downloading and installing packages either in source or binary form. the repositories are maintainable and heavily audited by the distribution members themselves for bugs and constantly upgraded. When creating each package, the distribution member first gets the source code, patches it for any bugs and also make them compatible with other packages, compile them, test and then package them and then place the packages in the repository. The distribution members will constantly do this to ensure that packages in the repository are usable, reliable and secure.
In BSD, there is only the slow, unreliable, prone to errors and difficult to use ports tree and pkgsrc. Them are literally a set of directories with Makefiles and patchfiles in them. Navigating throw these directories just to install an application is time consuming and wasteful. When installing an application, the Makefiles download un an unaudited version of the source code then use the patches to make the source code BSD compatible. These patchfiles are written by people outside the FreeBSD project and often never patch the source code for security holes or bugs. The patches are also never updated in time with the software which means that wrong lines of code are often patched and the source code cannot be compiled (referred to as a “broken port” among BSD users). A bigger problem with this is the security that this type of package management offers. Source code is download from foreign untrusted websites instead of an audited repository which means that it is easier to introduce holes or backdoors into the system. Very bad package management.
BSD people will claim that because there are more that a 1 million distributions of GNU/Linux, it is fragmented and disorganised. BSD people however fail to mention that all these distribution use the same GNU userland, Linux kernel and are binary compatible. What’s more is that there is significant sharing of code, ideas and design. Thus despite the huge number in GNU/Linux distributions, they all work together and development in unison with each other.
The same cannot be said for the BSDs. Despite the smaller number of BSD variants, they are all different from the kernel upwards and are binary incompatible. Worse, they do not cooperate each other like what GNU does. No code, idea or design sharing between BSDs. Worse, there is fierce in-fighting within each BSD variant and between them. Code sharing and co-operation is so minimal that former OpenBSD developer Jason Dickson mentions that when a new BSD variant is created, they have to start from the broken, old and outdated 4.4BSD code as including code from other BSDs often leads to law suits and death threats. The worst of all, is the hacking/cracking attack wars that is on going within the BSDs. Such things are far from the co-operative world of Linux.
And there you have it Linux is not just far better then BSD in general but has even beaten each of the three major BSDs in their own game. FreeBSD aims for performance but Linux has far better performance and speed then it. OpenBSD aims for security but Linux is far more security then it. NetBSD aims for portability but Linux is far more portable then it.