« Using and Extending Full Text in MySQL | Main | MySQL 5.0 Query Optimizer »

April 21, 2005

MySQL Development Model

Maurizio Gianola, VP of Software Engineering at MySQL is talking at MySQL 2005 about how MySQL develops software.

Maurizio opens by talking about a book, Get Out of My Life, for parents of teenagers. MySQL has entered the teenage years, a lot of excitement and enthusiasm but needs to learn to grow into an adult.


Headcount 28% in North America, 43% in Western Europe, 25% in Eastern Eurpope (Russia, Ukrain), 4% other (Australia, South America). Employees are paid based on their region. If they move their salary get's adjusted.

Development Goals

Overall, MySQL aims for performance, reliability and ease of use. There are a number of other goals, a few of note. Increase release schedule predictability. More and more people are relying on MySQL and can't accept the former model of waiting forever for a release. Another thing that has been done is to say that at the beta level there are no new features, and controlling the amount of code changes in a beta in general.


Functional teams are grouped by expertise, not geography. Monty and Brian control the architecture very tightly.

Internal communications is done with IRC, email and VoIP (for last minute and emergency). Using IRC and email lowers the language barrier because typing gets the words across better than verbally. Each year they have one week where eveyone comes together and works at a central location. A monthly newsletter is sent around to keep people informed.

Recruiting is done mostly through the community and via word of mouth. Most already know and use MySQL and can be asked detail questions about how they would fix a bug or write a use-case to test some software.

Development starts with big meeting with engineering, marketing, sales and support where they hash out how things are going to work. Flagship projects are committed for a specific release. Rolling projects are worked on over time and committed to the release coming next after the feature is built. Sponsored features are those that a customer wants to contribute to for converting a rolling feature into a flagship. Time is assigned to projects during the design, not by the developer.

Agile development model, using scrum for the monthly development cycle. Bitkeeper is used for source control with a wiki for sharing information about plans, schedules and policies.

Design and code reviews are done by Monty, and he's picky.

The release tags:

General availability is backward from what commercial companies typically think. For MySQL GA comes with the first alpha release.

Q/A is done internally as well as by external sources and the community.

Tools and Processes

Worklog is used to keep track of projects. All ideas are captured there, and then potentially turned into projects. Each developer takes a task at the beginning of the month, typically designed to consume 65% of their time, and works for one month. Each week a progress report for each project is created, and then the summary.

Worklog is a complex tracking system, can do quite a bit to coordinate between.

The build process for the community version goes out every 4-6 weeks. For the certified version they take the community version and maintain patches of only critical bugs for it for a long time.

Features are considered in a systematic way.

(For both the build and feature conversation there is a very complex graphic of the)

How to work with MySQL

If you want to add code, you must pass it through Monty, who is *very* picky. Contributions must be turned over to MySQL for reasons of their dual-license model.

Embracing Insanity is a great book to get up to speed with the open source community.

Posted by mike at April 21, 2005 1:29 PM