Confluence 2.3 was released on January 4th 2007, afer a gruelling eight month long development cycle, the longest gap between releases in the history of the product. Going dark for so long was quite painful for us, in terms of lost opportunities and lost momentum. Customers started wondering if we’d lost our way.
So how do you recover from that?
Quite famously, Microsoft spent the last five years developing Vista, the successor to Windows XP. Vista was slated to make some huge improvements to XP: a hardware-accelerated, composited desktop, revolutionary search and database services, new APIs, desktop widgets, and a host of new applications for things like calendaring and photo management.
Apple, who had spent a lot of the late 1990’s making aborted attempts to produce a next-generation operating system, finally got their act together by releasing OS X 10.0 in 2001. It had a new look-and-feel, a composited desktop and the base of a new set of developer APIs. At a steady pace over the next five years, they _incrementally_ added hardware acceleration, calendars, photo management, desktop widgets, revolutionary search, and lots of new APIs to boot. They even tweaked the look and feel with each release, so the OS X of five years ago, with its slightly too enthusiastic abuse of pin-stripes and transparency, looks quite dated today.
Apple-watchers also learned to play a new guessing game. Each revision of the operating system would contain changes to applications, APIs or the filesystem that didn’t seem to have anything to do with the published features. From these under-the-hood changes, it was possible to make astute guesses as to features that _didn’t_ make it into that release, but might show up in the future.
We weren’t thinking about any of this after Confluence 2.3 came out. We just knew that for us, eight months was far too much time between drinks. Following the advice of the Extreme Programmers, we decided to turn the knobs up to eleven and see what happened. If a short release cycle was a good idea, how about a _really_ short release cycle? Say… six weeks of development?
So after we’d at least partly calmed the glut of support cases caused by the 2.3 release, that’s exactly what we did. Confluence 2.4 would be developed in a strict six week time-box from inception to release. Anything we had done at the end of those six weeks we’d ship. Anything not finished would be safely tucked away where nobody could see it, and carried over to the next development cycle. Features that might take a couple of months to complete would be planned over several releases, where before we might have just done one long stretch.
What does this mean for our customers? Quite simply, for the next six months or so, Confluence releases will be much more frequent, but each individual release will contain significantly less new stuff.
* This is good for new customers, as new features will be available sooner. Once we’ve finished something, it’ll be out and in peoples hands as soon as possible.
* This is good for existing customers who are waiting on specific features. If you want editable comments, you can get them tomorrow and not wait until we’ve finished some other feature that the release was waiting on.
* This is annoying for anyone who feels obliged to upgrade to the latest and greatest. It’s best to pick your own schedule for upgrades, and only break that schedule if the new release contains one of your absolute must-have feature requests.
* This is even more annoying for plugin developers. We’re going to have to be a _lot_ more careful about changing APIs that third-party plugins might rely on. Breaking everything twice a year was bad. Breaking everything three times a quarter would be suicidal.
Would I recommend this to other development teams? So far, absolutely. Paring things down to fast, frequent releases has been a great way to keep people focused on delivering. You know exactly what the date is that you need to be done by (as opposed to my almost-infamous-within-Atlassian “four to six weeks” estimate for Confluence 2.3), and if you miss that cut-off, you know you’re not going to have to wait too long for the next opportunity.
Whether it’s sustainable in the long term, I’m not sure yet. We’ll see.