February 23rd, 2010


Drizzle, Licensing, Having Honest Conversations with your Community

I pulled this from a quote on yesterday's Slashdot story about MySQL Licensing where the author of the quote mentions Drizzle's licensing terms:

"you require the code to be under BSD"

This is actually a myth, we don't.

If you look through the Drizzle codebase you will note that very few files have BSD headers, and all that do?

They are a part of new systems that have been written since the fork of the project, and not all of these are BSD.

Why is this?

A large part of Drizzle is derived work from MySQL, and in all cases there we inherited its GPLv2 license on files. Bug fixes and code refactoring projects all fall under the umbrella of "derived work". In all of those cases the work was made under the GPL but no copyright assignment ever occurred. To understand ownership there you would need to look at the revision history to the code. We have never made any effort to track anything more then "where did the code come from".

I am a big opponent of copyright assignment in open source. How do you have an honest conversation with someone where you say "yes, I will need the work you did for free, to be assigned over to me, so that I can make money on it"?

Or better put:

"Here is $100 for the code you did, would you like some trinkets and beads to go along with that?"

We never did copyright assignment for Drizzle, and in no other project I have run personally have I ever done it. It is not a conversation I can have with a straight face with anyone. If you need commercial rights to your work and you want to do a true "quid pro quo"? License your code under the BSD license in the first place, that way both you and the contributor are on equal footing.

Does this mean we are a free for all when it comes to code? No, we track ownership. We know where every single line of code came from thanks to bazaar. If someone wanted to "poison" the codebase we would know exactly who that was. We would point the copyright owner to the offender, remove the code, and help with the prosecution of said individual. We have an active discussion going on at the moment about the future of our copyright headers, and one option we are considering is just replacing the copyright owner notice with a "Please see revision history for complete ownership information".

Are all of the files in Drizzle GPL? No, we do have some which are BSD.

I am a big fan of the BSD license and I typically suggest to developers that they use it for certain projects. As a license it links well with other code, and by establishing new plugins as BSD the original author can pull from any bug fixes that are made to the code. As an example Patrick Galbraith established the built in drivers that allows Drizzle to speak with Memcached. He has pulled code from the Drizzle driver and used that for his MySQL drivers. If those drivers had been done as GPL he would have not been able to pull code back into the MySQL Memcached drivers (which are BSD).

The GPL works just fine as the license for the kernel of Drizzle. I don't see that changing. In discussions with the other core authors, there has never been a push to "rewrite" the entire internals just to change the license. It is more work then it is worth, and it is not needed. The micro-kernel design means that going forward most of the work is pushed out to the libraries that link us to other systems. Work in the kernel is all about making those interfaces robust and creating more opportunity for plugin writers.

A final note on licensing and direction.

We never had any ambition to aim Drizzle at the deeply embedded market. Taking Drizzle, compiling it into a library, and linking it against another application is not a goal that the core team has ever had. If we had ever wanted to go into the world of deeply embedded databases we would have needed to have done code assignment or switched the entire license of the program.

In the deeply embedded world SQLite reigns supreme. SQLite does an awesome job in that space, and we see zero reasons to go head to head with it. If I needed a deeply embedded database I would just use SQLite, I wouldn't bother to write a new one.

Drizzle's core will stay GPL, and we continue to take contributions without code assignment. If you are a programmer I believe you can appreciate the merits of why we do this.

If you are a developer and you find yourself in the peculiar position of being asked to sign over your work? I would encourage you to take a hard look at why this is being asked, and see how comfortable you are with the value you are getting in return for your work.

"you can't influence what Brian is saying..."

I both love, and appreciate this quote from Monty:

"You know Bryan and should know, as all his friends does, that you can't influence what Bryan is saying; He is always speaking his own mind!"

Ignore the spelling of my name, Monty is not a native english speaker, and writing for him is a chore (which I can relate too, since writing to me is a chore as well... and to the people who I ask to edit what I write).

Larry McVoy, yes the author of Bitkeeper, once told me that while he worked at Sun that they had his workstation setup so that every post to Usenet, (or was it email in general?), got passed to a VP who would then decide if it was to be posted or not. My joke for the last few months has been "what, they only gave you a VP? I got a CTO!".

While at Sun, about every other week, either an email would be generated by about one of three people saying "can your believe what Brian wrote in a blog/comment/etc...".

Typically the conversation was "What did I post?", "Was I right?", or "What I said was the legal definition, right?". Some of the email I shared with other DE's at Sun, and there was a running joke about taking odds on what blog of the week would elicit "yet another email".

At one point I wrote a comment up about some licensing issue, and at the same time, not in any co-ordinated manner, Tim Bray and Simon Phipps did as well. Who got the complaints? I did.

Sun was a large company, and some folks really have nothing better to do with their time, and there was a general consensus with both my peers and some of the VP's I shared the emails with that this was the case. Once or twice offered to resign if it was really an issue, and I got back a very affirmative "that is not what the company would like".

When I write, I write what I think, not what other's tell me to write. When I get up on a stage and speak? That is all me.

For me to support something, I really need to be able to support it. Through out the years at MySQL I really never found that there was an issue with that. The MySQL internal "Discussion" mailing list was evidence of just how big of a tent the company was for opinions, much to the chagrin of some. I've never made my opinions secret about licensing. I didn't begin working at MySQL with a strong opinion against copyright assignment, but after watching the toll it had on the project I certainly gained one.

Now I work for myself. All opinions expressed are solely the opinion of me, myself, and I...

Occasionally though?

Those opinions are shared with others :)