MySQL@Facebook team have recently published an Online Schema Change code for non blocking ALTER TABLE operations. Thumbs Up!
The code is derived from oak-online-alter-table, part of openark-kit, a toolkit I’m authoring. Looking at the documentation I can see many ideas were incorporated as well. And of course many things are different, a lot of work has been put to it by MySQL@Facebook.
openark-kit is currently released under the new BSD license, and, as far as I can tell (I’m not a lawyer), Facebook’s work has followed the license to the letter. It is a strange thing to see your code incorporated into another project. While I knew work has begun on the tool by Facebook, I wasn’t in on it except for a few preliminary email exchanges.
And this is the beauty
You release code under open source license, and anyone can pick it up and continue working on it. One doesn’t have to ask or even let you know. Eventually one may release back to the community improved code, more tested (not many comments on oak-online-alter-table in the past 18 months).
It is a beauty, that you can freely use one’s patches, and he can then use yours.
And here is my concern
When I created both openark-kit and mycheckpoint, I licensed them under the BSD license. A very permissive license. Let anyone do what they want with it, I thought. However Facebook’s announcement suddenly hit me: what license would other people use for their derived work?
The OSC has been release under permissive license back to the community (again, I am not a lawyer). But, someone else could have made it less friendly. Perhaps not release the code at all: just sell it, closed-source, embedded in their product. And I found out that I do not want anyone to do whatever they want with my code.
I want all derived work to remain open!
Which is why in next releases of code I’m authoring the license will change to less permissive and more open license, such as GPL or LGPL. (Of course, all code released so far remains under the BSD license).
stargazer, sorry i got it wrong what you wrote, i was in rush
i agree with you
Shlomi, many thanks for your openark-kit, especially for oak-chunk-update.
I’m going to delete about 70-80% from 50M records InnoDB table in production environment. So oak-chunk-update should save me at least 3-4 hours of downtime.
Vitaly [I was on you mysql performance course last year]
@Vitaly,
Good to know it is being put to good use!
Shlomi,
There is a very important philosophical reason to use the GPL. My next bit may sound too self important or the like, but philosophy is like that.
Here is a claim: Human progress is made up of mechanisms in society which make people co-operate more when they short term interest is to co-operate less. Usually this also involves serving some of the other self-interests that these people have (in the end people always serve their own self interest).
Examples:
– marriage: the father (usually) would leave the mother after childbirth. In early societies we would be huddled in clans and so the clan would, communaly, take care of the infant. But today there are no communities like that so the marriage idea was born in order for the mothers and childs right to be protected. Ofcourse it gives some guarantees to the father too. But in essense the marriage concept is about trying to force fathers to co-operate with their families.
– law and police: forcing all people to co-operate (sometimes against their will!).
– taxes: no one likes paying them but there would be no state without them.
– the UN: trying, by force of groups of states, to force states into co-operation.
– capitalism – trying to encourage people to serve their own ends not by killing other people but rather by selling things to them. This selling of products usually forces one who wants to go down that road to form a company which is a bunch of people co-operating. With no incentive for profit this would not have happened.
And finally the GPL. The GPL forces (again, not in all situations) co-operation amongst people making software. They may not like it at times (as they may not like taxes) but in the long run their interests are served better by the GPL than the BSD license.
So there is a very important philosophical reason to prefer the GPL
Mark
PS. The different between co-operating against my will opposed to co-operating out of consent is not as important as some people would like to believe (if I park my car in the right spot because I payed a fine previously and would like to avoid a further fine am I doing it out of my “free will” or out of “forcing” by the government ? Probably both. But it does not really matter which as long as large groups of people co-operate…).