The first prominent fork of MySQL 5.1 was Percona's. Up until that point Percona had been releasing patches to be used on top of MySQL. Percona as a company specialises in high-performance MySQL, it knows how to tweak every knob to get the extra transactions per second (TPS) customers need. It makes sense for its developers also to be able to tweak the code in a similar fashion, unlocking hidden switches, retrieving performance data, and improving some of the slower parts of the code.
They maintain a fork of the InnoDB storage engine called XtraDB which is included in their MySQL fork. This engine is backwards compatible with InnoDB and can be used as a drop-in replacement for it. As with the main server it adds more tuning options, more metrics, and better performance, especially when it comes to scaling.
Percona has come a long way in the last few years. It now runs one of the largest MySQL conferences in the world, taking over the slot that was previously occupied by O'Reilly's MySQL conference. It has recently started to create a new product based on MySQL called Percona XtraDB Cluster. This distributes Galera Cluster as part of Percona to give horizontal scaling on top of the vertical scaling its products already provide.
MariaDB was founded by Monty Widenius and staffed by several ex-MySQL developers. Their fork of MySQL is intended to add features and bug fixes that are not in MySQL. Just like MySQL with 5.5 and 5.6, MariaDB has cherry-picked some features from MySQL 6.0 and developed them further, as well as adding brand new features. It maintains the Aria storage engine, which was originally called the Maria engine in MySQL 6.0; it also includes several community engines such as PBXT, XtraDB and FederatedX.
MariaDB is currently developing version 10.0 of its database server. This could potentially lead to a break in compatibility with MySQL because a lot of parts of MySQL rely on version numbering to ensure compatibility. It appears to be a clear message that MariaDB intends to be a true fork of MySQL and could start to really highlight whether people are committed to MySQL or MariaDB. The developers are also creating their own cluster product based on Galera cluster, just like Percona. The closest thing MySQL has to this is MySQL Cluster, which appears to have a slightly different target audience, but could eventually reach feature parity.
The inclusion of MySQL in Linux distributions coupled with its ease of use is arguably the key to its original growth. Linux users tend to tinker with what is in Linux distributions and eventually apply what they know in industry. In recent months a few of the major Linux distributions have switched to using MariaDB instead of MySQL, most notably openSUSE and Fedora and now Slackware and Arch Linux. The reasons for this appear to be that it is currently a drop-in replacement with more features and that the developers appear to respond faster to security problems.
With future versions of MariaDB it will be harder to switch back to MySQL as the two deviate in features and compatibility. It is certainly conceivable that over time MariaDB could turn into the primary MySQL fork within the open source ecosystem.
MariaDB has recently started its own foundation, much like the foundations of many other open source projects. One of the goals of this foundation is that no one entity should shape the community. This, along with its inclusion into Linux distributions, appears to show that some are certainly trusting MariaDB more than they do Oracle's MySQL.
Drizzle started out inside Sun Microsystems as a fork of MySQL 6.0. The goal was not to maintain compatibility but to clean up the code by re-writing many parts of it to be much easier to maintain, to create a micro-kernel architecture, and to be much more community driven. It also follows SQL standards much more closely than MySQL. Once Oracle came along, the core developers moved on to Rackspace which sponsored development of Drizzle until the first GA. Drizzle can be seen as the first true fork of MySQL as it did not intend to maintain backwards compatibility. Development still continues with community developers and Google Summer of Code students.
Some of the staff in Rackspace who worked on Drizzle went on to work on the early versions of OpenStack, so one of the by-products of Drizzle is the continuous integration setup which went on to form the basis of the CI for OpenStack.
Facebook and Twitter
Both Facebook and Twitter maintain their own forks of MySQL. Both of these companies have very specific needs when it comes to performance and features (both included and removed). Their forks are designed to return the work they do back into the ecosystem and not to be used directly by other people. The work of both these companies often tends to be fed into other forks – including the original MySQL – sometimes needing re-writes to meet with the needs of general users, but keeping the same goal.
Many MySQL companies right now are looking towards the cloud. Drizzle was originally designed to work well in cloud environments with its own container-based system under development. MySQL and its many forks are now adapting to cloud-based environments as Database-as-a-Service becomes the next RDBMS frontier. Galera Cluster is one MySQL-related technology that is aiding this shift, so it is good to see that the MySQL forks are embracing this.
MySQL has apparently survived relatively unscathed so far living under Oracle's roof. The ecosystem has had to adapt to Oracle treating MySQL as a product even more so than Sun did. But the real test of Oracle's
intentions is less than two years away; it is still unclear what Oracle will do when it is no longer bound by its own assurances to the EU. It could eliminate the uncertainties by making a follow up statement
on its commitment to MySQL which could in turn be good news for the various forks of MySQL. Whatever Oracle does though, the MySQL business is still booming, especially for those who have prepared for the cloud.
Andrew Hutchings (LinuxJedi) is an Open Source Software Engineer and Project Manager working on OpenStack Platform as a Service for Hewlett Packard's Cloud Services division. Read more on his blog or follow him on Twitter.