iPhone app iPad app Android phone app Android tablet app More

Featuring fresh takes and real-time analysis from HuffPost's signature lineup of contributors
Edward J. Naughton

Edward J. Naughton

Posted: March 16, 2011 03:22 PM

Google's Android Contains Legal Landmines for Developers and Device Manufacturers


Android-powered smartphones have been creating quite a stir among the tech crowd lately -- and not necessarily the kind of buzz that Google was hoping for. Oracle sued Google for infringing several patents, and it also accused Google of copying Oracle's computer code, in violation of its copyrights. When a prominent blogger reported that he had found additional evidence that Google had copied Oracle's code, a flame war broke out. For example, this Engadget article reporting on the issue generated more than 750 comments, most of which brought more heat than light to the issue.

But there's more to this story than Google's "borrowing" of Oracle's intellectual property. The Android programming code is publicly available, and the increased attention has brought increased scrutiny. Recently, Ray Nimmer, a well-known copyright law professor, observed that there could also be a problem with the way Google used some key Linux software code, called kernel header files, to create a vitally important element of Android. In fact, the way that Google used these files creates a legal quandary for manufacturers of Android devices and many developers writing code and applications for those devices.

What did Google do this time?

Google built Android around Linux, which is an open source operating system licensed under the GNU General Public License version 2 (GPLv2). The GPLv2 is a "copyleft" license: it grants everyone the freedom to copy and modify the Linux code, but that freedom carries conditions, including the requirement that any modified software code and any works "based on" it must be made freely available to all. The very point of the GPLv2 is to make it impossible for anyone to take GPLv2-licensed code and make it private and proprietary.

Working with open source software thus demands careful attention to legal and technical details. I regularly advise clients on the proper use of open source software, and I understand well the difficulty of reusing code licensed under GPLv2, especially for developing proprietary software. I was therefore intrigued by Prof. Nimmer's explanation of the way Google had used the Linux kernel header files when it created Android.

The fact that Android is built on open-source Linux makes it attractive to many developers and users, but it presents some concerns for others. As Android has become more popular, clients have been increasingly interested in building applications that run on Android or even using the Android code in their own mobile devices. For many such clients, it is critical to their success that they can charge license fees for their products and keep their code secret to protect it from competitors. Google understood this, which is why it made Android available under the Apache Software License, a license that was much more business-friendly than the GPLv2.

But Prof. Nimmer's article raised questions about what Google had actually done, so I began to look at the Android code. What I found really surprised me: Google took a novel and quite aggressive approach to developing a key component of Android -- the Bionic Library. That library, a type of C Library, is used by all application developers who need to access the core functions of the Linux operating system. Google essentially copied hundreds of files of Linux code that were never meant to be used as is by application developers, "cleaned" those files using a non-standard and questionable technical process, and then declared that the code was no longer subject to the GPLv2, so that developers could use it without becoming subject to copyleft effect that would normally apply to GPLv2-licensed code taken from the Linux kernel.

Why does it matter?

My full analysis of the legal issues can be found here, but in short, I have serious doubts that Google's approach to the Bionic Library works under U.S. copyright law. 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.

What is potentially even more interesting is what happens if Google is right. If that is the case, Google has found a way to take Linux away from the open source community and privatize it. Perhaps the community believes it can rely on Google to "do no evil" with that kind of power, but can it rely on others to be so magnanimous?

This article provides information, not legal advice. The views expressed are my own individual views and should not be attributed to any clients.

 
 
 
  • Comments
  • 37
  • Pending Comments
  • 0
  • View FAQ
