2011-09-19

Oracle adding close source extensions to MySQL

Oracle has now officially announced that MySQL is not a full free software project anymore and that they will go for an Open Core model.

This is inconsistent to the original MySQL business model. The main strength of MySQL has always been that all MySQL source code was freely available. It was thanks to this that MySQL got widely adopted and got to be used by tens of millions of users.

This was a fact that the MySQL board and Sun understood. Closing the MySQL server code base in any manner would be bad for long term business.

It's true that we in MySQL Ab did have some people, notable persons who came from the commercial world and did not understand or believe in free software, that spoke strongly for an open core model where some parts would be open and others closed. Initially they could not do this, mainly thanks to the founders shareholder agreement which guaranteed that the MySQL server would be open source. When Sun bought MySQL, and the shareholder agreement expired, they saw their chance and announced that backup would be a commercial closed source extensions. This initiative was however quickly killed by Sun's management who did understand the true value of MySQL as an open source project and by making it closed source they would have made it less valuable.

One of the reasons MySQL AB did not need an open core model for it's business was that since MySQL is an infrastructure product that is easily embeddable into other products, we could sell licenses to those who wanted to embed MySQL into their product but did not want to make their product open source. (Dual licensing).

So what's so wrong with Open Core?

As a business model, especially to bootstrap a business, Open Core is not a bad idea. It gives you some leverage with your users to get part of your development paid for. This is however done at the cost of fewer users and a less adopted project. Many projects however abandon Open Core models when they grow as open source gives them more users and thus more value.

What is most important to understand about an Open Core project is that it has nothing to do with an open source project. If you are depending on a single closed source component then you have to regard the whole project as a closed source project as you lose all the benefits of open source:
  • You are depending on one vendor.
  • You can't do any bug fixes yourself and you can't contract anyone except the original vendor to get things fixed.
  • You can't examine and improve the product (not any part of if).
  • You can't use any open source or commercial extensions from anyone else. This is true also for any plugins that access any internal parts of the product (which is true for most MySQL plugins).
  • You are limited to the platforms that the original vendors makes available. (In MySQL's case you can't for example use the new commercial features on RedHat 6 as it's not a supported platform).
  • The builds you are using are not tested anymore by millions of users (more bugs).
  • The product is not checked by the open source community for security problems or back doors.
  • The new features will not be adopted by (and may even cause conflicts with) other open source projects.
  • You are subject to one vendor's price politics which they can change at their convenience.
What is interesting with the new commercial features is that parts of them where not developed by Oracle. The thread pool was originally developed by Ebay for MySQL 5.0 and contributed to MySQL to be include in MySQL 5.1. Only the new scheduler interface code was added to MySQL 5.1 while the thread pool itself was added (but accidentally with a slower implementation) into MySQL 6.0. Oracle never back ported the thread pool code to the MySQL 5.5 community version and now also the MySQL 6.0 tree is deleted.
The new pluggable authentication, which makes the new PAM authentication possible, was developed and contributed to Oracle by Sergei Golubchik at Monty Program Ab.

The good news is however that the most important feature, the improved thread pool, is easily duplicated in MariaDB. We have had a thread pool in MariaDB since 5.1 (better than was in MySQL 5.1) and we are working on a new one for MariaDB 5.5 which we expect will have similar speed gains as MySQL enterprise. MariaDB don't yet have PAM authentication but the MariaDB developers are prepared to develop that if there is a need for it or if someone contributes the code to us. This should be relatively easy as we have the same pluggable authentication protocol as MySQL.

Read also Stewart Smith's thoughts and the comments to his blog about this subject.

27 comments:

Davi said...

> The thread pool was originally developed by Ebay
> for MySQL 5.0.

That's not the same thread pool code.

> It was added (but accidentally with a slower
> implementation) into MySQL 5.1 and then
> removed by Oracle from MySQL 5.5.

It never made it into MySQL 5.5 (and 5.1 IIRC), so it could never have been removed.

Monty said...

To Davi:

The idea and most of the base code that made it possible to develop a thread pool at all is the same as from Ebay.

The code was in MariaDB 5.1, which MySQL 5.5 is based one, so it had to be in 5.5 tree at some point. The scheduler.cc that come from the work with Ebay is still part of MariaDB 5.5 and I am sure that the new thread pool is based on that code...

Davi said...

Yes, it uses the scheduler API. Yet, when "thread pool" is mentioned, it refers to the actual implementation that uses this interface.

lsmith said...

Monty your points on the open source benefits lost are sufficient to bring home your point. Pointing out that the idea came from Ebay is helpful in understanding exactly that.

Speculating on what the code today's version is based on and what MySQL version it was included in without references only hurts your argument though.

Ashwin said...

its time to find promising open source alternative to mysql. i work on python, django and i find no drivers, support for mariadb. need to wait till there are drivers to all languages, opensource projects, tools like mysql workbench.

Monty said...

Davi: Thanks for suggesting some corrections to the blog post to make things more accurate. I have now updated the blog accordingly.

TomKro said...

Monty, If Monty Program AB contributed PAM authentication to MySQL, why would it not be in MariaDB?

Monty said...

To Ismith:
I left out references to keep things short.

The main point was only that the thread pool was something that was contributed to be part of the open source version of MySQL and not it's not anymore. That part of the code is newly written doesn't change this fact.

Monty said...

To Ashwin:
MariaDB is full open source alternative with MySQL. It's also binary compatible drop in replacement. All old MySQL connectors will work with MariaDB and the data in disk is also identical.

Monty said...

To TomKro:
Monty Program Ab contributed the pluggable authentication interface to MySQL. This interface makes it possible to easily add new authentication modules, like PAM, to MySQL. Monty Program Ab didn't contribute a PAM module and we don't have one in MariaDB (yet).

hingo said...

lsmith: The problem is that we cannot know what code the now released feature is based on, since - you know - it is closed source...

henrik

MCarney said...

Great post Monty

Flakerim Ismani said...

Can we (you) fork it?

Amir Hooshangi said...

Monty, as i read your posts often, i see you mostly have sided free software but got no clue why you sold the Mysql if your model was right ? in fact if it was going well why didn't you continued it ?

Monty said...

To Flakerim Ismani:

MariaDB is already a binary compatible and enhanced fork of MySQL, so that part is already done. We are now working on open source versions of all the features that Oracle has in their closed source version of MySQL and we will release these shortly in MariaDB 5.5

Monty said...

To Amir Hooshangi.

I have in my earlier blog posts tried to explain how and why MySQL got sold. See the comments in the above link!

The short answer is that in 2001 we took in investors to get more money to put into developing MySQL further. This enabled us to add all the features you can find in MySQL 4.0 -> 5.1.

What we, the founders of MySQL, lost was the ability to control MySQL future after it would be sold (investors always gets the right to sell the company sooner or later). We could in some regard control who would buy it, but not what they buyer would do after the deal would be done.

I was very happy with having Sun as a buyer, but could not predict what happened later.

I am however doing my share now to ensure that MySQL, under the name of MariaDB, will survive independently of what Oracle does to MySQL.

Anonymous said...

Monty,
The story I seem to remember reading was that you originally wanted to make MySQL proprietary, but only opened it up so you could use GNU readline in the client? What was the actual decision process?

Black Hand said...

Was not OpenDatabase Alliance funded for this purpose ?

what is the collaboration status between Drizzle devs, Percona, MariaDB, ... i think that this new change from Oracle affect ALL this ecosystem too.

Dwarden said...

my bet goes on that we will see soon™ LibreSQL :)

