About FreeBSD
By Jason Lenthe | March 15, 2025

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:

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.

FreeBSD screenshot showing documentation
Screenshot
Well, thankfully, none of that is true in FreeBSD. Documentation is valued, seen as essential, and people want to contribute to it and maintain it. 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. FreeBSD also offers the much-acclaimed FreeBSD Handbook which is a more task-oriented way of learning how do things and set things up in FreeBSD the way that you want.

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.

Image showing an error message from Netflix on FreeBSD
Video streaming error from Netflix on FreeBSD
(Kudos to Netflix for providing this nice error message whereas Spotify simply does not play any music without any other indication of a problem).

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

  1. https://www.cnet.com/tech/tech-industry/ibm-to-spend-1-billion-on-linux-in-2001/

Acknowlegements

ChatGPT was used in the preparation of this article for light proofreading and stylistic suggestions.