Towards continuous delivery of Octopus

Published on: 27 Jul 2015 by: Paul Stovell

When working on Octopus 3.0, we went for a good 8 months without releasing anything, aside from an occasional patch to 2.6 every few months. Going forward, our goal is to move away from "big bang" releases, and to head towards continuous delivery of Octopus. Instead of letting bug fixes and enhancements pile up for weeks and months before releasing, we're going to be releasing as soon as there's something to release, even if that means daily. It'll either be a production-ready release (bug fixes only) or a pre-release build for new features.

Last week we released 3.0, and since then we've released a new release on 3.0 each day:

Releasing once a day

If you look across the release notes for these 3.0 patches, none of them are "critical" issues that would prevent a majority of people from successfully using Octopus to deploy software. Given that so many big changes went into 3.0, it's actually proving to be quite stable. We're releasing each day because we can, and because it's good to do so, not because we have to.

As Joel said, undeployed features and bug fixes are inventory, and there's nothing to be gained from letting them pile up:

There are still a lot of teams doing quarterly or annual releases, usually because their deployment process is expensive. Operating systems, or anything where software has to be installed by every user, is usually batched up.

This is one of the most expensive forms of inventory: unshipped feature inventory. It could be earning you money, but it’s sitting on the shipping dock of your factory, while the guy down the street already has a product that does that exact same thing.

Releasing daily may not be the norm for downloadable software, but if it's good for web applications, I can't see why it isn't good for downloadable software too. When we started this, we thought that some people might see it as a sign that something is wrong, or get tired of upgrading. But just because a new release of Octopus is available each day, it doesn't mean anyone has to install it. We'll be doing some work to make it easier to compare release notes on the downloads page ("what's changed between this version and the version I currently have"), and possibly even to make upgrading Octopus a single click.

My hope is that by changing our mindset and process to releasing once a day, it'll make us more responsive, and help us to incrementally make our software just a little bit better every day.