Comments are closed for this entry
View All
Favorites
Recency  | 
Popularity
01:19 AM on 03/29/2011
Both Naughton and JoelKatz are wrong. Naughton's analysis is fundamentally flawed because it does not take into account the modification of the GPLv2 which provides that programs that use Linux are not derivative works. I detail the problem in my blog http://lawandlifesiliconvalley.com/blog/?p=593. And Sean Hogle agrees with me for slightly different reasons http://www.epiclaw.net/2011/03/21/oh-noes-teh-angry-birds-gpld-googles-alleged-gpl-violations-android. JoelKatz is wrong because, in essence, Linus has gotten all the contributors to agree to his addition because this addition to the GPLv2 has been on kernel.org since the beginning and all contributors have agreed to it, just as they agreed to the GPLv2. CD Host is right on this one. In addition, Google has a number of other arguments such as merger, scenes a faire and idea/expression defense. This is really much ado about nothing.
09:30 AM on 03/24/2011
Just another thought. Does he mean to say that programs written for Unix will be subsumed by the same license as Unix? He might want to consult an attorney.
photo
HUFFPOST COMMUNITY MODERATOR
Quinxy von Besiex
My micro-bio is empty. :(
06:22 PM on 03/19/2011
I am struggling to understand just how the argument being made works since these are non-functional, non-code-executing headers. If it was executable code, fine, but how can you take Linux away by taking away the headers, which are effectively just APIs? That'd be as foolish as saying Amazon's publishing of a book's table of contents on its sales page for the book was leading down some slippery slope at the end of which all authors would have no control on their books. I mean, what's really new here? The Wine project has been working for more than a decade to create Windows binary compatibility in Linux/etc. by reproducing Windows API calls, without being legally prevented by Microsoft. How is that different? They study the API and recreate it. Is the alleged difference here that the process is automated? If so how does that matter? What if the scrubbing was all done by an automated process then every line was reviewed by a human? Or what if it was reviewed and retyped in a different order by a human? Or... I'm not a lawyer so maybe I'm missing something, but as a human who is generally concerned about where things lead I'm failing to see how headers such as these can or should be protected.
10:39 PM on 03/22/2011
The difference is that they are actually taking the Linux header files. The header files don't just include definitions and function prototypes, they also do contain some executable code. For example, from socket.h:

_EXTERN_INLINE struct cmsghdr *
__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
{
if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
/* The kernel header does this so there may be a reason. */
return 0;

__cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
+ CMSG_ALIGN (__cmsg->cmsg_len));
if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
+ __mhdr->msg_controllen)
|| ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
> ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
/* No more entries. */
return 0;
return __cmsg;
}
HUFFPOST SUPER USER
NoCalDrummer
11:58 AM on 03/19/2011
Has anyone noticed the article at Network World? Seems this guy is on Microsoft's retainer. And Microsoft CEO Steve Ballmer said that "Linux is a cancer that attaches itself in an intellectual property sense to everything it touches."
So is it any wonder that this shill would be happy to spread FEAR, UNCERTAINTY, and DOUBT [FUD] about Linux or its derivatives? See -

http://www.networkworld.com/community/blog/lawyer-behind-android-infringement-claim-has-
This user has chosen to opt out of the Badges program
09:05 AM on 03/20/2011
Yeah I noticed that too.
04:56 PM on 03/18/2011
Who has registered the copyright for the Linux kernel? I don't think that has ever been done and nothing shows up when you search for registrations on the US copyright office site. No one can sue over a copyright if it has not been registered.

Linus Torvalds did register the Linux trademark, but that is not a copyright on the code snippets.
photo
Kache
Citizens, Unite!
03:57 AM on 03/22/2011
"No one can sue over a copyright if it has not been registered­."

