Warner Losh - Tracking FreeBSD in a commercial Environment
Source: BSDCan - The Technical BSD Conference
Added: 25 May 2009
Tags: bsdcan, bsdcan2009, presentation, freebsd, commercial environment, waner losh
Paper (624 Kb, 45 pages), Slides (104 Kb, 10 pages)
Tracking FreeBSD in a commercial Environment
How to stay current while staying sane
The FreeBSD project publishes two lines of source
code: current and stable. All changes must first
be committed to current and then are merged into
stable. Commercial organizations wishing to use
FreeBSD in their products must be aware of this
policy. Four different strategies have developed
for tracking FreeBSD over time. A company can choose
to run only unmodified release versions of FreeBSD.
A company may choose to import FreeBSD's sources
once and then never merge newer versions. A company
can choose to import each new stable branch as it
is created, adding its own changes to that branch,
as well as integrating new versions from FreeBSD
from time to time. A company can track FreeBSD's
current branch, adding to it their changes as well
as newer FreeBSD changes. Which method a company
chooses depends on the needs of the company. These
methods are explored in detail, and their advantages
and disadvantages are discussed. Tracking FreeBSD's
ports and packages is not discussed.
Companies building products based upon FreeBSD have
many choices in how to use the projects sources and
binaries. The choices range from using unmodified
binaries from FreeBSD's releases, to tracking modify
FreeBSD heavily and tracking FreeBSD's evolution
in a merged tree. Some companies may only need to
maintain a stable version of FreeBSD with more bug
fixes or customizations than the FreeBSD project
wishes to place in that branch. Some companies also
wish to contribute some subset of their changes
back to the FreeBSD project.
FreeBSD provides an excellent base technology with
which to base products. It is a proven leader in
performance, reliability and scalability. The
technology also offers a very business friendly
license that allows companies to pick and choose
which changes they wish to contribute to the community
rather than forcing all changes to be contributed
back, or attaching other undesirable license
conditions to the code.
However, the FreeBSD project does not focus on
integration of its technology into customized
commercial products. Instead, the project focuses
on producing a good, reliable, fast and scalable
operating system and associated packages. The project
maintains two lines of development. A current branch,
where the main development of the project takes
place, and a stable branch which is managed for
stability and reliability. While the project maintains
documentation on the system, including its development
model, relatively little guidance has been given
to companies in how to integrate FreeBSD into their
products with a minimum of trouble.
Developing a sensible strategy to deal with both
these portions of FreeBSD requires careful planning
and analysis. FreeBSD's lack of guidelines to
companies leaves it up to them to develop a strategy.
FreeBSD's development model differs from some of
the other Free and Open Source projects. People
familiar with those systems often discover that
methods that were well suited to them may not work
as well with FreeBSD's development model. These two
issues cause many companies to make poor decisions
without understanding the problems that lie in their
future.
Very little formal guidance exists for companies
wishing to integrate FreeBSD into their products.
Some email threads can be located via a Google
search that could help companies, but many of them
are full of contradictory information, and it is
very disorganized. While the information about the
FreeBSD development process is in the FreeBSD
handbook, the implications of that process for
companies integrating FreeBSD into their products
are not discussed.