BSD Benefits – What is Good About the BSDs?

bsd

I've used Ubuntu on and off since Warty Warthog. I was thinking about installing Jaunty soon; but I noticed that over the weekend NetBSD 5.0, Dragonfly BSD 2.2.1, OpenBSD 4.5, and FreeBSD 7.2 have all been released, so I got curious:

What is good about the BSDs? Why should or shouldn't I install one of them instead of Ubuntu? What are their main selling points? Performance? Stability? Hardware compatibility? Ease-of-use? Security? Do they run well on older hardware? What is it?

Edit: This is from the point of view of a (primarily Java) desktop developer, but I'd be interested to know what are the pros and cons for others also. Are they targeted more for servers? For corporate users? Or what?

Best Answer

Advantages of BSDs

The *BSD family of systems has (IMHO) a few key advantages over Linux, particularly for a server O/S.

  • Simplicity and Control: None of the *BSD distributions have the imperative to add features that the Linux distributors exhibit. Thus, the default install of most BSD derived systems is relatively simple.

  • Stability: Partially driven by the simplicity, BSDs tend to be amongst the most stable O/S platforms around. FreeBSD (which is one of the older of the 'modern' BSDs) powers many well known .coms such as Yahoo and (at one point) hotmail. In fact, at one point Microsoft suffered quite a lot of embarassment over their inability to migrate Hotmail off FreeBSD to Windows.

  • Security: OpenBSD in particular has a very strong track record of security and much of their work rubs off on the *BSD community in general.

  • Portability: NetBSD in particular has ports to dozens of platforms and is notable for being very easy to port.

Some weaknesses

  • Less support for large SMP configurations than Linux. This will become more of an issue as boxes with large numbers of cores becore widespread. However, most of the network service applications that are really BSD's home turf are not all that CPU hungry (1).

    SMP performance on BSD kernels has improved substantially over the past decade. Improving SMP performance was one of the main goals of Dragonfly BSD and the FreeBSD SMPNg project has substantially improved SMP performance on that platform, outperforming Linux on 8-core platforms. This means that one can expect to get good performance on mainstream 2 and 4 socket servers.

    Some debate and early work on providing NUMA support on FreeBSD exists as the system does not currently support APIs for memory allocation, affinity management or other facilities for explicit NUMA support. A good primer on NUMA support can be found here.

  • Smaller range of hardware support than Linux: In practice, this really only means that you need to check components on a hardware compatibility list. For a server this is a non-issue in most cases but installing on a random desktop PC this is a bit thornier. You still have to do a component-by-component check if you want a machine to install BSD on, which is less likely to be the case with Linux.

  • Less emphasis on the desktop: Desktop distributions of Linux (such as Ubuntu) tend to have richer desktop support for multimedia, emulation and bundled applications. While many such applications do have ports onto the various BSD platforms the out-of-the-box support from a desktop Linux distribution will typically be rather better.

  • Some gaps in software: Quite a lot of commercial Linux software does not have a BSD port. For example, none of the major JVM suppliers maintain a native port of their java runtime for any of the BSD platforms. In some cases third parties maintain ports but there is no official support for (for example) Oracle on any of the BSDs. This type of gap pops up in some places on BSD; BSD may not be the platform for you if you work in a space where this type of gap exists.

Some salient points

  • One of the great religious wars of the '90s was GPL vs. BSD. BSDs are licensed under the BSD licence, which comes with a different set of rights than the GPL. Essentially the BSD licence does not require you to redistribute source code of modified versions of BSD licensed software.

  • Commercial vendors such as Oracle do not support BSD to anything like the degree that they support Linux. Therefore, if you want to work with such a product you are probably better off with Linux. However, most offer binary compatibility across Linux, System V, Solaris etc, so you can often run binaries for another O/S.

  • BSD communities tend to be run differently to Linux and are often smaller (although no more genteel in many cases - Theo De Raadt has something of a reputation as a potty-mouth).

  • Some of the BSD variants are niche-market items, optimised for specific goals. For example, OpenBSD is specifically optimised for providing secure network infrastructure on internet-facing computers, with a very large amount of effort going into inspection for security holes like buffer overrun vulnerabilities. Many security conscious organisations use it for precisely this reason. NetBSD is designed for portability with ports to dozens of platforms and is quite widely used in embedded systems. For applications in the sweet spot of one of these systems it may well be the best choice of platform.

The home turf of *BSD is in network services - email and web servers, infrastructure and suchlike. You can set up a perfectly good geek desktop with any of the BSDs, and could in theory produce something as warm and fluffy as Ubuntu. However, this is not the core focus of most of the BSD products, although some such as PC-BSD do aim to provide desktop systems.

If you want to make a trad unix geek desktop BSD will do this just as well as any other unix-oid system.

  1. For example, back in the VAX/4.2BSD era of the 1980s a machine like a VAX-11/750 could provide email servce to an entire department or university campus, and would probably be doing other work as well (although one should note that most emails were text only and attachments weren't so prevalent as today - disk drives used on this machine typically ranged from 120-450MB capacity). A modern server has 3-4 orders of magnitude more CPU power and memory and a disk subsystem with maybe 2 orders of magnitude more throughput and 3-4 orders of magnitude more space.
Related Topic