Matthew Garrett ([personal profile] mjg59) wrote2011-09-01 04:44 pm
Entry tags:

The Android/GPL situation

There was another upsurge in discussion of Android GPL issues last month, triggered by couple of posts by Edward Naughton, followed by another by Florian Mueller. The central thrust is that section 4 of GPLv2 terminates your license on violation, and you need the copyright holders to grant you a new one. If they don't then you don't get to distribute any more copies of the code, even if you've now come into compliance. TLDR; most Android vendors are no longer permitted to distribute Linux.

I'll get to that shortly. There's a few other issues that could do with some clarification. The first is Naughton's insinuation that Google are violating the GPL due to Honeycomb being closed or their "license washing" of some headers. There's no evidence whatsoever that Google have failed to fulfil their GPL obligations in terms of providing source to anyone who received GPL-covered binaries from them. If anyone has some, please do get in touch. Some vendors do appear to be unwilling to hand over code for GPLed bits of Honeycomb. That's an issue with the vendors, not Google.

His second point is more interesting, but the summary is "Google took some GPLed header files and relicensed them under Apache 2.0, and they've taken some other people's GPLv2 code and put it under Apache 2.0 as well". As far as the headers go, there's probably not much to see here. The intent was to produce a set of headers for the C library by taking the kernel headers and removing the kernel-only components. The majority of what's left is just structure definitions and function prototypes, and is almost certainly not copyrightable. And remember that these are the headers that are distributed with the kernel and intended for consumption by userspace. If any of the remaining macros or inline functions are genuinely covered by the GPLv2, any userspace application including them would end up a derived work. This is clearly not the intention of the authors of the code. The risk to Google here is indistinguishable from zero.

How about the repurposing of other code? Naughton's most explicit description is:

For example, Android uses “bootcharting” logic, which uses “the 'bootchartd' script provided by, but a C re-implementation that is directly compiled into our init program.” The license that appears at is the GPLv2, not the Apache 2.0 license that Google claims for its implementation.

, but there's no indication that Google's reimplementation is a derived work of the GPLv2 original.

In summary: No sign that Google's violating the GPL.

Florian's post appears to be pretty much factually correct, other than this bit discussing the SFLC/Best Buy case:

I personally believe that intellectual property rights should usually be enforced against infringing publishers/manufacturers rather than mere resellers, but that's a separate issue.

The case in question was filed against Best Buy because Best Buy were manufacturing infringing devices. It was a set of own-brand Blu Ray players that incorporated Busybox. Best Buy were not a mere reseller.

Anyway. Back to the original point. Nobody appears to disagree that section 4 of the GPLv2 means that violating the license results in total termination of the license. The disagreement is over what happens next. Armijn Hemel, who has done various work on helping companies get back into compliance, believes that simply downloading a new copy of the code will result in a new license being granted, and that he's received legal advice that supports that. Bradley Kuhn disagrees. And the FSF seem to be on his side.

The relevant language in v2 is:

You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License.

The relevant language in v3 is:

You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License

which is awfully similar. However, v3 follows that up with:

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

In other words, with v3 you get your license back providing you're in compliance. This doesn't mesh too well with the assumption that you can get a new license by downloading a new copy of the software. It seems pretty clear that the intent of GPLv2 was that the license termination was final and required explicit reinstatement.

So whose interpretation is correct? At this point we really don't know - the only people who've tried to use this aspect of the GPL are the SFLC, and as part of their settlements they've always reinstated permission to distribute Busybox. There's no clear legal precedent. Which makes things a little awkward.

It's not possible to absolutely say that many Android distributors no longer have the right to distribute Linux. But nor is it possible to absolutely say that they haven't lost that right. Any sufficiently motivated kernel copyright holder probably could engage in a pretty effective shakedown racket against Android vendors. Whether they will do remains to be seen, but honestly if I were an Android vendor I'd be worried. There's plenty of people out there who hold copyright over significant parts of the kernel. Would you really bet on all of them being individuals of extreme virtue?


