FeatureHighlights/ProductSeries

Not logged in - Log In / Register

Revision 5 as of 2007-03-26 16:24:41

Clear message

Series: Major stable and development branches

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:

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:

The trunk series here is identified with the words "Current development focus".

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. In the Zope3 example above, the 3.4 series was the trunk at the time of writing.

For convention, we encourage projects to call their development focus "trunk" and leave it as the same branch over time. When creating a new stable series, branch from trunk, create the series and link the branch to that series. This ensures that people who create a checkout of "trunk" don't find that it goes stale because it has "become a stable series" suddenly. And those who checkout or branch from a stable series will get what they expect, too.

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:

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.

What if the project isn't yet using Bazaar officially, and code is being managed in CVS or Subversion? Launchpad can import the CVS or SVN trunk of the project and publish it for you as a Bazaar branch - and then keep it up to date so you can work entirely in Bazaar, merging from trunk whenever you want. That's the [:ReviewersGuide/BranchImports:next step] in this tour.