\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}

\noindent\rule{\textwidth}{1pt}
\part{How Horde CVS is organized}
All of the code in our repository is split into a set of modules. However, sometimes there are multiple branches available of a module. A CVS branch is a mechanism for keeping multiple versions of a module; for instance, a stable branch and a development branch.

Our branches and release engineering can seem a little convoluted at first, but follows some pretty simple rules. When you check something out of CVS, by default, you get the \textbf{HEAD} branch. \textbf{HEAD} is always the latest development code. It may be undocumented, it may be broken, it may cause tofu to turn purple. You never know.

The branches that hold release versions of applications - code that is documented, tested, and recommended for production use - are named \textbf{RELENG\_*}, where * is the major version of the application in question. So, the release branch for IMP 3.x is \textbf{RELENG\_3}. The release branch for Horde 2.x is \textbf{RELENG\_2}. Note that this doesn't give you a way to distinguish between IMP 3.0 and IMP 3.1 - they live in the same CVS branch, because one supercedes the other. However, we do tag releases, so you can check out IMP 3.0 with the \textbf{IMP\_3\_0} tag.

There are also some old \textbf{STABLE\_*\_*} branches available for Horde and IMP, which pre-date the current release engineering practice. No new branches will be created with these tags, and you shouldn't need to work with them, but they are relatively self-explanatory in what they refer to: Horde's \textbf{STABLE\_1\_2} is Horde 1.2.x, etc.

Not all versions are compatible to each other. If you want to know which stable versions work with which version of another module, see http://horde.org/source/versions.php\footnote{http://horde.org/source/versions.php}.

Because this matrix will get more complicated with the 37 released modules (http://horde.org/source/modules.php\footnote{http://horde.org/source/modules.php}) that we will have in the near future, we decided to introduce a new branch name. All branches of all modules that are compatible to each other will have the same branch name in the future, starting with \textbf{FRAMEWORK\_3} for the next set of major version releases.

\end{document}
