Section Navigation

FreeBSD Advocacy Project

Why Choose FreeBSD?

Why would you consider using FreeBSD? We think that there are
lots of reasons. Here is a selection of reasons that some of
our existing users gave for their choice of operating system.

The Community

FreeBSD is a community-driven operating system despite it being
sponsored corporately. FreeBSD has active mailing lists,
forums, and IRC channels where experienced users and
developers are always willing to help the less
experienced.

The community is largely driven by technology, not ideology,
and is focused on building the best possible system and making
FreeBSD as widely used as possible, not on pushing any other
agendas.

There is no dictator—benevolent or
otherwise—for the project. The Core Team is elected and
is nominally responsible for overseeing the goals of the project,
but this is a very light touch. Core mediates disputes between
developers, but rarely needs to take an active role in
development, beyond their separate contributions as individual
developers.

Stability

Stability means many different things. FreeBSD very rarely
crashes (and when it does it is usually due to hardware
faults), but while that was a great boast a decade ago, now it
is an expected feature for any operating system.

Stability in FreeBSD means much more than that. It means that
upgrading the system doesn't require upgrading the user.
Configuration interfaces do change over time, but only when
there is a good reason. If you learned how to use FreeBSD in
2000, most of your knowledge would still be relevant.

Backwards compatibility is very important to the FreeBSD team,
and any release in a major release series is expected to
be able to run any code—including kernel
modules—that ran on an earlier version. The entire base
system is developed together, including the kernel, the core
utilities, and the configuration system, so upgrades are
usually painless. Included tools like mergemaster help update
configuration files with little or no manual intervention.

Early Adoption and Collaboration With Other Projects

FreeBSD has been one of the first adopters of the LLVM
infrastructure, including the clang compiler and the libc++
stack. The entire FreeBSD 9.x system, including kernel and
userspace, can build with clang, and from FreeBSD 9.1 both clang
and the permissively-licensed libc++ are included, giving a
modern, BSD-licensed C++ stack. Several FreeBSD developers are
also active contributors to LLVM, ensuring that both projects
thrive together.

This same collaboration works downstream, with projects like
PC-BSD and pfSense building on top of the FreeBSD base to provide
desktop and firewall oriented distributions, respectively.
These projects are not forks, they base their work on the
latest version of FreeBSD and customize the system for specific
uses.

Simple Configuration

FreeBSD service initialization is very simple. Each service,
whether part of the base system or installed from a port, comes
with a script that is responsible for starting and stopping it
(and often some other options). The /etc/rc.conf file
contains a list of variables for enabling and configuring
services. Want to enable ssh? Just add sshd_enable="YES" to
your rc.conf file. This system makes it easy to see at a
glance everything that will be started when your system
boots.

The rc system that reads this file understands dependencies
between services and so can automatically launch them in
parallel, or wait until one is finished before starting the
things that it needs. You get all of the benefits of a modern
configuration system, without a complex interface.

Ports

The ports tree contains a large collection of third-party
software, including older versions of some things where the
userbase is divided about the benefits of upgrading, and a lot
of niche programs. The chances are that anything you want to
run which works on FreeBSD will be there.

Unlike some other systems, FreeBSD maintains a clean division
between the base system and third-party ports and packages.
All third-party software goes in /usr/local, so if you want to
repurpose a machine then it's trivial to simply delete all
installed packages and then start installing the ones that you
want.

The upcoming pkgng tool makes working with binary packages
even easier, although source installs are still supported for
people who want the level of configurability that this
implies.

Security

Security is vital in any network-connected machine. FreeBSD
provides a number of tools for ensuring that you can maintain a
secure system, such as:

Jails, allowing you to run applications or entire systems
in a sandbox that can't access the rest of the system. With
tools like ezjail and ZFS you can instantly create a new
jail with a clone of an existing system, using a tiny amount
of disk space, and run untrusted code inside it.

Mandatory Access Control, from the TrustedBSD project,
allowing you to configure access control policies for all
operating system resources.

The VuXML system for publishing vulnerabilities in ports,
which integrates with tools such as portaudit, so that your
daily security email tells you about any known
vulnerabilities in ported software.

Security event auditing, using the BSM standard.

And, of course, all of the standard features that you'd
expect from a modern UNIXÂ® system including IPSec, SSH, and so
on.

ZFS

Cheap snapshots, clones, end-to-end checksums, deduplication,
compression, and no need to decide partition sizes on install.
Using ZFS for a few days makes going back to a more
traditional volume manager painful. If you want to test
something with ZFS, then it's trivial to just create a
snapshot and roll back if it didn't work.

If you're using jails, then ZFS lets you clone an existing
jail in under a second, irrespective of how big the jail
itself is.

GEOM

Even without ZFS, FreeBSD comes with a rich storage system.
GEOM layers providers and consumers in arbitrary ways,
allowing you to use two networked machines for
high-availability storage, use your choice of RAID level, or
add features like compression or encryption.

Working Sound

FreeBSD 4.x introduced in-kernel sound mixing, so that multiple
applications could play sound at the same time even with cheap
sound cards with no hardware mixing support. FreeBSD 5.x
automatically allocated new channels to applications, without
any configuration.

Now, FreeBSD has low-latency sound mixing with per-application
volume controls and full support for the OSS 4 APIs out of the
box. There's no need to configure a userspace sound daemon.
The same audio APIs that were used a decade ago still work on
FreeBSD, including some compatibility modes to allow
applications that try to manipulate the global volume to only
change their own. If you want to watch DVDs with 5.1 surround
sound, just install your favourite media player and press
play.

My System, How I Want It

FreeBSD gives you an easy-to-use, working, UNIXÂ®-like system.
This base system can then be extended easily. If you want to
run KDE or GNOME, then just install the metapackage for the
version that you prefer. If you want a headless server, then
it's equally easy to install the server tools that you want.

It's easy to run the FreeBSD installer via a serial port and to
configure the entire system from the terminal. It's also easy
to install and use an existing desktop environment. The
decisions about the kind of system you want to use are left to
you.

If you're deploying FreeBSD in a corporate environment, then
it's very easy to customise both the base system and the set
of installed packages for your specific requirements. The
build system provides numerous tuneable variables allowing you
to build exactly the base system that meets your needs.