Does Android Violate the GPL? Probably Not

Does Google’s Android violate the GPL? This bold claim is being made by Edward Naughton, and was picked up here and there across the web. The problem seems to be that Android’s Bionic, a glibc alternative, supposedly violates the GPL by stripping the Linux kernel header files of all comments and other extraneous information and relicensing them under a more permissive license so that non-GPL programs can be written. Bradley Kuhn, former FSF executive director and expert on GPL violations, believes the claims are way overblown.

The trouble stems from Android’s Bionic, an alternative to glibc and uClibc. Bionic includes cleaned-up Linux kernel header files which can be included with user-space programs. The raw Linux kernel headers are licensed under version 2 of the GPL; Google’s cleaned-up versions, which only contain “type and macro definitions, with the exception of a couple static inline functions used for performance reason (e.g. optimized CPU-specific byte-swapping routines)”, are licensed under the BSD license.

According to Naughton, this is a GPL violation, and thus, this would have dire consequences for the Android ecosystem. “If Google’s assumptions are wrong, and if the Bionic header files remain subject to GPLv2, there is a considerable risk that applications using them become subject to GPLv2 as well,” Naughton argues, “On Android, all native code must compile against Bionic, and at least in the view of the Free Software Foundation, compiling code against a GPLv2 licensed library like Bionic makes the code subject to GPLv2.”

He goes even further than that, and argues that if Google is right, and Bionic can indeed remain licensed under the BSD license, then it has unlocked the Linux kernel from the GPLv2. “If Google is right, if it has succeeded in removing all copyrightable material from the Linux kernel headers, then it has unlocked the Linux kernel from the restrictions of GPLv2,” he argues, “Google can now use the ^aEURoeclean^aEUR Bionic headers to create a non-GPL’d fork of the Linux kernel, one that can be extended under proprietary license terms. Even if Google does not do this itself, it has enabled others to do so.”

If this sounds overly dramatic to you, that’s probably because it is. Bradley Kuhn, sort of the expert on GPL violations, takes a lot of issues with Naughton’s report. “Naughton’s full paper gives some examples that would make a good starting point for a complete analysis,” he states, “It’s disturbing, however, that his paper is presented as if it’s a complete analysis. At best, his paper is a position statement of a hypothesis that then needs the actual experiment to figure things out. That rigorous research (as I keep reiterating) is still undone.”

Kuhn has done this sort of rigorous analysis before, so he knows what he’s talking about. “For example, one of my first questions would be whether or not Bionic uses only parts of Linux headers that are required by specification to write POSIX programs, a question that Naughton doesn’t even consider,” he adds.

Kuhn further argues that Google’s Bionic isn’t the first time someone came up with a way of cleaning the raw header files to create something programmers can use to interface with the Linux kernel without having to licens their code under the GPL. “If it turns out that Google has succeeded in making sure that the GPLv2 does not apply to Bionic, then Google’s success is substantially more narrow,” Kuhn states, “The success would be merely the extraction of the non-copyrightable facts that any C library needs to know about Linux to make a binary run when Linux happens to be the kernel underneath. Now, it should be duly noted that there already exist two libraries under the LGPL that have already implemented that (namely, glibc, and uClibc – the latter of which Naughton’s cursory research apparently didn’t even turn up).”

Kuhn successfully argues that all this looks like a storm in a teacup. It clearly wasn’t Google’s intention to violate the GPL, so even if mistakes have been made, they’ll be easily cleared up. “If someone actually does all the research to prove that Google did so [inadvertently taking a copyright-infringing short-cut], I’d easily offer a 1000-to-1 bet to anyone that such a copyright infringement could be cleared up easily, that Bionic would still work as a permissively licensed C library for Linux, and the implications of the whole thing wouldn’t go beyond: ‘It’s possible to write your own C library for Linux that isn’t covered by the GPLv2’ – a fact which we’ve all known for a decade and a half anyway,” he explains.

We’ll see what such an in-depth investigation would turn up, but the fact that someone like Kuhn is skeptical about the whole thing doesn’t bode well for Naughton’s claims.

11 Comments

  1. 2011-03-21 9:31 pm
  2. 2011-03-21 9:42 pm
  3. 2011-03-21 11:58 pm
  4. 2011-03-22 12:42 am
  5. 2011-03-22 2:19 am
    • 2011-03-22 11:51 am
  6. 2011-03-22 8:53 am
  7. 2011-03-22 12:17 pm
  8. 2011-03-23 12:39 am
  9. 2011-03-23 7:03 am
  10. 2011-03-24 2:16 am