Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've only been a member of Launchpad for about 3 months and I still am having trouble figuring out the terminology.

I have created a project with one branch - trunk. I have committed a few times to this branch.

I created a series called '0.1' and I want to provide a download. Last time I did that, I had to create a milestone or something. Whatever it was, I don't get it.

Can someone please explain:

  • series
  • releases
  • milestones

and the purpose of each?

share|improve this question
lfaraone♦ said: LaunchPadIsNotCamelCase. – Umang Aug 22 '10 at 15:18
Heh-heh... oops. Thanks for fixing. – Nathan Osman Aug 23 '10 at 0:23
up vote 3 down vote accepted

I think Launchpad uses these words as they're more "generic" - they can be used for various styles of development without forcing a project to manage source code, develop and release in certain manner.

I see mainly two ways of developing a project on Launchpad:

  1. Your project's development is non-linear (not sure if this is the correct word). This is generally true if it is important for you to support more than one version at a time, while developing on an unstable/development branch. (Think developing two versions in parallel)

    For example, GNOME has versions x.y.z with odd y implying a development series and even y implying a stable series. GNOME releases 2.30 as stable for the world to use. After the release, developers start working on 2.31.x which is unstable. If they find any important bug that they'd like fixed for users running 2.30 without providing a huge number of unpolished new features, they fix just that bug in 2.30 and release 2.30.1. If you're familiar with bzr you should be able to understand this in terms of 2.31 being developed on trunk, while 2.30 is a branch of trunk (branched when 2.29 became stable and was released as 2.30) where only bug-fixes are made.

    In this case, you should make one series for each 2.29, 2.30, 2.31, etc and one trunk series. 2.29 and 2.30 will share the same bzr branch (since 2.30 is 2.29 after it is polished). 2.31 and trunk will share the same bzr branch. When you release 2.32, then branch trunk and call this branch 2.32 (that will be the bzr branch for both 2.31 and 2.32 series).

    An example of a milestone in this case is 2.30.2 (in the 2.30 series). A milestone differs from a release in that a milestone is a future release and once that version is released, the milestone becomes a release. This is why is makes sense to target a bug for a milestone (future) and you can make a bug affect only (say) two out of five series because it affects only two of them and should be fixed on their respective branches (probably the current stable release and trunk)

  2. Your project's development is linear. This means that you will release version 1.1 for everyone to use, keep developing features and fixing bugs until you are ready for 1.2 or 2.0 (or whatever you like). Then you release the latest available code. In this case, you aren't developing different versions in parallel, as illustrated by the series diagram on Launchpad).

    In this case, you have only one series, one bazaar branch (both called trunk presumably) and all your milestones and releases are in this one series (whether 0.1, 1.0, 1.1 or2.0)

The later is simpler. The former more apt when you need to provide bug-fixes while you work on big changes for a later version (more necessary when it isn't a solo project).


share|improve this answer

I agree it is quite confusing and not particularly well documented. This is my understanding:

A series is basically a set of releases. Normally you have a main development branch associated with a series called 'trunk' or something similar. You can have other series such as 'stable' with their own sets of releases. Confusingly, series can share or have separate bzr branches - I'm not sure what the best thing to do in this respect is.

Within a series, you have milestones. It seems you can only set one milestone at a time - you need to release your first milestone in order to set your second. Milestones will probably be your version numbers eg. 0.1, 0.2.

When you click 'Release now' to release a milestone, you will be able to upload files for download that correspond to that release.

The main points to this:

  • Branches are completely separate lines of development.
  • Series are parallel sets of releases.
  • Milestones are future releases and work in a linear fashion within one series.
  • Releases are past milestones that can have downloads associated with them.

(sorry for the circular definition here but thats how it works).

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.