March 18, 2011, 1:09 PM —
By now you have likely heard the noise about Google possibly violating the GPL by using Linux header files to create a new BSD-licensed library that userspace applications can interface with the Android kernel.
The allegation comes from Brown Rudnick partner Edward Naughton, who has done quite a bit of research into the matter and has come up with a 10-page report that highlights what he believes are serious concerns for Android's implementation.
You should read Naughton's report to get the full nuance of what he's suggesting Google of doing, but in a nutshell, Google decided for technical reasons to avoid using the glibc library of Linux kernel headers (which most distros use for the interface between the kernel and applications) and instead create their own Bionic library that comes with what Google believes is a better (less broken) set of kernel headers for Android applications to use.
The headers within Bionic, according to Google, are thoroughly cleaned of any comments or content that might be considered copyrightable works. The only thing that is left are standards-based constants, macros, and type definitions that many in the software development/legal arena consider facts, because they're not doing anything, they're just telling applications "here's how to interface with the kernel."
In "pure" Linux distros, glibc is used for this interface job and even though it is licensed under the GPL, application developers can use it to their hearts' content without fear of having their own works fall under the GPL because the Linux kernel developers have said (many times) that they don't regard glibc as a derived work, so deep interfacing with it will not create the old bugaboo of a "viral" GPL license.
Naughton, on the other hand, has serious concerns that what Google has done with Bionic (essentially creating a library analogous to glibc for Android) and then licensing Bionic under the Apache license violates the GPL. If that's the case, he argues, then Bionic could be considered a derived work under the GPL and therefore any application that touched Bionic would also be subject to the GPL.
Which would pretty much make the Android application space a ghost town, unless something were done to fix it.
Naughton makes a pretty solid argument, picking away at one notably grey area in this discussion: are header files truly non-copyrightable? But before I get into that, there are a couple of things that need to be pointed out here.
First, while Naughton did the legwork on this analysis, it was Florian Mueller who did the marketing. A number of my colleagues (along with myself) received an e-mail from Mueller yesterday highlighting Naughton's claim, a February 22 article from IP attorney Raymond Nimmer that raises the issues of whether copyright applies to header files (which Naughton also cited in his analysis), and a link to Mueller's own blog post on the issue, which does a lot of caterwauling about how Google faces a serious Linux copyright problem.
Update: Assertion that Mueller's claims regarding were wrong has been changed to they have been disputed. No legal proof has been demonstrated one way or the other. --BKP
To be clear, there's no indication Mueller and Naughton are directly working together, but Mueller is very interested in Naughton's findings. And Mueller's recent claims (which have been publicly disputed) that Google directly copied Java files into Android were also cited by Naughton in his companion blog entry on The Huffington Post... an entry that seems a bit biased against Google, with headings like "What did Google do this time?" Hey, call me crazy, but has anyone proven Google did something bad to start with? Or is that whole innocent until proven guilty thing a rule, not just a guideline?
Second, another interesting bit of trivia: for some reason Naughton seems to have erased any mention of having represented Microsoft in multiple past cases from his biography. To be clear: the fact that an attorney has represented Microsoft in the past does not have an ounce of bearing on other opinions he might have and it should not negate the veracity of his claims. So why hide that fact from your public biography?
If you look at Google Cache from March 8, 2011 to see what I mean. You really don't need to, however. Whoever edited the bio didn't do a great job:
"Co-counsel defending Fortune 50 software company against a putative consumer class action alleging that it had violated wiretapping statutes and common law privacy rights by designing Windows to permit third parties to place cookies on computers. Obtained dismissal of complaint," the current bio reads. I wonder which Fortune 50 company would be defending against a class action lawsuit against Windows? Hm, who could that be?
But I digress.
The core issue here is: are the kernel headers really copyrightable? If they are, then Naughton and Nimmer have pointed out something valid and troubling. The fact is, no one is 100 percent sure if header files are non-copyrightable, though traditionally software developers have treated them that way. When The SCO Group sued IBM for copyright infringement, the alleged copying of header files from UNIX to Linux was indeed part of SCO's lawsuit. Presumably this issue would have been tested in court--save for that fact that Novell body-slammed SCO's case when it was proved that SCO never owned the copyrights to begin with.
In this particular case, Naughton and Nimmer may be missing something important: their respective analyses hold the presumption that the Linux kernel is licensed purely under the GPL. It's not. Linus Torvalds, who holds copyright for the enitre Linux kernel, added one exception:
"NOTE! This copyright does *not* cover user programs that use kernel services by normal system calls--this is merely considered normal use of the kernel, and does *not* fall under the heading of 'derived work.' Also note that the GPL below is copyrighted by the Free Software Foundation, but the instance of code that it refers to (the Linux kernel) is copyrighted by me and others who actually wrote it.
"Also note that the only valid version of the GPL as far as the kernel is concerned is _this_ particular version of the license (ie v2, not v2.2 or v3.x or whatever), unless explicitly otherwise stated," Torvalds' statement in the COPYING file of the Linux kernel source reads. That statement is then followed by an unedited version of the GPL v2.
This is the exception that lets glibc do what it needs to do, without virally "transmitting" the GPL into user applications. Torvalds can certainly add such an exception to the kernel; it's perfectly legal. In fact (somewhat ironically), it is a perfectly legal classpath exception in the GPL'd form of Java that does the opposite of Torvalds' exception: touch GPL Java with your software and your software is GPL'd, too. That's what Sun did to try to spook developers into using its commercial license for Java, which then caused Google to build its own Java virtual machine, which is now the subject of an actual copyright infringement lawsuit brought by Oracle against Google.
Layers upon layers.
If this exception applies to all software, like glibc, that handles the Linux kernel header files, then Google has nothing to be worried about. Naughton and Nimmer both make the case, though, that even if Bionic contains nothing but header files (which are considered facts individually), the way those facts are put together in a new and unique way makes those header files copyrightable in a meta-context. That, they argue, means that collections of header files, even cleaned up, may be subject to copyright.
But, there's one more thing to consider here.
Let's say, for the sake of argument, that Google got a little too creative with Bionic, and did indeed step on kernel code copyright. That does not necessarily mean there's a legal problem, because no one is suing Google about this.
It's like watching my 401(k) take a nosedive during the stock market troubles a few years ago: on paper, my mutual funds tanked. But in reality, since I am quite a ways from retirement, I knew my funds would ultimately recover (and they did). I would have only lost money if I had panicked in 2008 and sold my holdings at the then-low market prices.
In that sense, Google only really has a problem here (again, on the stipulation that they did anything wrong at all) if the kernel developers look at Bionic and say there's a problem. And given that Bionic has been around a while and Linux kernel developers are typically not known for being shy or subtle, does anyone really expect they didn't know about Bionic yet?
If there is something that makes the kernel developers unhappy in Bionic, I'm reasonably sure they'll say so. Loudly. Google should respond and ultimately things will get worked out. I suspect that is even more the likely outcome here because even though there are many individual copyright holders of small code snippets within the Linux kernel, pretty much everyone up until now has regarded the header files as uncopyrightable. I see no reason for that to change. To do so would seriously undermine the technical relationship between GPL operating systems like Android and Linux and the applications that run on them.
Unless, of course, that was the point of all this caterwauling.