<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based
Extension//EN" [
<!ENTITY base CDATA "..">
<!ENTITY date "$FreeBSD$">
<!ENTITY title "FreeBSD Advocacy Project">
<!ENTITY % navinclude.about "INCLUDE">
]>

<html>
  &header;

  <h1>Why Choose &os;?</h1>

    <p>Why would you consider using &os;?  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.</p>

    <h2>The Community</h2>

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

      <p>The community is largely driven by technology, not ideology,
	and is focused on building the best possible system and making
	&os; as widely used as possible, not on pushing any other
	agendas.</p>

      <p>There is no dictator&mdash;benevolent or
	otherwise&mdash;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.</p>

    <h2>Stability</h2>

      <p>Stability means many different things.  &os; 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.</p>

      <p>Stability in &os; 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 &os; in
	2000, most of your knowledge would still be relevant.</p>

      <p>Backwards compatibility is very important to the &os; team,
	and any release in a major release series is expected to
	be able to run any code&mdash;including kernel
	modules&mdash;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.</p>

    <h2>Early Adoption and Collaboration With Other Projects</h2>

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

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

    <h2>Simple Configuration</h2>

      <p>&os; 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.</p>

      <p>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.</p>

    <h2>Ports</h2>

      <p>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 &os; will be there.</p>

      <p>Unlike some other systems, &os; 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.</p>

      <p>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.</p>

    <h2>Security</h2>

      <p>Security is vital in any network-connected machine.  &os;
	provides a number of tools for ensuring that you can maintain a
	secure system, such as:</p>

      <ul>
	<li>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.</li>
	<li>Mandatory Access Control, from the TrustedBSD project,
	  allowing you to configure access control policies for all
	  operating system resources.</li>
	<li>Capsicum, from &os; 9 onwards, allows developers to easily
	  implement privilege separation, reducing the impact of
	  compromised code.</li>
	<li>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.</li>
	<li>Security event auditing, using the BSM standard.</li>
      </ul>

      <p>And, of course, all of the standard features that you'd
	expect from a modern &unix; system including IPSec, SSH, and so
	on.</p>

    <h2>ZFS</h2>

      <p>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.</p>

      <p>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.</p>

    <h2>GEOM</h2>

      <p>Even without ZFS, &os; 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.</p>

    <h2>Working Sound</h2>

      <p>&os; 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.  &os; 5.x
	automatically allocated new channels to applications, without
	any configuration.</p>

      <p>Now, &os; 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
	&os;,  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.</p>

    <h2>My System, How I Want It</h2>

      <p>&os; 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.</p>

      <p>It's easy to run the &os; 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.</p>

      <p>If you're deploying &os; 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.</p>

  &footer;
</html>
