Skip to content

Comment on Google's Android faces a serious Linux copyright issue

Comments

Oy, this guy again? For those unaware, Florian Mueller has made a mini-career of spreading anti-FOSS and anti-Android propaganda.

  > Google copied 2.5 megabytes of code from more than 700
  > Linux kernel header files with a homemade program that
  > drops source code comments and some other elements, and
  > daringly claims (in a notice at the start of each
  > generated file) that the extracted material constitutes
  > "no copyrightable information".
In the US, APIs are typically considered mere specifications, and cannot be copyrighted. You can copyright a particular encoding of an API (eg, a C .h file), but the API itself can be used by anyone. If APIs could be copyrighted, projects like Wine and Mono would be illegal.

Whether Google's libraries are considered derived works will depend on how the tool works. If it just regexes out all the comments, then the result is probably a derivative work. If it parses the headers and then outputs the API information, the output is probably not a derived work.

  > The GPL's copyleft nature requires all derivative works
  > of a GPL'd program to be made available on the same
  > terms.
Wrong; the GPL requires any derivative works to be under a compatible license. If I copy GPL-licensed code into my BSD-licensed library, none of my code has to be relicensed.
  > If Google is proven wrong, pretty much that entire
  > software stack -- and also many popular third-party
  > closed-source components such as the Angry Birds game
  > and the Adobe Flash Player -- would actually have to be
  > published under the GPL.
Completely and egregiously wrong. Unless these programs are actually copying parts of the kernel into their source, they are not derived works.

Come on, this is software copyright 101. Copyright doesn't propagate from a library to its clients; otherwise, every Windows application is infringing Microsoft's copyrights, every iOS app is infringing Apple's, etc.

  > The only realistic way to fix the problem: replace
  > Bionic with glibc
How would this help? According to the author's reasoning, glibc is also an illegal derivative work of the Linux kernel. Any application which infringes if it uses Bionic will also infringe if linked against glibc.

The rest of the post is a bunch of doomsday scenarios, all built on the incorrect assumption that running proprietary software on a Free kernel/libc is illegal.

If I copy GPL-licensed code into my BSD-licensed library, none of my code has to be relicensed.

Yes it does, that's a pretty central feature of the GPL. See section 2.b. of the GPL (v2):

b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

You forgot the very next paragraph:

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

In other words, my code remains mine. I still control the copyright to it, and do not have to relicense it.

Those conditions don't apply because Google is accused of distributing a derived work. If Google is distributing a work derived from GPL'd code then they can only distribute that work under the terms of the GPL. There's a lot of debate over whether what Google's distributing can actually be considered a derived work, but that's a separate question entirely.

It hasn't been re-licensed. It's just not lawful to distribute.

> Wrong; the GPL requires any derivative works to be under a compatible license. If I copy GPL-licensed code into my BSD-licensed library, none of my code has to be relicensed.

Wrong. You can copy BSD-licensed code into your GPL-licensed library with no problem, but GPL-licensed code copied to a BSD-licensed library will have problems. GPL-licensed code into a BSD-licensed library prohibits redistributing the resulting work under BSD.

> Completely and egregiously wrong. Unless these programs are actually copying parts of the kernel into their source, they are not derived works.

You've missed the point. If the Google de-copyrightizanator (WTF! Apple's spell check did not flag de-copyrightizanator!) has failed, and the header files Google shipped for third parties to use do in fact contain copyrighted code under GPL, then there may indeed be a problem for third parties. Headers files often contain more than just the specification of an interface (which is probably not copyrightable). They often contain actual code, which is copyrightable. That code could end up in applications, in which case they would in fact have a serious GPL problem.

Wrong. You can copy BSD-licensed code into your GPL-licensed library with no problem, but GPL-licensed code copied to a BSD-licensed library will have problems. GPL-licensed code into a BSD-licensed library prohibits redistributing the resulting work under BSD.

You say "wrong", but then argued something completely different from what I claimed.

I said: "If I copy GPL-licensed code into my BSD-licensed library, none of my code has to be relicensed."

You replied: "GPL-licensed code into a BSD-licensed library prohibits redistributing the resulting work under BSD."

These statements are regarding completely separate concepts.

You were responding to a statement that GPL requires derivative works to be available on the same terms. Since GPL is a distribution license, I assumed you were talking about distribution.

If you copy GPL code into your BSD library, and then distribute the resulting library, you MUST distribute that version of the library under GPL. You can continue to make the version that does not contain any GPL code available under BSD if you wish.

If you copy GPL code into your BSD library and do not distribute it, then GPL is irrelevant.

Remember that the license is a property of the code, not the tarball.

If you copy code from one library into another, then the combined work uses both licenses, but the code retains its original licenses.

Using the example of copying GPL code into a BSD library, the entire library (and any tarballs, binaries, etc) are covered by both licenses, but my code (the BSD code) stays BSD. It's not relicensed.

> Remember that the license is a property of the code, not the tarball.

Not really. A license is an agreement between the copyright owner and whoever is seeking permission to do something that falls under one of the exclusive rights granted by copyright law to the owner of the copyright.

