Cactus is done, now Diablo

Our 2011.2 release, codenamed "Cactus", was finally released early on April 15. The Diablo merge window opened a few hours later, and in 8 days the developer community will gather in Santa Clara to discuss what will be in it.

If you want to develop a feature for Diablo and get your design reviewed or discussed at the summit, remember that you have until the end of Tuesday, April 19 to submit a design summit session. The procedure to follow is simple, please see http://wiki.openstack.org/Summit for more details.

Your session blueprint will be reviewed as soon as possible by the track leads. Given the very large number of sessions submitted, we might try to group together related blueprints for a common discussion, or have to refuse a few sessions. The April 19 is a soft deadline: you can still submit sessions after that date, but there is no guarantee we will review it, and they will be given less priority that the ones submitted early.

See you all there !

OpenStack Cactus BMPFreeze report

Our time-based release cycles are cadenced by a number of freezes and milestones, and we just passed BranchMergeProposalFreeze for the Cactus cycle. Feature branches should have been proposed by now, so let's see how well we did compared to the original plan we had for this release:

  • Essential specs: 3 merged, 2 proposed (100% proposed in time)
  • High-prio specs: 5 merged, 3 proposed, 3 deferred (73%)
  • Medium-prio specs: 11 merged, 5 proposed, 4 late, 2 deferred (73%)
  • Low-prio specs: 7 merged, 1 proposed, 6 late, 2 deferred (50%)

Compared to the Bexar cycle, the results are comparable (with less success on High specs, better success on Medium specs). With 54 specs targeted (compared to 42 in Bexar), that's a great achievement, so congratulations to all the developers !

Now it's time to concentrate on review and get those proposed branches merged before FeatureFreeze, which happens at end of day March 24.

Coming up in OpenStack Cactus...

In a bit more than a week, we will hit FeatureFreeze for OpenStack "Cactus" cycle, so we start to have a good idea of what new features will make it. The Cactus cycle focus was on stability, so there are fewer new features compared to Bexar, but the developers still achieved a lot in a couple of months...

Swift (OpenStack object storage)

The Swift team really focused and stability and performance improvements this cycle. I will just single out the refactoring of the proxy to make backend requests concurrent, and improvements on sqlite3 indexing as good examples of this effort.

Glance (OpenStack image registry and delivery service)

Bexar saw the first release of Glance, and in Cactus it was vastly improved to match standards we have for the rest of OpenStack: logging, configuration and options parsing, use of paste.deploy and non-static versioning, database migrations... New features include a CLI tool and a new method for client to verify images. Glance developers might also sneak in an authentication middleware and support for HTTPS connections !

Nova (OpenStack compute)

A lot of the feature work in Nova for Cactus revolved around the OpenStack API 1.1 and exposing features through XenServer (migration, resize, rescue mode, IPv6, file and network injection...). We should also have the long-awaited live migration feature (for KVM), support for LXC containers, VHD images, multipleNICs, dynamically-configured instance flavors or volume storage on HP/Lefthand SANs. XenAPI should get support for Vlan network manager and network injection. We hope support for VMWare/vSphere hypervisor will make it.

The rest of the Nova team concentrated on testing, bugfixing (already 115 bugfixes committed to Cactus !) and producing a coherent release, as evidenced by the work on adding the missing Ipv6 support for FlatManager network model. I should also mention that the groundwork for multi-tenant accounting and multiple clusters in a region also landed in Cactus.

Over the three projects branches, last month we had more than 2500 commits by more than 75 developers. Not too bad for a project less than one-year-old... We'll see the result of this work on Cactus release day, scheduled April 14.

OpenStack Project Technical Leads (PTLs)

I'd like to quickly precise what will be expected, from a release management perspective, from the Project Technical Leads (PTLs) some of us will nominate and elect in the following weeks.

PTLs, like it says on the tin, will have to technically lead each project. That comes with a few rights, but also with a lot of duties that the candidates shouldn't underestimate...

Rights include the ability to decide between conflicting opinions on a technical debate, or the authority to set the theme for the next release. Exercising those rights will only be possible if the technical opinions of the elected lead are widely respected in the project.

