Robin Schumacher is MySQL's Director of Product Management and has over 20 years of database experience in DB2, MySQL, Oracle, SQL Server and other database engines. Before joining MySQL, Robin was Vice President of Product Management at Embarcadero Technologies.
When I joined MySQL back in June of 2005, one of the first “MySQL Truths” I learned and repeated often when discussing MySQL with others was “release early, release often.” If you’ve been using MySQL for any length of time, you know what that statement means – it meant that MySQL was: (1) dedicated to getting new features and enhancements into the hands of its community so the software’s quality could be validated; (2) eager to take early feedback on those features so the input could rapidly be incorporated back into the product allowing everyone to benefit; (3) committed to very frequent releases of the software so helpful new features and/or external contributions that were ready for action could quickly be put into play and not sit idle on the shelf. And if you’ve been around Open Source for a while now, you know this is the spirit in which most providers of Open Source software operate.
When MySQL 5.0 was released in October of 2005, it contained a lot of new features that were large and complicated in nature – enhancements like stored procedures, triggers, cursors, views, and more. While the new features were welcomed by many who were used to using such things in other RDBMS’s, looking back, most at MySQL agree that the overall quality of the 5.0 release was not up to the standard set by prior versions of the server. And right on the heels of 5.0 was 5.1, which also contained a number of meaty new enhancements such as table/index partitioning, row-based replication, a built-in task scheduler, and more.
The Engineering and Support staffs of MySQL found themselves forced to deal with a GA release with numerous issues that needed to be rectified as well as an upcoming version that needed attention as well. The end result was a lengthy delay in the release of MySQL 5.1 and a community and customer base that was left scratching its head and wondering if MySQL had lost its commitment to providing frequent, new releases of its software.
The good news is that MySQL has not lost its commitment to release early/often, and has recently implemented a new release model, now underway, that is designed to guard against the issues that arose in the past, deliver more frequent releases of the MySQL Server, and ensure very high quality for those using MySQL as their data management solution. Let’s take a quick look now at how this new release model works and how it delivers these benefits. If you want a more technical/engineering-focused account of how the model works, please see the following doc on the MySQL Forge.Milestone Releases In short, the goals of the new model for the MySQL Server are these:
To accomplish these objectives, the Engineering staff of MySQL has designed a new ‘milestone’ release model that differs from the prior methodology utilized for earlier versions of the MySQL Server. In short, the aim of the milestone model is to deliver releases of the server every three to six months – releases that will likely contain new features in each new milestone, with the quality of each release being, at minimum, RC (release candidate) in nature. From these milestone releases, a new GA version of the MySQL Server will be eventually introduced (note that not all milestones will result in a GA release), with the timeframes between new GA releases being every 12-18 months.
In between each milestone drop will be integration ‘windows’ that will allow new, beta-quality features to be introduced for the next milestone release. It’s important to understand in regard to these features that the release model calls for a "rollback" action – if any of the features that were included during an integration window can't reach the required quality level by the release date, they are removed and scheduled for the next milestone. In this same vein, a milestone release (and subsequent GA versions that are derived from milestone releases) do not wait for a particular feature to be ready; instead, only features that are deemed mature enough for inclusion into a new milestone release from the core software trunk are allowed in and any feature that does not meet the internally established criteria simply becomes a potential candidate for the next milestone drop.
From an external standpoint, each milestone releases will, of course, contain a version number so it can easily be identified and from a MySQL/Sun internal standpoint, code-names are given to each proposed milestone so they can be distinguished from one another prior to final version number labeling.
A visual representation of the model might look like the following:
Before the implementation of the new milestone release model, the next planned GA version of the MySQL Server was 6.0. However, as was the case with MySQL 5.1, version 6.0 contained features that were much further along than others, so – in keeping with the new milestone release model – the features that were more mature have been pulled down into upcoming 2009 milestone releases and others (such as the Falcon transaction storage engine and the new online backup utility) will likely not appear in a future milestone release until 2010.
As of this writing, the key new features slated for the "Azalea" milestone include subquery optimizations and a new join algorithm (batched key access). Azalea is also slated to include the SIGNAL/RESIGNAL capability for stored procedures, a variety of replication improvements (semi-sync replication and more), and a few other miscellaneous enhancements. The target date for the Azalea milestone release is September 2009, with the next GA release of the MySQL Server being cut from the Azalea milestone and set for December 2009.
Falcon and the new MySQL backup utility are scheduled to appear in upcoming milestones (e.g. the backup utility is planned for the Betony milestone, which is currently scheduled for January 2010) with more feature roadmap items such as foreign keys for all engines and other major features coming shortly there afterwards.
The new MySQL Server milestone release model has been designed to deliver a number of benefits and also return MySQL to its release early/release often roots. The primary benefits include an increase in the quality of the general software trunk used to produce MySQL, the ability to deliver features and community contributions to the community and customer base faster than in prior releases, and a better capability to predict GA releases for new versions of the server.
If you have comments about the new release model, please don’t hesitate to make your voice heard. And as always, thanks for your support of MySQL and Sun!