(Anonymous) 2011-09-04 07:38 am (UTC)(link)
Permanent license termination is a pretty bizarre interpretation of the GPL, as I see it. I've written a lot of GPL code and it never occurred to me that that was even a possible interpretation. It seemed obvious that you got a new license if you were in compliance.

It is kind of odd to think that you don't. Let's say that that is the case - you violate the GPL, then return to compliance, and you no longer have a license. Let's even say that if you download another copy, that doesn't give you another license. But what about if a new version of the software comes out - does the lack of license somehow persist? Taking it further, let's say that someone else forks that project, and you download that - do you not have a license there? Or if someone else uses a small part of the original project in some other project - can you never use that new project? All of this is quite ridiculous, and goes entirely against the spirit of the GPL.

The reasonable interpretation is that you lose your license if you violate the terms. But anyone can get a new license for that code at any time. That's what the license says. As long as you are in violation, though, any new license would be immediately terminated. But once you return to compliance, all is good.

P.S. That the GPL3 clarifies this doesn't mean that it was a problem with GPL2. Just that it is worth clarifying the original intent. The same is true for several other clarifications in the GPL3.

- kripken

Re: Bizarre

(Anonymous) 2011-09-04 02:45 pm (UTC)(link)
"But what about if a new version of the software comes out - does the lack of license somehow persist?"

Yes, it's the same copyright, and the same lack of license persists. I get the impression that what you are finding absurd is the idea of copyright law.

Re: Bizarre

(Anonymous) 2011-09-04 03:36 pm (UTC)(link)
But it is *not* the same copyright: It is a new version of the software. (Let's even assume that each file has been changed at least a little, but that doesn't matter.) The author is releasing this new version under the GPL, as a *new action* on their part.

Releasing software under the GPL gives a license to everyone, to that software that is just now being released. The old version no longer matters (unless you want to use it and not the new one). It boggles the mind to think that to use the *new*, freshly released version you would need both a license to the old version and a license to the new version of the software. You have just been granted a license to the entire new one!

The GPL2 doesn't say "once you violate this license, you will never be able to use licenses granted to you for future versions of this software" or anything of that sort.

But the point is that even a new version is not needed. Every time you download the software you get a license. It is hard to imagine that a new .0.0.1 release gives you a license, but downloading does not.

The GPL2 should have clarified this better, but the spirit of the license is very clear. And the GPL3 thankfully does.

Re: Bizarre

(Anonymous) 2011-09-04 03:53 pm (UTC)(link)
I guess I am. Or at least that myself and other GPL2-code-releasing people I have talked to have always had a different understanding of the license.

I would like to see an official statement from the FSF on this - is there one?

Re: Bizarre

(Anonymous) 2011-09-04 04:59 pm (UTC)(link)
Well, if I had known that in advance, I never would have released any code under the GPL2...

Re: Bizarre

(Anonymous) 2011-09-08 09:45 am (UTC)(link)
It's not too late! It's your copyright --- you can give people whatever additional licenses you please (though honestly, the GPLv2 is a pretty reasonable one).

Re: Bizarre

[identity profile] 2011-09-09 08:05 am (UTC)(link)
> Let's even say that if you download another copy, that doesn't give you another license. But what about if a new version of the software comes out - does the lack of license somehow persist? Taking it further, let's say that someone else forks that project, and you download that - do you not have a license there?

That would have bizarre implications indeed. Let me take a piece of your GPL'd code and use it in my GPL'd project. Do I now need to track that this is GPL licensed but not for Amazon, Apple, and Mike Myers because they lost their rights? That would a fun world indeed and nudge me to prefer BSD-licensing instead :).

Re: Bizarre

(Anonymous) 2011-09-09 02:04 pm (UTC)(link)
The fact that the FSF made this explicit with GPLv3 means to me that they (for some lawyerly "they") did believe it wasn't clear cut in GPLv2, and that the intent all along was the one GPLv3 made explicit.