6 ms·
Google's Android faces a serious Linux copyright issue
- sjs382 16y agoGoogle 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". Uh, what? 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. Stopped reading after this...
- anon1385 16y agoIf you link to GPL libraries you must abide by the terms of the GPL. The same applies to using the kernel header files. Or at least Torvalds believes this to be the case, as do the IP lawyers quoted[1]. Quote from Linus: "In short: you do _NOT_ have the right to use a kernel header file (or any other part of the kernel sources), unless that use results in a GPL'd program." "So you can run the kernel and create non-GPL'd programs […] BUT YOU CAN NOT USE THE KERNEL HEADER FILES TO CREATE NON-GPL'D BINARIES. Comprende?" The solution seems to be to re-licence Bionic under the LGPL, which is what the C libraries of every other linux based OS do. Although that does seem to suggest that one can always work around the GPL linking restriction by creating an intermediate LGPL library, but I'm no lawyer so maybe there is some reason that is not allowed. [1] http://www.brownrudnick.com/nr/pdf/alerts/Brown%20Rudnick%20Advisory%20The%20Bionic%20Library-Did%20Google%20Work%20Around%20The%20GPL.pdf http://www.brownrudnick.com/nr/pdf/alerts/Brown%20Rudnick%20...
- FlorianMueller 16y agoI agree that linking to GPL libraries has GPL implications. Concerning a relicensing of Bionic under the LGPL, it's important to consider that only the original copyright holders can simply relicense (like MySQL, which granted non-GPL licenses to its database). The safe way would be for Google to use glibc, like MeeGo and webOS do.
- colanderman 16y ago> The solution seems to be to re-licence Bionic under the LGPL, which is what the C libraries of every other linux based OS do. Although that does seem to suggest that one can always work around the GPL linking restriction by creating an intermediate LGPL library, but I'm no lawyer so maybe there is some reason that is not allowed. Seeing as this is exactly what GNU's very own libc does, I don't see how it could not be allowed.
- FlorianMueller 16y agoglibc contains Linux kernel header code that the maintainers of the Linux kernel add to it. They can do so because contributors to Linux know that this happens and accept it. But third parties can't just take such code and put it under other licenses.
- colanderman 16y agoThis is interesting. I wonder about simply using generic POSIX headers. I realize this would be utterly complicated (knowing C's idea of "modularity"), but I suspect it could sidestep copyright issues?
- cabalamat 16y agoI'm sure that Linus does not think that programs that run on the Linux kernel should have to be GPL'd. I doubt if Angry Birds or Flash use kernel header files -- they call the kernel, yes, but as userspace programs not as part of the kernel.
- FlorianMueller 16y agoLinus Torvalds says that "normal system calls" are allowed, but once you use the original kernel headers, you're subject to the GPL: http://lkml.org/lkml/2003/12/5/13 http://lkml.org/lkml/2003/12/5/13 The way to avoid this is to use glibc.
- Tibbes 16y agoIn relation to Android and Bionic, I think the following message from the same thread is more relevant: http://lkml.org/lkml/2003/12/5/162 http://lkml.org/lkml/2003/12/5/162 (in general, the thread was about kernel modules - this message explicitly mentions user-space)
- cube13 16y agoLinus is saying that programs that use the Linux kernel HEADERS need to be under the GPL or LGPL. If you're using system calls(and associated headers), you're fine with any license, but using kernel headers to directly access kernel calls in non-GPL code is not allowed. Most non-GPL userspace programs use glibc, which is LGPL(and therefore can be linked by any license). If Google copied the headers verbatim, then created a non-GPL licensed wrapper around those headers, that is a GPL violation.
- rickmb 16y agoI almost stopped reading after this, because I agree it sounds like FUD, but I urge you and everyone who upvoted this to actually read the whole article. He actually makes a pretty decent case for this.
- nextparadigms 16y agoThis is what you get when lawyers try to understand developer stuff. Plus, it sounds like more FUD to me.
- anon1385 16y agoOr possibly it's what happens when developers who don't understand legal stuff try to circumvent software licences.
- dminor 16y agoHow not to get snookered by claims of "proof" of copyright infringement: http://www.groklaw.net/article.php?story=20110122054409107 http://www.groklaw.net/article.php?story=20110122054409107
- FlorianMueller 16y agoThat Groklaw article failed to explain that the code in question is indeed distributed online by major Android device makers such as Motorola, Samsung and LG: http://fosspatents.blogspot.com/2011/01/android-device-makers-distribute-oracle.html http://fosspatents.blogspot.com/2011/01/android-device-maker...
- dminor 16y agoI'm not claiming it as truth - just letting people know that there's a history here and opinions on both sides.
- FlorianMueller 16y agoThanks for clarifying that. Yes, let freedom and pluralism ring.
- jrockway 16y agoI think the issue is whether or not header files are copyrightable. In verbatim form, they are, but it's easy to recreate identical header files without copying the source code: have someone read the header file, write a list of functions and signatures, use this spec to write an identical header. Google wrote a program to do this. I am fine with the outcome either way. If everything on Linux has to be GPL'd, excellent: more freedom for everyone. If Google's stuff is OK: that makes sense too, because the OS's copyright shouldn't infect its apps'... apps have to use an OS. I love not having a pony in the race.
- shareme 16y agoonly problem the SCO case proved them not copyright-able.. whoops..
- ajju 16y agoIt's hard to take the author's claims of infringement seriously because of his laughable claim that third party applications such as Angry Birds running on top of Android would have to be open sourced under GPL if actual infringement is found in Android.
- FlorianMueller 16y agoThe reason is that Angry Birds is written in C and certainly accesses the Linux kernel, almost certainly using the Bionic library. If that one is GPL'd, Angry Birds has to be GPL'd. GPL copyleft affects derivative works, and compiling a library into your program is a clear case of a derivative work.
- anon1385 16y agoI think people are objecting to this rather extreme worse case scenario because the C library can just use the LGPL, there is no situation where it has to be full GPL. (Or else how does glibc get away with being LGPL?)
- FlorianMueller 16y agoglibc is LGPL'd because the kernel maintainers create it under the LGPL and all Linux kernel contributors know and accept that. But third parties can't just take code and relicense it. Otherwise why not take all of Linux and relicense it under BSD or Apache? ;-)
- pyre 16y agoI find it hard to believe that it's impossible to make a glibc competitor that is LGPL and uses kernel headers. Could you point me to some opinions that you're basing this on?
- FlorianMueller 16y agoEdward Naughton, a prominent IP litigator, said in his Huffington Post article on this that he's skeptical of Google's approach because he believes the header material they copied is likely copyrightable. If it's copyrightable, it can't just be relicensed by third parties. During all those years that Linux has been around, no one other than Google has tried to take this kind of material from the original kernel headers and publish it under any license other than the GPL. And no one has tried to do an alternative glibc. I guess what someone would do is take glibc and fork it on LGPL terms.
- CoffeeDregs 16y agoInteresting... Assuming the article is correct in that Google's tool says that no copyrighted information is left, it seems that Google is saying that header files stripped of all of english/whatever-language text and left with only pure code are not copyright-able because it's just code?
- FlorianMueller 16y agoPretty much. They also threw out a few other elements, but I looked at some of the original header files and the Android equivalents and it was hard to find any difference other than the removal of comments.
- babblefrog 16y agoAlmost. It's non-copyrightable because it is required for interoperability, and is therefore fair-use under US law.
- wnoise 16y agoThe argument is that it's just _interface_, which has to be that way for interoperability, so has no "creative content". Code that is actually expressive code in a header file (inline functions, or non-constant macros) could readily spoil this. I have no idea whether the output headers contains more than structure definitions, constant macros, and forward function declarations.
- radu_floricica 16y agoThis may or may not be true, but what is fundamentally different from the Oracle suit is that the GPL holders take a very pragmatic view of violations. Release the code as GPL, or stop using it, and you're ok. I never heard of a GPL suit involving damages... not even sure it's possible. Oracle on the other hand wants either to hurt Android, or a (preferably large) piece of the pie.
- tonfa 16y ago"The SFC received a default judgment [PDF] against Westinghouse in July for $90,000 in damages and $50,000 to cover costs of the suit." https://lwn.net/Articles/409303/ https://lwn.net/Articles/409303/
- lopatamd 16y agolol enough with this shiet -_-
- JulianMorrison 16y agoSo wait, the grumble is that they extracted function signatures from a header file? What a non-event.
- tzs 16y agoI am at a complete loss as to why no one like Google, or a consortium of smaller embedded system developers or users, have not made a BSD based system available as an alternative to Linux based systems. Linux has some desktop advantages in terms of package management and perhaps consumer hardware support, but none of these matter to someone seeking an OS for a phone or a TV or a microwave oven and so on.
- m0nastic 16y agoThe precursor to Android was actually BSD-based instead of Linux-based. I assume that when the Danger guys left to start over with Android, they figured starting from Linux would give them a technical advantage.
- teyc 16y agoI suspect Google uses the fear of GPL to bind the handset manufacturers to their platform.
- mycroftiv 16y agoI think the part of the article everyone should make sure to focus on is that Google is doing exactly what Linus says is impermissible. "In short: you do _NOT_ have the right to use a kernel header file (or any other part of the kernel sources), unless that use results in a GPL'd program." "So you can run the kernel and create non-GPL'd programs [...] BUT YOU CAN NOT USE THE KERNEL HEADER FILES TO CREATE NON-GPL'D BINARIES. Comprende?" - Linus Torvalds quote, taken from the linked article
- deleted 16y ago[deleted]
- eli 16y agoAn excellent point, though (unfortunately) just because Linus wants the GPL to apply that way doesn't necessarily mean that it does. As a layman, it seems entirely reasonable that you should be able to inspect the interface of a software product in order to make something compatible with it without your new product counting as a "derived work." If they had read documentation for all the functions rather than parsing the headers through a script would that have made a difference? Put another way, I'm sure Microsoft asserts that it is impermissible to reverse engineer Windows kernel code, but that doesn't mean they have the power to stop it.
- humbledrone 16y agoWhat Linus says is impermissible is rather immaterial; he's not a lawyer. What matters is a court's interpretation of the GPL as it applies to the kernel.
- Sandman 16y agoOh my, oh my, oh my... Developers of applications using Bionic would only be able to charge (via the Android Market) those customers who don't know what rights they have under the GPL. All others would find ways to download and install those apps on GPL terms, i.e., free of charge. Mr. Mueller doesn't seem to understand that if something is released under GPL that does not make it automatically free of charge. Just because most GPL software is free of charge, that does not mean that you can't charge for your software if you release it as GPL. Another common misconception is that if your code is under GPL, you have to give the source code to just about anybody who wants to see it for free. No. Wrong. Only people who have the license for your software can get the source code, they have this right because it is granted to them by the GPL. And if you want to, you can certainly charge for use of this license. So there is nothing stopping you from releasing your software as GPL, charging for it, and giving the source code to those interested parties that payed for the license to use your software.
- FlorianMueller 16y ago@Sandman, the "oh my, oh my, oh my" part is actually justified as a reaction to some of what you say. Of course you can try to charge for GPL'd software. But since the GPL requires you to make it available free of charge, there would be arbitrage: people would find where to get it for free, and why would they pay then?
- deleted 16y ago[deleted]
- deleted 16y ago[deleted]
- Sandman 16y agoAs I understand it, if you write a piece of software, you're the one holding the copyright. Therefore you decide under which license you will allow people to use your software and whether you want to charge for this use or not (unless the license itself specifically states that you must or must not charge for the use of the software, in which case you must conform to the rules of the license). If you decide that you are going to charge for the use of your software and somebody is using it without paying for it, they are in violation of the license. If you release your software under GPL and decide to charge for it then yes, you have to give the source for free, but only to those people that payed for the license to use the software in the first place.
- comex 16y agoI don't get it. The LGPL lets you promote to the GPL, but the GPL does not give any special status to the LGPL; it doesn't even mention it outside of the preamble. Why is going through a LGPL library any different than going through a BSD one?
- jcl 16y agoAs I understand it, Google is using the header files only to extract "structure declarations, constants, etc." -- i.e. to get the interface right, not to link to kernel source. The question is whether or not this is a copyright violation... If not, then the GPL has no power. Note that it's possible to use a copyrighted source to reverse-engineer an interface and not have it be a copyright violation: http://en.wikipedia.org/wiki/Clean_room_design#Case_law http://en.wikipedia.org/wiki/Clean_room_design#Case_law I'm hoping this is a lot of fuss over nothing, as there will no doubt be cases in the future where people want to create open-source drop-in replacements for proprietary systems, and if it is ruled that extracting information from header files makes a derivative work, it will be very difficult for them to get the interface right.
- jmillikin 16y agoOy, 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.
- arst 16y agoIf 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.
- rst 16y agoOdd that he doesn't explicitly mention the legal basis for Google's claim that this stuff is non-copyrightable. Which is this: Copyright protects the expression of an idea, not the idea itself. So, the courts have held, if you don't have any choice over how to express something, it isn't subject to copyright protection. In particular, if a particular mapping from names to magic numbers is necessary in order for standard-conformant programs to operate at all (as in the mappings specified by <errno.h> and <signal.h>, which came up in the SCO litigation), that stuff isn't copyrightable. So, Google's saying, they've written tooling to explicitly drop all the expressive elements, leaving the bare, functional, non-copyrightable bones --- which they don't need legal permission to use, from Linus or anyone else. This is, I guess, why Mueller thinks it's a big deal that the processed files still include inline functions --- if there's another way to write the function which does the same thing, then there is an expressive choice in writing it, which would be subject to copyright protection. But if userland code has no reason to want to run particular inline functions in kernel header files, then Google has an easy remedy: just ditch 'em --- or rewrite the few that matter, and ditch the rest. So, this really doesn't look like a big deal...
- aidenn0 16y agoI haven't looked at the code in question, but there are some inlined functions. If there aren't too many and the functions are very short, then it's probably fine. Just copying the #defines and stuff is almost certainly okay since you would need to duplicate all of that to call into the kernel. There is precedent for something like this: Phone books have been copied, proved to have been copied (there were fake entries in the original) and it was determined not a copyright violation.
- tzs 16y agoA couple quick points about copyright and header files. 1. It is well established in US copyright law that elements necessary to interoperate with something aren't copyrightable. So, for instance, the function signatures and probably function names (if names are necessary in order to make the call) of an interface would not be copyrightable. Same for structures used in the interface. This has been fairly extensively litigated. It arises when you have, for instance, someone trying to make an unauthorized third party game for a video game system, or someone trying to write a plug-in for someone else's closed program. 2. Header files often contain more than just the bare elements necessary to interface to something. They often contain macros that expand to code, comments, maybe even implementations of small inline functions. There is plenty in header files that can be copyrighted. So, depending exactly on how Google produced its header files, they may be in the clear or they may have made a big mistake.
- cschwarm 16y agoAccording to Naughton's analysis [1], your case 2 applies, and there's also the consideration that the whole constitutes an expression, and is therefore copyrightable. It's worth reading the original instead of the above linkbait. [1] http://www.brownrudnick.com/nr/pdf/alerts/Brown%20Rudnick%20Advisory%20The%20Bionic%20Library-Did%20Google%20Work%20Around%20The%20GPL.pdf http://www.brownrudnick.com/nr/pdf/alerts/Brown%20Rudnick%20...
- haberman 16y agoThe Linux kernel specifically allows programs to make system calls into the kernel without being GPL. From http://lxr.linux.no/linux+v2.6.38/COPYING http://lxr.linux.no/linux+v2.6.38/COPYING 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. The Linus quote on the other hand, pertains to binary modules -- ie. binaries that are linked into kernel-space and use non-system-call APIs. Since user programs are specifically exempt from being GPL'd, I cannot see how you could possibly make the argument that Angry Birds is somehow affected, unless it is being linked in as a kernel module. What is in these headers? If it is just definitions that are required for making system calls, I would expect that all of this falls under the exception above.
- himmele 16y agowould it be possible to relicense the output of google's tools (the rewritten kernel header files) to LGPL with the permission of the kernel developers (just like glibc or uclibc do) and build a separate library out of this? This library would consist mainly of header files. And this library can then be linked against the rest of bionic whereat bionic could keep its current license. Would this be ok?