About FreeBSD
FreeBSD is a good OS. While it isn't an OS that I use at work and it isn't necessarily an OS I use a lot at home these days, it is still a good OS. It is a good OS for these reasons:
- FreeBSD is a complete OS
- FreeBSD a well-documented OS
- FreeBSD is a practical OS
A Complete OS
The scope of the FreeBSD project includes a kernel, bootloader, basic utilities needed to run a computer, an online manual, standard C and C++ libraries, a system for porting and building free and open-source software to run on FreeBSD, and a software package tool. The latter is the typical means to the installation of a GUI and desktop environment such as Gnome or Xfce.
This stands in contrast to the most popular Unix-like OS around these days: Linux. Linux is just a kernel. There isn't much you could do with Linux by itself. The Linux kernel is paired with core utilities, compilers, and libraries from the GNU project and a package management system provided by the Linux distribution to form a complete OS. Online manual pages for the Linux kernel and related components are actually provided by separate project called the “Linux man-pages” project. Linux Distributions, like Debian, do a remarkable job of cobbling all these disparate components into a working and stable OS.
The end result is that FreeBSD is a better organization and design. You see greater consistency and cleanliness of design and better separation of concerns between the OS itself and the applications that run on the OS. FreeBSD has the same kind of robustness as the proprietary Unix systems of yesteryear like Solaris and AIX, except that it has modern features such as the highly advanced ZFS and is free and open source.
A Well-Documented OS
We seem to presently live in a time where documentation for software is not valued as much as it once was. The ability of software engineers to write clearly and effectively seems to be in significant decline. I don't think this is because people don't need or want to read documentation anymore, but rather that development resources have been increasing stretched thin in the pursuit of more features, more revenue, etc. Open source software simply offers what people want to contribute to it and if no one wants to contribute documentation then you don't get documentation. The code is your documentation.
A well-documented and complete open source OS is an excellent platform to learn how operating systems work in general. For example, if you go the /usr/src directory and open the README.md file you can quickly see a concise description of every top-level directory and find out where all the various, command, libraries, and kernel sources live. Navigating and reading the source code is surprisingly easy compared to Linux and GNU.
I recently needed to do a bit a research project to determine the
getaddrinfo()
function would behave in
various C libraries when a DNS server returns a REFUSED response code
for a AAAA query. I was able to find the answer by reading the source
code in a few minutes in FreeBSD. It took me almost two hours in the
GNU C library. The complicated structure and lack of readability were
just a bit too confounding for me to quickly find what I needed. And
of course such learning and research is virtually impossible on closed
source operating systems like Windows and MacOS.
You'd be hard pressed to find a command, device driver, system call, or library function that doesn't have a decent man page in FreeBSD. Its a real treat to be able to read about a component in its entirety using a single man page that is installed on you machine by default, rather than cobbling together unofficial and questionable information by googling for serverfault answers and redit threads.
A Practical OS
FreeBSD, like Linux and unlike its NetBSD and OpenBSD siblings, is not a niche operating system. It does not have one single focus area the way OpenBSD focuses on security and NetBSD focuses on broad hardware architecture support. FreeBSD has a good balance of features, performance, and security in a stable system. This makes FreeBSD a viable option for a variety of workloads including server, desktop, and embedded systems.
Being a practical OS means that it does not make choices strictly on ideology. For example, OpenBSD presently lacks any form of dynamic loadable module support in the kernel. This decision was presumably made to reduce the damage that can be done when an attacker has gained root access. The practical trade-off is that every device driver supported by the OS must be compiled into the kernel. OpenBSD's decision is a good one for maximum security by default. FreeBSD's reponse would be a more practical one. Many people can benefit kernel module loading and don't need the paranoia level security. For highly sensitive deployments, such as a major DNS server, FreeBSD offers a securelevel service that puts the system into a higher security level and prohibits further dynamic module loading among other things. And for even more sensitive deployments a custom kernel can be built without dynamic module loading support at all to avoid that attack vector completely the same way OpenBSD does. This way the default mode is secure enough for the vast majority of use cases and there is flexibility to make things stricter where warranted.
Its Not all Rainbows and Unicorns
Its a server OS, they say. This is effectively true in some ways but the statement needs clarification. FreeBSD suffers from a lack of popularity. This can be traced back to the nineties when the world was ripe for an free and open source Unix OS. The BSD code base would have been poised to full this role except that its future was clouded by a lawsuit filed by the subsidary of AT&T that owned Unix against BSDi and the University of California. The uncertainty over the future of BSD just as projects like FreeBSD and its siblings getting of thr ground helped increase attention on Linux and propel its development further. Later events such as Red Hat's enormously successful IPO in 1999 and IBM's announcement in 2000 of a billion dollar investment in Linux helped move Linux into the world spotlight. I don't think these things were based on any technical superiorities or a better code base of Linux over FreeBSD. It was more of a popularity wave. Attention leads to more attention.
The end result for FreeBSD users today is that there is just simply
not as many eyeballs on FreeBSD as there are on Linux. Most
application developers simply do not care about support for FreeBSD at
all. For example, browsers Firefox and Chromium work great on FreeBSD.
However, Widevine the content protection system used by major
streaming services such as Spotify and Netflix and owned by Google has
no direct support on FreeBSD.
You can easily find things—such as Netflix and Spotify, other applications, and new pieces of hardware—that don't work well on FreeBSD or at all. Another example is the GNOME desktop environment. GNOME works well on FreeBSD, but it isn't feature-complete. This is not due to any technical flaw in FreeBSD but rather differences in the architecture (e.g., FreeBSD does not use systemd) and the fact that there aren't enough FreeBSD developers to bridge these gaps and ensure full support.
The one area that FreeBSD has always received a great amount of attention from developers and users is in network server development and operation. Here you can find a long history of excellent support for software such as BIND, Apache, Nginx, and many others. Hence, the mantra “it's a server OS” rings true even though the OS itself is designed as a general-purpose operating system.
Conclusions
As an software architect, I wouldn't recommend FreeBSD for a deployment without a pretty good reason. Since, Linux enjoys the benefit of ultra-widespread adoption and financial support, it is the go-to OS for Unix-like deployments in most cases. But given FreeBSD's great documention and complete and practical OS nature, FreeBSD is a really fun OS for learning, day-to-day use, and even some production deployments. Its a good OS.
References
Acknowlegements
ChatGPT was used in the preparation of this article for light proofreading and stylistic suggestions.