Diff for "FeatureHighlights/BlueprintReleasePlanning"

Not logged in - Log In / Register

Differences between revisions 3 and 4
Revision 3 as of 2007-03-26 13:51:36
Size: 5916
Editor: 81
Comment:
Revision 4 as of 2007-03-27 11:38:07
Size: 5964
Editor: 217
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Blueprints: Lightweight Specifications = = Blueprints: lightweight specifications =
Line 3: Line 3:
Planning isn't quite the least-favorite thing for most free software developers - but it's more or less in the same region as dealing with spam. The free software process is highly agile, with release management policies that span the full range from "time based" (set the date and forget the features) to "when it's done" (set the features and forget the date). Launchpad doesn't aim to change the psychology of projects by imposing any planning, but it does at least help a project to communicate to itself, and to other projects, where things stand. Planning isn't quite the least-favorite thing for most free software developers - but it's more or less in the same region as dealing with spam.
Line 5: Line 5:
The idea is simply to have a placeholder for each "chunk of work", or idea for implementation, or documentation that should be written. We call that placeholder a Blueprint. It can be as little as a single sentence, or a fully-fledged specification with data model and user interface mockups. The level of detail required is entirely a matter for the project to decide. The free software process is highly agile, with release management policies that span the full range from "time based" (set the date and forget the features) to "when it's done" (set the features and forget the date). Launchpad doesn't aim to change the psychology of projects by imposing any planning, but it does projects to communicate internally, and with other projects.
Line 7: Line 7:
Each of these Blueprints belongs to a particular project. That means you can see lists of all the ideas or proposals or suggestions that are "out there" for a given project. For example, Ubuntu has more than 1,000 such blueprints, in various states of completion or discussion: Launchpad tracks placeholders for each chunk of work, idea for implementation or section of documentation that needs to be written. We call those placeholders Blueprints. A Blueprint can be as little as a single sentence, or a fully-fledged specification with data model and user interface mock-ups. The level of detail required is entirely a matter for the project to decide.

Each Blueprint belongs to a particular project. That means you can see lists of all the ideas, proposals or suggestions that are "out there" for a given project. For example, Ubuntu has more than 1,000 such blueprints, in various states of completion or discussion:
Line 15: Line 17:
You can see, for each blueprint, a priority, a "definition" status, and a "delivery" status. === Blueprint status and priority ===
Line 17: Line 19:
The priority is set by project leaders. Anybody can contribute blueprints for any project - there is no way to prevent someone from posting their ideas. However, the project leaders can set the priority - which means the extent to which they endorse the idea, or think it is important to implement soon. Each Blueprint has a priority, a "definition" status, and a "delivery" status.

The priority is set by project leaders. Anybody can contribute Blueprints for any project - there is no way to prevent someone from posting their ideas. However, the project leaders can set the priority - which means the extent to which they endorse the idea, or think it is important to implement soon.
Line 23: Line 27:
Launchpad itself only contains a summary of the blueprint - usually just the introductory paragraph - and then a URL to the location of the real document. In some cases the single paragraph (or sentence) is enough, but it's more typical to keep the full document in a wiki, where members of the community can collaborate on it easily. === Storing the detail of a Blueprint ===
Line 25: Line 29:
Just having a list of proposals and ideas in one place is useful, even if, as in the case of Ubuntu, there are clearly many more ideas than developers! It's convenient to be able to point new members of the community at a single place where those ideas are cataloged, to allow people to gravitate towards the pieces they are most interested in. People can subscribe to blueprints and get notifications when their status changes (or even when the wiki document they are in is updated). And newcomers can easily see which ideas are important to the project leaders, and which are not, so if they want they can focus their contributions on those pieces most likely to be accepted into the project. Launchpad itself only contains a summary of the Blueprint - usually just the introductory paragraph - and then a URL to the location of the real document. In some cases, the single paragraph (or sentence) is enough, but it's more typical to keep the full document in a wiki, where members of the community can easily collaborate.
Line 27: Line 31:
== Linking blueprints == Just having a list of proposals and ideas in one place is useful, even if, as in the case of Ubuntu, there are clearly many more ideas than developers! It's convenient to be able to point new members of the community at a single place where those ideas are cataloged and to allow people to gravitate towards the pieces they are most interested in. People can subscribe to Blueprints and get notifications when their status changes and even when the wiki document they are in is updated.
Line 29: Line 33:
It's possible in Launchpad to link a blueprint and a bug, or a blueprint and a branch. In this way people can start to see how pieces of work are related to one another. It's very useful, for example, to be able to see the code that implements a blueprint evolving over time. It's also possible to link blueprints to one another - indicating rough dependencies. This lets you map out the order in which pieces should be implemented. Newcomers can easily see which ideas are important to the project leaders, and which are not, so they can choose to focus their contributions on those pieces most likely to be accepted into the project.

