WebscaleSQL Asks Oracle to Accept Their MySQL Code

The Percona Live MySQL Conference was held in the second week of April this year and a lot of sessions were focused on the upcoming MySQL 5.7 release.

The week before the conference, Oracle released MySQL 5.7.7 which has the Release Candidate status. Although they're not saying when the GA version will be released, it should definitely be before the end of the year. That said, there are still a lot companies out there that have not upgraded to MySQL 5.6, so adoption will be spread out. There are also a number of changed defaults in MySQL 5.7 that will cause issues for existing applications if not properly tested, so it is advisable to proceed with caution when upgrading to MySQL 5.7.

One of the more interesting keynotes at the conference was by Steaphan Greene from Facebook. He talked about the WebscaleSQL project, which got its start a little over a year ago. The founders are four of the world's largest MySQL users: Facebook, Google, LinkedIn, and Twitter; earlier this year Chinese search giant Alibaba joined the project.

Each of these companies has a development team dedicated to maintaining their own branch of MySQL. The teams implement both bugfixes and enhancements. Although the bugfixes can be generic, the enhancements tend to be very focused on making MySQL operate better at scale. A typical enhancement: anything that reduces writes, or makes compression work better. Both have a lot of advantages when you process petabytes of data.

Traditionally these enhancements have been made available as open-source patches. This did not make collaboration easy, which gave rise to the WebscaleSQL project. Any bugfix or enhancement that gets committed to the WebscaleSQL code is useful for all partners and can be modified by all partners. The downside of this approach is that this is still a branch. If a new version of MySQL comes out, all the patches will have to be reintegrated in that new version. Currently WebscaleSQL is based on the latest point-release for MySQL 5.6 and it is very unlikely that there will be a WebscaleSQL version based on MySQL 5.7 or even 5.8 for this reason.

A better approach for these companies is to submit code changes to Oracle directly. For bug fixes this is already possible since Oracle recently moved their code to GitHub and started accepting pull requests. Unfortunately Oracle does not allow larger code changes. Instead all 5 partners have agreed to make all their code available to Oracle under the Apache Common License in the hopes that Oracle will integrate the proposed changes into MySQL. Additionally, Percona and MariaDB have also signed on and are also making their code available under the same license.

It seems like MySQL should be able to make great strides forward if these 7 companies collaborate with Oracle to make MySQL better. Although Oracle has improved the quality of the releases a lot since taking over (5 years ago now), there is still a backlog of bugs that need to be fixed. Oracle did not respond in their keynote, but it is important to note that they're not opposed to collaborating. For many projects Oracle already has worked together with these companies, so hopefully this will be a logical next step.

The community as whole stands to benefit if Oracle opens themselves up to this opportunity, but there's an obvious downside for Oracle: these new enhancements can diminish the software enhancements that are part of their MySQL Enterprise offering. On the other hand, MySQL Enterprise also offers services and tools, so the impact will be limited. As an example, the thread pool is a feature that is only offered in MySQL Enterprise, but both Percona Server and MariaDB have their own implementations in their free versions. So if Oracle opens up, it may actually have the positive side-effect of pulling people back from branches and forks into the MySQL fold.

It will be interesting to see how things are going to develop.