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 HEAD branch. 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 RELENG_*, where * is the major version of the application in question. So, the release branch for IMP 3.x is RELENG_3. The release branch for Horde 2.x is 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 IMP_3_0 tag.
There are also some old 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 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.
Because this matrix will get more complicated with the 37 released modules (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 FRAMEWORK_3 for the next set of major version releases.