Note: If you read this post, you will likely think that I am an Oracle-basher. That is not the case and that is not the purpose of this post. Oracle is a fine company and companies do what companies do. If companies do not do what is in the best interest of shareholders, the management should be fired. My point in this blog post is a concern about how open source communities cede technical leadership to commercial companies and think that in the end the open license will save them.
So for the simple minded – this is not Oracle-bashing – I am trying to point out mistakes that can be made in open source projects. I am not anti-commercial – I am pro-commercial – I just have very strong opinions about how Open Source should be run (see my previous blog post).
Many people think that simply releasing source code under an open license such as Apache or GPL is “good enough” protection to insure that software will always be open. For me, the license has always been a secondary issue – what matters is the health and vitality of the open community (the richness and depth of the bazaar around the software).
We see a perfect example in Oracle’s recent purchase of Sun which ends up with Oracle “owning” the copyright for MySql and the commercial enterprise which holds the MySql developers. One might think that having MySql under the GPL license is sufficient protection that keeps Oracle from going proprietary and commercial with MySql, thus deriving the market of the only real alternative to Oracle (sorry Postgress).
So why then is there hue and cry throughout the land at this and 18,000 people signing a petition against Oracle getting control of MySql:
Thousands sign petition to protect MySQL from Oracle
Why the fuss – “alles uber open” – right? GPL is the license that is supposed to protect us, right?
While GPL is a great license, it has one flaw. While folks other than the copyright owner are not allowed to change the license in the code, and must publish all modifications to the code if the code is redistributed (copyleft), these rules do not apply to the copyright owner. The copyright owner cannot revoke the license retroactively on code that already out there. Those who have an old copy can keep their copies and even modify their copies and create a whole new line of development if they like.
But the copyright owner can fork a copy from the open copy and change the license in the forked copy. And then if that forked copy is seen to be the best copy by the market, folks will use that copy.
So here is my hypothetical doomsday scenario. Oracle gets the copyright to MySql and lets everything settle down a bit so people are lulled into a false sense of security. Then, Oracle subtly forks the code in some next version – say MySql 7.0 and makes a bunch of really sweet changes – like making the SQL syntax completely compatible with Oracle. They give this version away for free including source code – but not under GPL – under some license like the “Oracle Open License”. At that point we are like the frog in the water about to boil – we figure – “That is not so bad” and go along with the changes and even start to use the new features – perhaps without knowing it. They release a few more versions for free – but at some point (perhaps MySql 10g) we only get MySql Express free and the super-duper MySql 10g is only available to folks who have Oracle.
By then we will realize we have been had – but it will be too late – by letting Oracle pick up the tab, we will have lost the ability to form a bazaar around the product. And since all of our software will be using features that are not present in the latest GPL version it will be hard to go back to that version and pick up. By then MySql will be so complex that it will be impossible to build a new bazaar around it fast enough to keep up with innovation. So the bazaar will never be rebuilt and we will happily buy all our produce at the Super Walmart because it is warm and well-lit all the while publicly bemoaning the loss of the farmer’s market.
I should reiterate at this point that I am not bashing Oracle I am trying to explain that open source projects make choices and to make sure to look at *who* is the copyright holder of your open source (particularly GPL source) and think a bit about worst-case scenarios.
So what is the solution to this? Well for MySql – there is little hope for a solution – any sense that there was a real open-source community (i.e. a bazaar) was gone a long time ago – we have been taking GPL code from MySql, Inc for a long time without much thought – they took care of everything and we followed like happy contented livestock (where is this semi truck going?). What we were doing as MySql gained market share is increase the value of the person or organization holding the copyright. We made MySql, Inc. rich when they sold to Sun. That did not feel so bad (frog in the water) but now with the stroke of a pen – Sun is purchased by Oracle and the water is feeling a bit warm.
The solution for this for open source projects is to make sure that they never let the bazaar go away. The bazaar must make the technical and leadership decisions about the product directions. If this is left to “professional staff” or the “open source company”, the volunteer community will go off and find other things to do and then much later realize that the strength of the bazaar has atrophied so badly that they can no longer stand on their own. You should watch the movie Pappillon (1973) and see the scene when he gets out of solitary confinement.
One last point – so far I have talked mostly about GPL licensed software and not Apache licensed software. GPL is distinct in that to take a product proprietary you must buy-out the copyright owner. This can be difficult to do since most folks in Open Source with their names in the copyright have very high integrity. And in other situations copyright is held by a non-profit (a good thing). Apache licensed software is subject to these problems without even buying the copyright from the copyright owner – proprietary forks are allowed and encouraged by Apache. Probably the only problem with GPL in this situation is that folks think it is foolproof and unbreakable and so they worry less about the proprietary fork scenarios thinking that GPL solves everything. When code is licensed Apache, we are always aware of the proprietary fork scenario and think more deeply and regularly about the issue. So when it happens to GPL software – folks are *really* surprised because they thought it could never happen because “GPL is flawless”. I don’t want this to be a GPL versus Apache discussion – my only point is about not losing the non-commercial community around a product regardless of the license in use.
End of rant – and remember this was not Oracle bashing. I have great respect when corporations maximize shareholder value – it is what they do.
Successful open source projects need to make sure to feed and take care of their bazaar – their volunteer technical core for the product. Be very wary of the “get resources quick” or “get results quick” schemes where you cede leadership to something or someone in the cathedral.