MySQL: Free Software but not Open Source

The title of MySQL’s website states that they are the world’s most popular open-source database. This is false; MySQL is not an open-source database. That assertion is a fact, not an opinion.

MySQL is Free Software, licensed under the GNU GPL. People frequently use the two phrases “Free Software” and “Open Source Software” as synonyms, but there are very large, very important differences.

The difference between Free and Open Source

Open Source is much more of a development methodology than a philosophical standpoint. The first thing on the Open Source Initiative’s website is this introduction:

Open source is a development method for software that harnesses the power of distributed peer review and transparency of process. The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in.

In contrast, Free Software is not about development practices at all. You can develop Free Software any way you like; what makes it Free is the license. Free Software is about protection of rights and freedoms. It is a moral and ethical platform. The promise of Free Software is quite different from “better quality, higher reliability…” Free Software is not about quality or reliability.

So why is MySQL not Open Source? Simple. Sun/MySQL uses a closed development model. Nobody can get code in from the outside without accepting a Contributor License Agreement (CLA) which requires surrendering important rights, including ownership of the code. Sun/MySQL controls the code absolutely and maintains ownership of it. And even people who have signed the CLA report their patches stagnating — often for years — and still not being accepted into the source. This is not Open Source.

Open Source software is usually maintained, owned, and controlled by a decentralized network of peers. This is exactly the opposite of MySQL. You cannot get more opposite. The differences are often summarized as the cathedral versus the bazaar. I’m not sure this analogy always holds or is always useful and accurate, but it’s a helpful piece of common vocabulary.

Why this matters

This matters because both Freedom and an open development model are necessary to an empowered, enlightened, free society. Licensing isn’t the only thing that matters: ownership matters, too. So does control.

Google’s patches to MySQL are a good example of excellent code with many simple, highly useful features that have not been included into the official MySQL distribution. And there are no signs of that changing, as far as I can see.

I’m not the only one who notices this. Here’s another quote:

With all due respect to Marten, there is a significant difference between the captive open source development model for MySQL and the community open source development model for PostgreSQL.

If this interests you, perhaps you would like to join the discussion on the oursql-sources Google group.

Technorati Tags:, , ,

You might also like:

  1. Announcement: Xaprb scripts are re-licensed