>In the US, APIs are typically considered mere specifications, and cannot be copyrighted

Linus disagrees that the Linux headers are not copyrightable: http://lkml.org/lkml/2003/12/5/13

Do Google strip out the inline functions? I don't think even the most ardent Google defenders can say that inline functions are not copyrightable.

>If I copy GPL-licensed code into my BSD-licensed library, none of my code has to be relicensed.

If I now want to use your BSD-licenced library surely I am bound by the terms of the GPL, since it includes GPL code. That parts that you wrote are still under the BSD, but the restrictions on use of the overall library will include the GPL terms. Otherwise just inserting a single line of BSD code into a fork of a GPL project would be enough to bypass the GPL.

>Completely and egregiously wrong. Unless these programs are actually copying parts of the kernel into their source, they are not derived works.

So linking proprietary binaries to GPL libraries is legal? Everything I have heard has indicated the opposite, that linking to GPL libraries makes your binary into a derived work (the reason the LGPL exists). I would be very interested in knowing if this is the case or not.

>According to the author's reasoning, glibc is also an illegal derivative work of the Linux kernel

Yes, this issue does seem contradictory.

>all built on the incorrect assumption that running proprietary software on a Free kernel/libc is illegal

It appears to me to be built on the assumption that Linux header files are copyrighted and under the GPL.

Your comment is contradicting the understanding that a lot of people have of the GPL (including presumably Richard Stallman himself, who saw the need to create the LGPL).

You use both ad hominem ("this guy again? For those unaware, Florian Mueller...") and a strawman argument ("all built on the incorrect assumption that running proprietary software on a Free kernel/libc is illegal.")

The claim is not that running proprietary software on a free kernel is illegal. The claim is that by linking to Bionic, which may violate the GPL, the proprietary software might become "derived works" of the kernel.

That's not ad-hominem; ad-hominem is "this guy is paid to attack Free software, therefore his argument is invalid". Merely pointing out an obvious conflict of interest is not ad-hominem.

The second statement is not a strawman -- that is his actual (implied) argument. Otherwise, the whole thing about Bionic is completely irrelevant. Bionic's license status only matters to client software if licenses are assumed to propagate across the library boundary. If running proprietary software with a Free libc is OK, then a GPL'd Bionic is no risk to proprietary software linked against it.

The ad-hominem is implied, since the conflict of interest you claim to have pointed out was made up, hence the only reason to point it out was to imply the argument was invalid.

According to the author's reasoning, glibc is also an illegal derivative work of the Linux kernel.

The latter part of your statement doesn't follow from the former, since glibc was written from scratch by its GNU authors. If half of glibc headers were just stolen from the kernel tree, your argument might hold water, but they absolutely were not.

glibc is a legal implementation of a Linux-compatible libc. Since it's LGPL, one can legally link non-GPL code against it. The author's suggestion that the only way to make things OK is to switch to glibc is kind of farcical, since it would appear that creating a new implementation of Bionic whose licensing status is on par with glibc would suffice.

Your line of logic is the following: [glibc includes kernel header] + [glibc is legal] -> [including kernel headers in any non-GPL project is legal]

In his comments on this site he has stated that the reason glibc is available under the LGPL is that the headers it uses were added to glibc by the kernel maintainers who held the copyright to them[1][2].

I've no idea if this is true, but it seems to be the crux of the issue, if indeed the headers are covered by copyright as Linux Torvalds believes (unless we are to assume that glibc is also in violation of the GPL). Perhaps somebody familiar with GNU and glibc knows if this is the case.

[1] http://news.ycombinator.com/item?id=2337064 [2] http://news.ycombinator.com/item?id=2336690

[glibc includes kernel header] + [glibc is legal] -> [including kernel headers in any non-GPL project is legal]

Either you're not responding to my comment, or you are misunderstanding me very badly. This is not what I'm saying in the least. I'm saying that if Google were to create a legal interface to the kernel, they would be in the clear. Two apparent ways to do this are (1) have someone who owns the copyright to the kernel header contribute the appropriate portions of your library and give consent to whatever license you choose, or (2) do a clean room implementation of the interface.

Google would most likely have to do the second, but they absolutely could do so. Apparently they think they've come up with a third, but it may not be good enough, which leads us to the article that spawned this discussion.

Rereading your post, you are correct, I misinterpreted it. My apologies.

So you are saying the licence used for Bionic doesn't come into play if Google do a "clean room implementation" of the headers? If they do that, they can use any licence they like, since they are not using any copyrighted parts of the kernel.

This does leave me unsure on another point though. How does the GPL prevent the linking of a GPL library from a non-GPL binary? One can distribute the binary without including the library, so you aren't distributing it, and just using the headers from the library is apparently OK, as long as you do a clean implementation and don't use headers containing any inline functions. What legal mechanism does that leave for the GPL to prevent linking by non-gpl works? As I understand it the GPL is entirely based on copyright. If I never distribute the library in question, I never have to agree to the terms of the GPL since I never copy it (putting aside personal use of the library).

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.