== Linking Blueprints ==

Launchpad allows you to link a blueprint and a bug, or a blueprint and a branch. This allows people to see how pieces of work relate to one another.

It's very useful, for example, to be able to see the code that implements a blueprint evolving over time. It's also possible to link blueprints to one another, indicating rough dependencies. This lets you map out the order in which pieces should be implemented.
Line 33: Line 43:
The most useful aspect of Launchpad's blueprint tracker, however, is the ability to group together the blueprints which describe chunks of work that the project thinks are important to track for the next major series. The most useful aspect of Launchpad's blueprint tracker, however, is the ability to group  the blueprints that describe chunks of work that the project thinks are important to track for the next major series.
Line 39: Line 49:
As you can see, this is a much shorter list (about 100 blueprints instead of 1100). These are blueprints that have been reviewed by the team, and the plan at the beginning of the Feisty development cycle was to get those features implemented. In general, about 80% of the planned feature goals have landed in each Ubuntu release - we choose to ship on time rather than necessarily waiting till every feature lands - but different projects can adopt different release management goals. As you can see, this is a much shorter list of around 100 blueprints, instead of 1100. These are blueprints that have been reviewed by the team. At he beginning of the Feisty development cycle, the team planned to implement those features.

In general, about 80% of the planned feature goals have landed in each Ubuntu release. We choose to ship on time, rather than necessarily waiting till every feature lands. However, different projects can adopt different release management goals.
Line 43: Line 55:
The blueprint capability in Launchpad is not designed to do hard-core project management. It doesn't do Gantt charts or waterfall diagrams or block out developers hour by hour. But it certainly can improve the communication within a project, and between projects, about the status of work that has been discussed. Organising blueprints by release helps to communicate a clear picture of where any give release stands - what's in, what might get in, and what's not going to make it. === Helping improve communication ===
Line 45: Line 57:
The release management that we've described here is at the level of major releases - what we call a Series. Sometimes you want to group together just the blueprints that are relevant for an interim release. For that, we'll use milestones. And learning about those is the [:ReviewersGuide/MilestoneUsage:final stop on our tour]. The blueprint capability in Launchpad is not designed for hard-core project management. It doesn't offer Gantt charts or waterfall diagrams or block out developers hour by hour. But it certainly can improve the communication within a project, and between projects, about the status of work that has been discussed. Organising blueprints by release helps to communicate a clear picture of where any give release stands - what's in, what might get in, and what's not going to make it.

The release management that we've described here is at the level of major releases - what we call a series.

Sometimes you may want to group just the blueprints that are relevant for an interim release. For that, we'll use milestones. And learning about those is the [:ReviewersGuide/MilestoneUsage:final stop on our tour].

Blueprints: lightweight specifications

Planning isn't quite the least-favorite thing for most free software developers - but it's more or less in the same region as dealing with spam.

The free software process is highly agile, with release management policies that span the full range from "time based" (set the date and forget the features) to "when it's done" (set the features and forget the date). Launchpad doesn't aim to change the psychology of projects by imposing any planning, but it does projects to communicate internally, and with other projects.