That is true for a patent but not true for copyright or trademark. Registration does not, in any way, confer copyright. Registration merely announces to anyone concerned that copyright is claimed and the claim will be defended. Successful defense of the claim is the only thing that actually established a valid copyright, not the listing in the registrar. There are numerous instances where someone has not even claimed copyright until after an infringement has happened, won their claims in court, then registered their copyright as a notice of their property. The same is true for trademarks, the most famous and far reaching claim being for the cover art work for Peter Rabbit 50 years after Beatrix Potter's death. The publisher trademarked her artwork after the copyrights ran out because trademarks never expire.
08:12 AM on 03/22/2011
Registration is reqiored before you can sue. Who could register a copyright for Linux in order to sue Google? If you register a work when it is created, you are the presumed author, but in order to regeister after so many years, nearly 20 now, everyone who has contributed code to Linux would have some partial claim to the copyright. No one has ever sued over violations of any Linux copyright, so it has not mattered.
11:00 PM on 03/17/2011
The header files referred to contain no executable code only information such as define statements or structure declaration. As an analogy someone who had written a book about Napoleon cannot claim copyright infringement if someone used the terms The French Revolution, Battle of Waterloo and Saint Helena in their own book about Napoleon.
08:27 AM on 03/18/2011
A paragraph can be under copyright even if the words aren't. I agree with your point however, even if I disagree with your argument.
This user has chosen to opt out of the Badges program
10:09 PM on 03/18/2011
Facts can't be copyrighted though. These are part of a standard, a technical reference that is needed in order to assure compliance with the standard.

SCO tried to claim copyright infringement based on headers in its suite against IBM. Although that issue has not been resolved, the judge upon see the "evidence" said is that all you got!? I haven't seen anyone other than some "journalist" who was employed by SCO in some manor, as she is listed as a creditor in SCO's bankruptcy give much credence to SCO's theory.
03:17 PM on 03/17/2011
I agree with JoelKatz

Google is trying to put a licence firewall between GPL-ed Linux and the rest of Android, including code running on Android.

This is essentially what glibc does which is why commercial programmes can run in Linux. These programmes link to glibc via LGPL which places no copyleft constraints on users of its api.

