I honestly thought this was over.. clearly I blinked.
To be fair, I stopped following it and then ignored most of the people who I disagreed with. To borrow a phrase from Linus Torvalds, "people who disagree with me are stupid and ugly." (I just recently watched his Google talk on Git)
I tried to be balanced and non-bias in my previous post, but I think I'll allow myself to weigh in with my opinion this time.
Theo started round two with a new thread on openbsd-misc. The bell was then echoed by kerneltrap.org and undeadly.org, which is where I saw it (with over 100 feeds, a local lug mailing list, and a couple others, I don't have time for openbsd-misc or lkml in the raw).
For the record, I completely agree with everything in Theo's post. Or at least, I agree with my interpretation of everything he said. I add that because of the large number of people who seem to disagree with things they think he implied. I saw no conflicting statements in his post, others did.
The real crux of the matter, as Theo pointed out, is the legal implications that are part of this "debate". These licenses are legal artifacts representing ideals. A copyright holder owns their work; it is their choice of how to distribute it. The license is that choice, put in pseudo-legalese.
I find law largely useless without looking at the intentions behind it. If we ignore the intent of the law and focus on the letter of the law... well that's like lawyers vs. judges. Lawyers try to use the letter of the law to their client's advantage, to make sure they get every right afforded to them by the law. Judges, on the other hand, have to decide whether or not the lawyer is applying the law in a way that is consistent with its intent.
When someone uses a BSD license for this, they are saying that you can use it as long as they get credit in the code and their license and disclaimer remain with their copyright notice. The GPL is very similar in this regard, just adding some further details about reciprocity, but I see them as largely the same.
They both have the same spirit of intent behind them: this code is free for everyone to use, please take it and make it better, faster, stronger, and if you can just contribute, that'd be great (sweet, Daft Punk reference and Office Space quote in the same sentence).
If I write a piece of open source software, my intent will be the same whether it is a BSD style or GPL style license grant. What I want is for anybody to be able to use my creation and help make it better. If I use a BSD license, I'm giving the licensee the chance to contribute back out of the goodness of their heart. If I use a GPL license, I'm making that social obligation a legal obligation (although the enforceability of the GPL is still widely debated).
I did a nice analysis of the different meanings of "dual-licensed" in my last entry. Well, I thought it was good, at least.
Anyway, my point is: removing license headers is wrong when the license says it must be included, unless all the involved copyright holders agree, OR if the licenses explicitly allow this (requiring the copyright holders to have agreed previously).
Saturday, September 1, 2007
the little mole hill that could
Posted by Ryan Graham at 12:26 p.m. 0 comments
Wednesday, August 29, 2007
dual-licensed mole mountain
As is popping up in various places in my blog roll..
Someone proposed a patch on LKML that removes some BSD license headers and replaces them with GPLv2 headers. I've previously hinted at my licensing preferences, but they don't even come into play here, oddly enough.
I'll start with what I believe to be the logic of the people in favour of the patch. In code that is "dual-licensed" GPL/BSD, you must satisfy both licenses. Since the GPL is by far the most restrictive, the BSD license becomes moot and the code is essentially only licensed under the GPL because it's requirements are stronger. So removing the BSD license headers is basically like removing dead code.
The main opposition for this seems to be a bunch of BSD fan boys (as in a subset of BSD users) - and by that I mean they're the ones that are yelling loudest. This is probably how and why it spread so far, which is unfortunate.
From what I can see, there are some actual issues behind this though.
First of all, the word "relicensing" is really a bit of a misnomer in this context. Unless another individual is granted the right, through licensing, then only the original author can release their work under an alternative license. All of these licenses have one thing in common: they grant limited rights to the user of the code. Some think the BSD license is unrestricted, but the fact that you must include the copyright notice is actually a restriction. And contrary to some opinions, it doesn't give you the right to relicense the code.
Secondly, "dual-license" has different meanings in different contexts.
On the one hand, you have Qt and MySQL. Both projects are "dual-licensed" as proprietary code and under the GPL. In this case, "dual-licnesed" means that the original copyright holder (Trolltech and MySQL AB, respectively) offer their product under two distinct distribution models. You can use their product under the terms of the GPL, requiring all of your work be "infected" by that license, OR you can pay them a licensing fee so that you can use their product under the terms of their commercial licence, allowing you to do whatever you want with your source code without restriction.
On the other hand, you have code that was originally released under a BSD license by the author. This code is then extended by someone else. This second developer happens to like the GPL, so they tack the GPL on to the header, to cover their modifications. This code is now "dual-licensed" because it is covered by two different licenses. To use the code as it stands, you must satisfy the GPL AND the BSD licensing requirements, leading to my suspected logic described above. What really happens here is that the code becomes useless to a broad set of people because it is hard to separate the differently licensed code. You can't come along and relicense the whole thing as GPL without the permission of the original author who released under a BSD license.
And then on the third hand (yes, we're dealing with mutants), there is code that is explicitly "dual-licensed", where the file header has wording to the effect of "this code may be redistributed under the terms of the GPL OR the BSD license". This is the form of dual-licensing that actually works as people expect. You take the code, you modify it, and you release the derived work under your pick of the two licenses (or continue the dual-license trend), and everyone is happy. The copyright holder has granted you the right to do this.
In the end, the real problem is that the code in question is actually in two parts. One part falls solely under a BSD license, which can't be relicensed except by the author. Modifying this part in the Linux kernel and added a GPL header results in the second form above. The second part of that driver, however, falls under the 3rd variety (explicitly dual-licensed), and can therefore actually be relicensed as proposed.
In the end, what should have happened was something along the lines of:
"here's a patch to make some dual-licensed code GPLv2 only"
"hey, only some of that code is dual-licensed"
"oh? hey, you're right. my bad. fixed."
"cool. wanna grab a beer?"
Instead we got:
"here's a patch to make some dual-licensed code GPLv2 only"
"hey, that's not allowed! I'm telling!"
"oh? hey, you're right. my bad. fixed."
"too late, I've already told everyone on the internet and they're gonna come beat you up"
It even hit digg, so now we have a real party!
Assuming my post doesn't fuel the "debate", this should be over soon. As far as I'm concerned, the only result that matters is that it motivated me to write about it.
So go now and have non-discussions about this with your peers.
Posted by Ryan Graham at 7:46 a.m. 0 comments
Labels: BSD, GPL, licensing, open source