15 Responses to “MySQL: Free Software but not Open Source”


  1. 1 Antonio Serrano

    Good article!

  2. 2 Sergei Golubchik

    I’m sorry, but this is an authoritative definition of the Open Source:

    http://opensource.org/docs/osd

    According to it MySQL is Open Source, as far as I can see.

  3. 3 Kevin Conery

    Did you know that a lot of “open source” projects require a CLA?
    Did you know that all projects hosted by the Apache Foundation require a CLA?
    Did you know that all projects under the Free Software Foundation require a CLA?
    Did you know that a lot of patches from Google have been merged?
    Do you imply that only projects that accept outside contributions are open source?

  4. 4 Jo

    Every project has it’s rules for gaining write access to a primary code repository. In many projects the primary maintainers need to like you, then yopu get access. In the MySQL case you have to sign a paper. That’s a thing FSF and ASF do, too btw. - since getting the copyright of the code is needed by them for being able to fight for the rights in court in case somebody steals the code. So your conclusion about the CLA is simply wrong imo.

    But yes there’s a problem in the MySQL case: You already quoted it but missed that point: It’s the part about “transparent processes” - that is what is missing with MySQL. MySQL has been a company shutting all information down while preparing for going public, now they were bought by a company which is way more open so I’d expect that to change, Sun might not be perfect and fully open either (I don’t know that) but a big step more open at least.

  5. 5 ZUrlocker

    Personally, I think there are two distinct issues: open source (which in my view is governed by OSI license compatibility) and accepting community contributions. We were pretty awful at that for a long time, but we have made improvements in recent years. So maybe we suck less at this than in the past, but there’s still room for improvement.

    I think having a CLA is a good thing; it helps us make sure that we know where code comes from and are not succeptible to some vague SCO-like accusation where we cannot determine the provenance of source code. Is it a perfect system? No, but in our view its good to have some controls in place.

    We have been slow to incorporate contributions, and honestly, the quality bar is very high. So sometimes after trying to work with contributors, we have rejected code that does not meet our quality standards. (Not that the effort to contribute code isn’t welcomed, but the last thing we want to do is destabilize the core of the database because someone is not familiar with the internal architecture. We don’t always get it right, but it pays to be conservative in this area. (Note, the work by Google is great and we’re actively working with them and the InnoDB team to figure out the best way to test and then incorporate this code.)

    BTW, we’ve also kicked off some work with Google’s Summer of Code program again this year. More information is available here: http://forge.mysql.com/wiki/SummerOfCode2008Ideas

    Bottom line: we are trying to improve our responsiveness in reviewing and accepting contributions and it’s an area that Jeffrey Pugh, VP of R&D is very interested in improving. (He is also working directly with some of the contributors you’ve mentioned.) But our actions here will speak louder than my words.

    Of course, different products and projects have different models. MySQL has a company-led development model which is very different from some other open source projects which are community-led. I’m not saying it’s better, but it is different.

    Still, there is room for improvement, and we appreciate the input. I don’t know that we will satisfy everyone’s definition of open source at all times, but we’re listening and learning.

    –Zack

  6. 6 Xaprb

    OK, I’m going to disagree with everyone on some points, but I want to state up front that I think we probably agree on more than we disagree.

    Sergei, that’s a partial, very narrow definition: it’s the necessary but not sufficient conditions of distribution and so on. That document doesn’t address the breadth of scope introduced in the OSI website (including the intro paragraph on the front page), key books from key Open Source figures (including the ones who invented the movement), and the general public’s concept of Open Source. If that document is the sum total of Open Source, a lot of leaders of the Open Source movement are spreading misinformation. But I don’t think so. I think the spirit of Open Source is much more relevant than the letter of that definition.

    Kevin, I did know all the things you mentioned, and I left them out intentionally. I might have profitably omitted mention of the CLA, too; it is a hot-button issue (as proven by the other comments on this post — why is it a hot-button issue, BTW?) and that distracted from the focus of the post. And yes, I would absolutely say that a project that accepts no outside contributions is not Open Source.

    Jo, I think if I had not mentioned the CLA prominently you and I would find we have a lot in common. However, in general I would say that to get code into the server is much harder than signing a piece of paper, and much harder than it should be. I also don’t think lack of transparency is the problem. Just telling people what is going on is not the same as giving them a say in the process. MySQL has focused pretty hard on being more transparent, but I think this effort is not the end of the road. (It is definitely a precondition to more truly opening up the server, and I applaud it even though I don’t think it’s all that’s needed). I do look forward to seeing what changes Sun makes.

    Zach, I appreciate your comments on the CLA; I will write more on what I think about the CLA another time. I’m not sure that the quality bar is really the issue here, either. Community code is sometimes higher quality even than internal code. I’d name some bug reports, but I don’t want to make personal enemies out of the associated developers. However you look at it, I think the… ummmm… not-so-good release and development model is responsible for the fear of poor quality code, and putting restrictions on the contribution pipeline is a symptom of something deeper. I and many others have pointed out that there is a much better way to vet code for quality: let the community do it. Finally, your point about ‘different models’ is very much along the lines of what I meant to say with this post.

    To wrap up: I knew this post would generate strong reactions, and I intentionally wrote the headline and first few sentences to bring my view into sharp focus. I felt it was very important to say what I’ve tried to say in this post, regardless of differences of opinion. I’m actually happy that dissenting voices are appearing here. It shows that you care. Thanks for writing in.

  7. 7 Xaprb

    Ah — Sergei, I meant to point out something else about the Open Source Definition: the preamble. “Open source doesn’t just mean access to the source code. The distribution terms of open-source software must comply with the following criteria:”

    Again, this document is quite narrowly focused and incomplete IMO. (And I did know about it before you mentioned it, by the way).

  8. 8 Sheeri K. Cabral

    For semantics’ sake, I would say that MySQL makes an open source database, but they’re not an open source company.

  9. 9 Lukas

    Generally my expectation is that in order to contribute I need to take technical hurdles not legal ones. That I am not allowed to steal someones copyrighted code is of course still a fact of life, but one that I do not see solved by a CLA. Any document that achknowledges the existance of software patents is somethng I am more than hesitant to sign. They do not exist in my world.

  10. 10 Sergei Golubchik

    Baron, let put it that way, you wrote “MySQL is not an open-source database. That assertion is a fact, not an opinion.”. I provided an authoritative definition. It’s also in Wikipedia in the Open Source article. When replying to my post you used words like “IMO”, “I don???t think so”, and “I think”. Which proves the point - it was an opinion, not a fact :)

    When talking about opinions, for me MySQL is open source, because the sources a, not surprisingly, open - one can download them, read and modify them. That was the reason why I chose MySQL in the first place when I needed to implement a fulltext search solution but was too lazy to code i/o, client-server protocol, storage, and all other stuff. It was in 1998 and MySQL wasn’t even GPL back then, but the sources were open.

  11. 11 Xaprb

    Sergei, the Wikipedia article (which I have also read) just reinforces my point of view. http://en.wikipedia.org/wiki/Open_Source begins with this: “Open source is a development methodology,[1] … The open source model of operation and decision making allows concurrent input of different agendas, approaches and priorities, and differs from the more closed, centralized models of development.” That doesn’t describe MySQL. And note [1] cites Richard Stallman’s opinion, from which mine are derived: “Open source is a development methodology; free software is a social movement.” And the reference, explanation and historical notes on the Open Source Definition reinforce my previous comment, too: the OSD bears on whether a license complies with Open Source, not whether a development methodology is Open Source.

    I like to say “in my opinion” to avoid being obnoxious. As I said before, I was deliberately obnoxious in the title and introduction of this post to make my point. What I said is easily and independently verifiable: access to the source code, and the right to change it, is not sufficient for a product’s _development methodology_ to be Open Source. There is no question that MySQL’s development is the reverse of Open Source: it is closed, monopolistic, tightly guarded and even exclusionist at times.

    We could go round and round on this for days, and I’m afraid we will not see eye to eye.

  12. 12 Xaprb

    All,

    This post and its comments have been on my mind over the last few days. I apologize for the way I’ve approached this topic, and how I’ve rejected your points of view without really listening. I’m going to try to be less divisive and less “right” in the future.

  13. 13 Lukas

    I would not be so hard on yourself here. Whatever the definition of open source, I guess your point is that you are concerned about how “open” the MySQL development really is. Of course you can fork, but in the interest of staying feasible, one would instead hope that contribution to the core project would be easier.

    Why are other projects able to incorporate patches within a reasonable timeframe? Is the MySQL source really so unwieldy, that community patches are so dangerous to break stuff? Or does it just take so long to determine if any patch from anyone does not break stuff? Or what is really the problem here?

  14. 14 James Dixon

    Open source is a collection of (not uniformly agreed-upon) principles that collectively form a philosophy. If open source is a methodology it is the worst ever invented. Lets take a similar example: agile is a philosophy whereas Scrum and XP are methodologies. A methodology at least has to describe how things get done. Every open source project does things differently and very few of them tell you how they do it.

    James Dixon

  1. 1 Postgres OnLine Journal

Leave a Reply

Please do not use this blog to get help with problems or bugs in Maatkit or innotop: use the Sourceforge forums, mailing list, or bug trackers. If you're asking for help with MySQL, please use the MySQL mailing list instead.