Duties of the PTLs, from a release management perspective, mainly include coming up with a plan for the next release(s). That means staying on top of what everyone proposes, selecting (and rejecting) blueprints for a given cycle, setting priorities, approving designs (potentially with the help of other project drivers), or making sure we don't duplicate work. The PTLs should also be very impacted by the design summit preparation, making sure we have sessions for what we need to discuss, and encouraging people to submit corresponding blueprints.

As release manager, I can help with the process, but the decisions must come from the PTLs, who have the legitimacy of being elected. During the cycle, I will then help in making sure the defined plan is on track.

With a well-established project like Swift or a relatively-small project like Glance, the PTL work can certainly be done at the same time as regular development. For Nova however, the PTL should expect project coordination work to take a large part of his time, so he could find himself not being able to write as much code as he would want. That should be kept in mind before you accept nominations :)

Hoping this helps in clarifying expectations... Happy nominating and voting !

Upstream projects vs. Distributions

You can globally split open source projects into two broad categories. Upstream projects develop and publish source code for various applications and features. Downstream projects are consumers of this source code. The most common type of downstream projects are distributions, which release ready-to-use binary packages of these upstream applications, make sure they integrate well with the rest of the system, and release security and bugfix updates according to their maintenance policies.

The relationship between upstream projects and distributions is always a bit difficult, because their roles overlap a bit. Since I'm sitting on both sides of the fence, let's try to find common ground.

Overlapping roles

In an ideal world, everyone would install software through distribution packages, and the roles wouldn't overlap. In the real world though, upstream projects need to deal with distributions that don't provide packages for your software, or provide old buggy versions with no mechanism for getting fresh ones. That's why they need to care about manual installation or update mechanisms. On the other hand, in their rush to release fixes, distributions sometimes carry patches without sending them upstream immediately. Both want to provide bugfix updates to stable versions. In all cases the overlapping roles end up duplicating work and creating unnecessary friction.

Splitting the roles

In my (humble) opinion, upstream projects should encourage the use of packaged software wherever possible, rather than resisting it. They should concentrate on their core competency: working on producing new releases of their code. Dealing with distribution issues, environment specificities or maintaining stable branches is a different type of work, and one that distributions excel in. So the key seems to be in splitting the roles more cleanly.

Upstream projects should release code, together with good documentation on how to manually deploy it: dependencies, startup and upgrade mechanisms, open bug trackers with links to patches... This documentation can be reused by manual deployers and distribution packagers alike. They should stop short of providing installers, auto-updaters, dependency bundles, etc. They should limit the release of point release updates only to critical issues (data loss, security...).

Distributions should be responsible for proper packaging (easy way to install the software and its dependencies, together with startup scripts and other system integration), and would be responsible for more general bugfix updates that match their maintenance policy.

With such a split, you obviously will end up with a subpar user experience if you try to manually install the software from the released code. But you facilitate packaging, so you should end up being packaged in more distributions. I think time is better spent contacting distributions to get packaged rather than trying to improve the manual installation to the point where it is actually usable.

Freshness

One case where you end up doing manual installations (even on supported distributions) is to get the latest released code running on already-released distributions. Due to stable release policies in distributions, they will release bugfix updates for the version that was available when they released, but usually won't provide a whole new version of a package.

The solution is in specific distribution archives that track the latest upstream releases (like PPAs in Ubuntu) and make them available for users of already-released distributions. Those are usually co-maintained between distributions and upstream projects.

Reference distributions

At this point, it is worth taking collaboration one step further, and have developers that are involved in both projects ! Those can make sure the distribution includes the packages and patches you need for your software to run properly. Those can make sure the distribution is one on which your software is up-to-date, runs properly and gets appropriate bugfix updates. Those can maintain the specific distribution archives for the latest upstream releases.

That distribution can then become a reference distribution for the upstream project, one that is tightly integrated with the upstream project and lives in harmony.

Two closing remarks:

  • You can have multiple reference distributions. That said, one way to limit friction and increase freshness is to have somewhat-synchronized release cycles, which may not scale very well.
  • I realize the proposed role split and reference distro scheme might not be generally applicable to all open source upstream projects. In my experience it worked well with server software.

In OpenStack, having a few Ubuntu core developers in the project (and the Ubuntu server team supporting us) allows us to use Ubuntu as a reference distribution. We have packages up for other distributions, but those are not (yet) official distribution packages. Any other distro developers interested to join ?