Monty said...

To Anonymous about GNU readline

The GNU readline library had no affect on our decision of making MySQL GPL and we never had any plans of making MySQL proprietary.

MySQL was from the start intended to be free software and all code should be always available to everyone. In the first few years (this was before Open Source) we had a shareware license (to bootstrap the company) that said that you could use MySQL freely but if you made money of it you should kick something back to us. In 1999 we changed MySQL to be under the GPL license as we now could afford to do it.

We did ensure that we had full ownership of the MySQL server code base to be able to do dual licensing of the server. This was needed to be able to hire developers to work full time on the code base. In effect those who wanted to use MySQL, but where not comfortable with making their code free, paid for the development of the code base everyone was using. A good deal for everyone.

Monty said...

To Blackhand:

The OpenDatabase alliance was formed to bring all open source databases under one common organization that could work promoting and drive business for all of us. This has been on hold mainly because we have not yet found a person to drive this organization full time. Without a driver it can't have a notable impact.

The collaboration between Drizzle, Percona and MariaDB has not been as active as we would have hoped for, mainly because no one of us have had free resources available to work on active collaboration. MariaDB has most of the code in Percona and Percona has taken some patches from MariaDB. MariaDB has friendly talks with people from Drizzle who keep us up to date with the changes that happens in Drizzle that may be of interest in MariaDB.

Javin Paul said...

I knew this was coming, how long Oracle can give you free things that not in there nature , I am afraid if they do the same with Java. These are the technology adopted by millions because of open-source and now if they made it license, lock the code than who knows.

Anonymous said...

Cleanup and make the MariaDB site look better, if it looks more professional its easier to convince the managers to accept it, the site looks horrible and very amateur this reflects badly on the software

Anonymous said...

Biggest appreciation for your work, from just another open source enthusiast.

Monty said...

About: "Cleanup and make the MariaDB site look better"

Which site are you referring to:
* mariadb.org ? This is just a landing page to direct to the different sites that is involved with that MariaDB project.
* askmonty.org? This is an effort to document and communicate about all things related to MariaDB & MySQL.
* Monty Program Ab? This is where my company provides services around MySQL and MariaDB.

The two first sites are community sites and the look and feel of them
are largely decided upon the help MariaDB gets from that community.
They are optimized for users and developers, not for the commercial
decision makers. For this we have Monty Program Ab or partners like SkySql

gsteenss said...

High time for: http://fossforce.com/2011/09/will-oracle-turn-mysql-into-crippleware/

Buy Adiphene Online said...

I just several months ago that MYSQL recently owned by Oracle. That's a nightmare for opensource lovers