Launchpad tracks placeholders for each chunk of work, idea for implementation or section of documentation that needs to be written. We call those placeholders Blueprints. A Blueprint can be as little as a single sentence, or a fully-fledged specification with data model and user interface mock-ups. The level of detail required is entirely a matter for the project to decide.

Each Blueprint belongs to a particular project. That means you can see lists of all the ideas, proposals or suggestions that are "out there" for a given project. For example, Ubuntu has more than 1,000 such blueprints, in various states of completion or discussion:

At the time of writing, the most "important" of these blueprints were:

attachment:ubuntublueprints.png

Blueprint status and priority

Each Blueprint has a priority, a "definition" status, and a "delivery" status.

The priority is set by project leaders. Anybody can contribute Blueprints for any project - there is no way to prevent someone from posting their ideas. However, the project leaders can set the priority - which means the extent to which they endorse the idea, or think it is important to implement soon.

The "definition" status tells you whether or not the project has reached consensus on how the idea should be implemented. In some projects there will be a person, or team of people, who will approve the plan. In others, plans are considered unnecessary or harmful, so this value is less important. In Ubuntu, we try to have a senior contributor review and approve any significant piece of work that is planned for any given release. Of course, lots happens without these plans, but it does give us some certainty that the various plans gel well, and that people have thought about the most important issues before they commit to getting something done in a particular release.

Finally, the "delivery" status is all about implementation and execution. It tells you whether the work has been done, or whether it is on track to be done.

Storing the detail of a Blueprint

Launchpad itself only contains a summary of the Blueprint - usually just the introductory paragraph - and then a URL to the location of the real document. In some cases, the single paragraph (or sentence) is enough, but it's more typical to keep the full document in a wiki, where members of the community can easily collaborate.

Just having a list of proposals and ideas in one place is useful, even if, as in the case of Ubuntu, there are clearly many more ideas than developers! It's convenient to be able to point new members of the community at a single place where those ideas are cataloged and to allow people to gravitate towards the pieces they are most interested in. People can subscribe to Blueprints and get notifications when their status changes and even when the wiki document they are in is updated.

Newcomers can easily see which ideas are important to the project leaders, and which are not, so they can choose to focus their contributions on those pieces most likely to be accepted into the project.

Linking Blueprints

Launchpad allows you to link a blueprint and a bug, or a blueprint and a branch. This allows people to see how pieces of work relate to one another.

It's very useful, for example, to be able to see the code that implements a blueprint evolving over time. It's also possible to link blueprints to one another, indicating rough dependencies. This lets you map out the order in which pieces should be implemented.

Release management

The most useful aspect of Launchpad's blueprint tracker, however, is the ability to group the blueprints that describe chunks of work that the project thinks are important to track for the next major series.

Here is the list for the Feisty (7.04) release of Ubuntu:

As you can see, this is a much shorter list of around 100 blueprints, instead of 1100. These are blueprints that have been reviewed by the team. At he beginning of the Feisty development cycle, the team planned to implement those features.

In general, about 80% of the planned feature goals have landed in each Ubuntu release. We choose to ship on time, rather than necessarily waiting till every feature lands. However, different projects can adopt different release management goals.

The important thing, of course, is that everyone can see where we stand on any particular item.

Helping improve communication

The blueprint capability in Launchpad is not designed for hard-core project management. It doesn't offer Gantt charts or waterfall diagrams or block out developers hour by hour. But it certainly can improve the communication within a project, and between projects, about the status of work that has been discussed. Organising blueprints by release helps to communicate a clear picture of where any give release stands - what's in, what might get in, and what's not going to make it.

The release management that we've described here is at the level of major releases - what we call a series.

Sometimes you may want to group just the blueprints that are relevant for an interim release. For that, we'll use milestones. And learning about those is the [:ReviewersGuide/MilestoneUsage:final stop on our tour].

FeatureHighlights/BlueprintReleasePlanning (last edited 2008-06-17 14:21:16 by localhost)