Google's 'clean' Linux headers: Are they really that dirty?
When lawyers and Linus collide
The trouble with open source is that most coders aren't lawyers and most lawyers aren't coders. And even if everyone did wear both hats, there would still be ample room for disagreement. The law, you must remember, is subjective.
Two intellectual-property lawyers have told the world that Android is at risk of legal attack because it uses Googly versions of the original Linux header files. But Linux daddy Linus Torvalds says this is "totally bogus". The truth lies somewhere in between. But good luck finding it.
Earlier this month, Edward Naughton, an intellectual-property attorney with the Boston-based firm Brown Rudnick, penned a piece for the Huffington Post in which he argued that Google's use of the original Linux "header files" in Android made the OS vulnerable under US copyright law. "Google's Android contains legal landmines for developers and device manufacturers," the headline read.
According to Naughton, when building Android's Bionic library – which provides application developers with access to Android's underlying Linux kernel – Google stretched the boundaries of copyright law by making use of the Linux header files open sourced under the GNU Public License (GPLv2), which has a strong copyleft provision. Google stripped programmer commentary and other information from the files, arguing that these "cleaned" files are no longer subject to copyright. Then, as part of Android, it open sourced the files under a license with no copyleft provision. But Naughton contends that the GPL may still apply .
"I have serious doubts that Google's approach to the Bionic Library works under US copyright law," he wrote. "At a minimum, Google has taken a significant gamble. While that may be fine for Google, because it knows about and understands the risks, many Android developers and device manufacturers are taking that same risk unknowingly.
"If Google is wrong, the repercussions are significant for the Android ecosystem: the manufacturers and developers working with Android would be incorporating GPLv2-licensed code into applications and components and taking on the copyleft obligations of that license." In other words, if Google is wrong, developers will have to open source their code, as the GPL stipulates.
The argument was based in part on a recent blog post from Raymond Nimmer, a law professor at the University of Houston Law Center and co-director of the Houston Intellectual Property and Information Law Institute. In discussing the "risk of disclosure" when using copyleft platforms, Nimmer spent a paragraph questioning Google's use of the Linux header files in the Bionic library.
Naughton's story promptly sparked a blog post from outspoken open source watcher Florian Muller, who has gained some added attention of late for questioning Google's use of Oracle's Java code in Android. "Google's Android faces a serious Linux copyright issue (potentially bigger than its Java problem)," read the headline, and with the post, he roped in a 2003 mailing-list post from Linux founder Linus Torvalds to support his argument. Soon, countless tech news sites were reporting that Android and its applications were build on shaky ground.
But in one dissenting story, Eben Moglen – the founder, director-counsel, and chairman of Software Freedom Law Center; a professor of law at Columbia University; and one of the world's most respected open source legal minds – poured a little code water on the brouhaha. "I would say that the issue is a little less complex and a little less dire than it might seem on first acquaintance," he said.
Then Linus himself spoke, calling Naughton's claims "totally bogus". And before long, Free Software Foundation chairman Richard Stallman weighed in too, indicating that according to the legal advice he had received, Google's use of the header files was not a problem.
The war of opinions was only inflamed by suggestions that Naughton was somehow beholden to Microsoft. A week before his story appeared on the Huffington Post, Naughton's online bio was edited to remove references to his past work with Redmond.
If you strip out the petty arguments flying back and forth, the situation is actually quite intriguing – whichever side you come down on. With Android, Google could have used the Linux headers provided by GNU C Library (aka glibc), which was created separately from the Linux kernel and does not carry a strong copyleft provision. This is used by the likes of MeeGo and HP's webOS. But Google took a different route, choosing to use the original Linux header files and "clean" them using its own scripts.
Google declined to comment on the situation. But as Naughton pointed out to us when we spoke to him in the wake of his Huffington Post story, a Google powerpoint presentation indicates that the company chose to build its own library because it "wanted to keep GPL out of user space" and it wanted a library that was relatively small and fast.
Obviously, Mountain View believes its scripts have removed all copyrightable material from the files. "This header was automatically generated from a Linux kernel header of the same name, to make information necessary for userspace to call into the kernel available to libc," reads the top of each file in the Bionic library. "It contains only constants, structures, and macros generated from the original header, and thus, contains no copyrightable information."
A function of copyright
Basically, Google's scripts remove programmer commentary from the files. The company is operating under the principle that the meat of the header files is so simple and unoriginal that it can't be copyrighted. The files define an API, and they're similar to what's used with UNIX OSes. Copyright law covers "original expression", not mere ideas or methods, and Google believes once you strip out the comments, the headers contain no original expression.
But Naughton disagrees. He says that he's found static inline functions in the headers and that these, as well as macros, may be problematic. "A header file that is merely a list of declarations of variables or names of functions might not be copyrightable," he says in the lengthy legal analysis that he points to from his Huffington Post story, "but one that includes macros and inline functions probably is, because writing those macros and functions demands creativity and originality, and they can be written in different ways." And he cites a handful of Bionic files that he believes exhibit such expression.
Plus, he argues that the overall structure of the files – which number around 750 – is copyrightable. "Even if not all of the 750 header files that comprise Bionic contain as much copyrightable expression as the two discussed above, the overall structure, organization, and combination of noncopyrightable elements can still be copyrightable. This isn’t a revolutionary idea: it’s commonly understood that even if individual words and facts can’t be protected by copyright, the creative selection and organization of those individual words and facts – into a novel, or a movie – is entitled to copyright protection."
Raymond Nimmer, whose blog post Naughton drew on, says that there's no definite line between what's copyrightable and what's not, as is the case with any piece of software. "If you look at any program or any complicated thing, there are going to be some things that if you take them as a whole, they'e going to be copyrighted. You can start peeling things away to avoid copyright. But if you start peeling things away, there's still a strong argument that you are violating my copyright, because you're not affecting the structure."
For what it's worth. we asked Nimmer if he has any affiliation with Microsoft or any other Google competitor. He said that although his Houston Intellectual Property and Information Law Institute has received a grant from Microsoft, this had nothing to do with his blog post. When we first spoke to Edward Naughton, we asked him if he worked for anyone "involved" in the situation, and he said "no". But when we pointed out the changes to his online bio, he acknowledged working for Microsoft in the past.
"I'm a software lawyer," he said, "and I've worked with a lot of software companies, both proprietary and open source. I've represented some in litigation, Microsoft among them, and in those cases my representation is a matter of public record. I think the last time I represented Microsoft in litigation was five years ago or more ... while I was at my prior firm.
"I also advise software companies in non-litigation matters, and I have advised many, again both open source and proprietary, on open source strategy and licensing issues, and a number of them are interested in issues surrounding Android. I have a professional responsibility to keep these client relationships confidential, but I can tell you that I represent companies with differing perspectives on the issue."
Eben Moglen, of the Software Freedom Law Center, declined to speak with us on the record, saying he wanted to speak with Naughton first. It's unclear whether the two have spoken. But in an interview with ZDNet, Moglen indicated that he believes Naughton is overplaying the situation. "The facts are not quite as simple and therefore the narrative not quite as compelling as one might be led to believe,” he said.
It's worth remembering that you can't really use a header file to make some sort of proprietary enhancement to the Linux kernel. By definition, it, well, defines how you interact with the kernel. The GPL is meant to make sure that free code isn't enhanced in a proprietary way without the enhancements being open sourced as well. You really have to wonder if those who built the kernel – the only ones who could sue over Bionic – would see the library as a problem. And Linus Torvalds bore this out when he called Naughton's claims "totally bogus".
Google employs people who work on the Linux kernel, and odds are that the company had a good idea of how the community would react to an OS that cleaned the original Linux header files rather than use glibc. We get the feeling this is a case where the opinions of the world's Linux hackers are in stark contrast to those of an intellectual property lawyer at a big-name international law firm. Linux hackers aren't generally lawyers. And vice versa.
When we spoke to Raymond Nimmer – where this whole thing began – he reiterated that he believes "there is a risk" with Google's use of the header files. "If I was developing an Android app of any significance, I would tell the CEO, 'we have a judgment to make'," he told us. But then he added: "Of course, I'm not a coder. Someone else would have to look at the code and make that judgment." ®
Update: This story has been updated to better explain the GNU C library.