So the real question is why is glibc privileged in defining "normal system calls" to Linux (http://lkml.org/lkml/2003/12/4/239) and what are the legal barriers to Google making its bionic library LGPL-able just like glibc? Why is glibc privileged in providing "normal system calls"?

I think it is likely that Google failed to strip copyrightable content when generating Bionic. But it is very arguable that since bionic library provides a clean demarcation between the underlying Linux in the Android kernel and programmes which make calls to Linux, that any calls to bionic are also "normal system calls".

As such they would be exempt from the GPL requirements in the kernel source.

Of course it does not help that Android gives the impression that it is forking the Linux kernel in a proprietory way...

Leo
03:00 PM on 03/17/2011
The problem with this analysis is that the Linux kernel has always included a special exemption defining a derived work. It is not a vanilla GPL2 program:

2 NOTE! This copyright does *not* cover user programs that use kernel
3 services by normal system calls - this is merely considered normal use
4 of the kernel, and does *not* fall under the heading of "derived work".

What app developers are doing would be use. Arguably what google might not be, but they do distribute the source. If the Google bionic mechanism were found non free the exemption about would still apply to android application developers.
02:17 AM on 03/18/2011
That's not a special exemption. It is Linus claiming that in his opinion the vanilla GPLv2 license doesn't cover it. It is not him making the license not cover it.
08:24 AM on 03/18/2011
That line comes from the COPYING file in the kernel. I.E. the license file. If I get a copy of the kernel it comes with an explicit license and that explicit license contains that clause. Hell yeah it binds itself to the code contained therein that doesn't not have an alternate explicit license (like some of the binary blobs).

Now an author (like you) who wrote code prior to that clause could argue that by adding that clause to the COPYING file Linus was asserting ownership, an ownership he doesn't have, and tell him to distribute your code under a pure GPL license. He would probably cut your code out but if he didn't I think you could argue intentional infringement on his part.

But no, something written into a legal document isn't just an opinion its part of the very contract.
02:39 PM on 03/17/2011
Without the permission of every single kernel code contributor (which he did not get) Linus has no power to do anything with the kernel code that cannot be done by everyone. Google created their headers in a way that does not fundamentally differ from what glibc did. If one can use one set without being subject to GPLv2 one can use the other.

Those who blessed the glibc approach had no authority to license the header files under any special terms. The kernel header files contain content they did not write and the GPLv2 does not permit or authorize relicensing (see section 6).

Linus' argument reduces to "fine if I do it to other people's code but not fine if you do it to other people's code".

Linus' estoppel argument doesn't work. The whole point of copyright is that third parties can't waive it. Linus statement that he will allow use of these files acting as estoppel doesn't work. Nothing Linus says can waive the copyright rights of every single author who license their code under only the GPLv2. Linus both ackwnowledges this and denies it in the linked page. (http://lkml.org/lkml/2003/12/4/239) It might prevent Linus from making a contrary argument and maybe even those who contributed code after it was added, but it was added after significant expression was already taken from the kernel headers.

If that expression is copyrightable, Linus waiver fails. If that expression is not copyrightable, Google wins.
03:03 PM on 03/17/2011
Linus wrote the original kernel. By submitting code to Linus for inclusion in the kernel you are agreeing to his exemptions. He is explicitly licensed to redistribute under the GPLv2 with the exemption clause.
09:57 PM on 03/17/2011
That cannot possibly be right. Think about it.

Say there are two projects A and B, both covered by the GPLv2. I can take code from project A and add it to B if I want. The GPLv2 requires that this be allowed. But if the author/maintainer of project B has contaminated the license in any way at all, who grants permission for the change? I can't do it -- I didn't write the code, I'm just taking some of it from one project and putting it in another.

If Linus has made any modification or exception to the license at all, then GPLv2 code cannot be added into the project by anyone but all of its authors jointly. That would also mean Linux code couldn't be used by any other GPLv2 project because the authors of that project have only consented for pure GPLv2 works as derivative works.

There is simply absolutely no possible way that could be right. Linus' estoppel or consent by notice arguments do not work with copyright law. (They could work with pure contract arrangements, but that's not what we have.)
This user has chosen to opt out of the Badges program
02:33 AM on 03/17/2011
Is that anything worse than mixing programmers and lawyers? This isn't even really "code" we are talking about.. Nobody is taking Linux away from the open source community. This is analogous to developing a proprietary app that would run under Linux. The data structures and function prototypes for the API calls have to be held in common for them to inter-operate. Get back to us when someone steals actual code, instead of just pulling common definitions for a header file.
07:43 PM on 03/16/2011
Google should have bought Oracle instead of letting fall into the hands of Ellison.
07:00 AM on 03/18/2011
You mean Google should have bought Sun?
12:29 AM on 03/20/2011
Yes... sorry.
04:56 PM on 03/16/2011
I don't know. These are just include files, so they do not really contain anything other than simple declarations. To me it's the equivalent of creating a set of directory pointers for a complicated map book. It may be a controversy, but IMO a tempest in a teapot.
07:07 AM on 03/18/2011
This is an implementation of the POSIX standard, that's what the header files are for. Even Eben Moglen didn't seem think it was a big deal. See here: http://www.zdnet.com/blog/open-source/does-googles-android-violate-linuxs-copyright/8497?pg=2&tag=mantle_skin;content
07:39 AM on 03/18/2011
Surely you're not suggesting that something should get less copyright protection because it implements a standard, are you? Ideas are not protectable, and all code implements ideas.

I think the better argument is scènes à faire (or merger doctrine). The headers are a component that provides functional access to the rest of the work's functions. If they were covered under copyright, the copyright holder could hold a functional right. Copyright only applies to one way of doing a certain thing when there are a large number of equally-good ways to do that same thing.

Paramount can own Star Trek because there are any number of ways, some better than Star Trek, some worse, to tell a story about humans of the future who travel the stars looking for alien life to contact. The Linux kernel developers cannot own *every* way, or even the best way, to make applications that call into the Linux kernel.