Major branches - Series
When we think of the way a project organises itself, there are some branches which are special - they represent major lines of development, and releases are "cut" from them. Typically these branches represent:
the "development trunk", which is the current "tip" of development across the core project community, it represents the very cutting edge of work on that project. In general, the only releases made from the development trunk are snapshot, milestone or test releases to generate more widespread testing and feedback.
one or more stable and supported branches. These represent the latest work done on the stable versions of the project which are still supported. If updated stable releases are to be made they will come from these branches.
possibly, some obsolete branches, for major release versions that are now out of date and no longer being updated. These branches likely do not get any further work done on them.
We call each of these "major" lines of development a "series", because it primarily represents a "series of releases of the same major version".
Note, there are usually multiple series for a given project, especially one that has produced stable releases. For example, a project might have a version 1.2 which is still supported, a 1.3 which is the "latest stable version" and recommended for new users, and a trunk which represents the current line of active development and the source of snapshot test releases for the next stable version.
Take a look at the Zope3 project:
The stable and trunk series are shown in the "Timeline" section of the page:
- attachment:zope3series.png
There's some flexibility in the way projects name and organise themselves. For example, in the GNOME project, the "development trunk" is like a series with an "odd" version number, like 2.17, and when it is ready for release it gets branched with an "even" version number like 2.18. Then once the stable release is made, it gets branched to 2.19, which is the new "trunk". Sometimes projects also call the trunk "MAIN", a term from the days of CVS.
Series and Branches
In Launchpad, each project can have multiple Series registered, and each of those Series can be associated with a branch. By default, if you don't specify which series you are interested in, you will get the current development trunk series (usually called trunk, but not always). For example, in the example where you branched GNU Hello, you typed:
% bzr branch http://launchpad.net/gnuhello 191 revisions branched.
This command specifies only the project name, so you would have been given the development trunk. If there was a 1.3 series with a branch associated with it, you could have typed bzr branch http://launchpad.net/gnuhello/1.3 and received the tip of that stable branch. Note that this is different to the previous approach of branching from a specific person's version of a project - here you are branching from one of the "major project branches", or Series.
Not every Series will have a branch associated with it. Often, Series are registered so that they can be a handle for a set of translations for a particular major version of the software, or so that bugs can be targeted there for release management. But we do encourage you to make sure, when you branch from trunk to make a new major stable release, that you setup a Series for it and link the branch to it.