Why FreeBSD?

It is no secret that FreeBSD is my favorite computer operating system, especially for servers. From time to time I am asked why I prefer it to, say, one of the many Linux-based distributions available. The reasons are many and varied, but I'll discuss a few of the main ones.

Consistency

FreeBSD is a complete operating system, derived from AT&T Unix (see this link). The kernel and userland utilities are developed and released together. There is a clear distinction between software that is part of the "base system" and software installed from 3rd-party packages. When you upgrade the OS from one version to another, everything in the base system is upgraded together with the kernel. If you want to know which installed packages are essential for the basic functioning of the OS, the answer is "none of them."

By contrast, Linux is a "Unix workalike" kernel developed largely independently of other software and utilities. To form a complete OS a Linux distribution must assemble software from multiple sources--the Linux kernel, a subset of the GNU userland utilities, utilities for managing certain aspects of the Linux kernel, plus software from any number of additional projects to provide functionality users expect in a modern Unix-like OS. This is a lot of effort, multiplied by many different distributions to choose from. Since there are so many moving parts, distributions and their users are generally either on the bleeding edge--always using the latest version of everything and expecting things to break along the way--or far from it--using old but tested versions of everything, fixing bugs or vulnerabilities as they are discovered, but rarely providing new features. Since it's all 3rd-party software, there is no distinction between the "base" operating system and additional packages, making it hard to know which packages are safe to remove.

Development Philosophy

FreeBSD's development tends to be conservative but steady. Disruptive new features are allowed if they provide clear benefit, but can only be applied to the -CURRENT branch of development for inclusion in the next major release. Smaller changes are first applied to -CURRENT as well, but can be merged back to one or more -STABLE branches after suitable testing. Point releases are made from -STABLE branches. (See also this page from the FreeBSD Handbook.)

Linux distributions may have similar or different development philosophies, but they are still constrained by integration issues already mentioned.

Community

Like the OS itself, the FreeBSD community is pretty clearly defined. Like the Handbook, the wiki, forum and mailing lists are all managed as part of freebsd.org. Most mailing lists are open, so committers, contributors and end-users alike can observe, contribute or ask for help. And if you ask a well-thought-out question in the appropriate forum or mailing list, odds are you will get a response. Quickly. From someone who knows exactly what they are talking about (probably because they wrote whatever part of the OS you are asking about).

The Linux community is much harder to define. There are mailing lists for kernel development; there are mailing lists for various distributions, there are mailing lists for various software projects primarily developed on and for Linux, and there are mailing lists with no affiliation whatsoever. The same goes for fora, etc. Yes, the developers and other smart and helpful people are out there, but finding them is harder and the sense of community is much less, if present at all.

Documentation

FreeBSD has high documentation standards. Just about any FreeBSD system will have a complete set of manual pages installed for the software on that system. The manual pages themselves are generally thorough and of high quality. New software is not considered ready for inclusion until it comes with a thorough manual page. In addition, the FreeBSD Handbook and online manual pages provide a useful starting point for new users.

Linux software may have manual pages, GNU Info pages, both or neither. When present, manual pages may not be complete references. It's also entirely possible (and even easy) to not have manual pages or the man(1) utility installed on a system at all. To be fair, I have noticed an upward trend in Linux documentation quality lately, but there is still a ways to go.

Code Quality

FreeBSD and Linux are both examples of open source software. Code contributed to FreeBSD is expected to follow a prescribed, consistent style, not produce spurious warnings when compiled, and generally not do things to annoy or astonish the user.

Simplicity

This one is probably just my preference, but the Linux way of doing things often doesn't make sense to me. I don't experience that nearly as often in FreeBSD.

Take, for example, network configuration. The utility to view or change the configuration of any network interface in FreeBSD is ifconfig, period. In Linux, you might need any of these utilities, depending on what you want to do: ifconfig, iwconfig, ethtool, brctl, or vconfig. I'm not confident that's a complete list. Then there's the ip utility, which does most of what ifconfig and ethtool do, plus some features of route and netstat, plus some functionality not available in other tools. At the time you realize you need them, you may or may not have any or all of these utilities installed. (What's that? You need to configure a VLAN interface before you can reach the network but you don't have vconfig installed? That's okay, just download the package--oh wait.)

Want your network to be configured for you when your computer starts up? In FreeBSD you just edit /etc/rc.conf. Not sure what to put there? There are great examples in the handbook as well as in the rc.conf(5) and ifconfig(8) manual pages, which are already on your system. In Linux--well, it depends. For Red Hat derivatives you put some things in /etc/sysconfig/network, some things in /etc/sysconfig/network-scripts/ifcfg-eth0 (assuming your interface is called eth0 (and still will be the next time you boot)), and you may or may not need another file like /etc/sysconfig/network-scripts/route-eth0. You're running Debian, you say? Forget everything I just said because it's totally different.

I may add other examples here as I think of them...

Parting Words

My intent is not to bash Linux, nor is it to minimize or belittle the work, accomplishments and results of the many people involved developing and supporting GNU/Linux distributions and related projects. I just want to draw attention to a few aspects of FreeBSD which, to me at least, are very attractive.

I may do a "Why not FreeBSD" (or "ways to improve" or similar) post in the future, I haven't decided yet.

john Wednesday 13 August 2014 - 12:21 pm | | IT, FreeBSD
Used tags: ,

No comments

Log in to post comments