Proprietary loadable kernel modules
Posted Mar 21, 2011 6:35 UTC (Mon) by FlorianMueller
Parent article: Has Bionic stepped over the GPL line?
I don't think I misunderstood Linus Torvalds. We're simply talking about two conflicting principles, both of which Linus Torvalds described clearly in the mail I quoted: on the one hand there's the normal syscall exception; on the other hand there are copyleft implications in connection with the use of source code files. Let me quote the two paragraphs from Linus Torvalds' mail that make this clear:
But that "use" [normal syscalls] is clearly limited to running the resultant program. It very much does NOT say that you can "use the header files in any way you want, including building non-GPL'd programs with them".
In fact, it very much says the reverse. If you use the source code to
build a new program, the GPL _explicitly_ says that that new program has
to be GPL'd too.
To me there is no doubt that by "the source code" he means "the header files" because that's the type of source code file at issue in this context and mentioned in the first of the two quoted paragraphs.
If I can take a source code file (albeit a header file) that comes with a clear copyright and GPL notice at the start and compile it into my program without creating a derivative work, what else would be a derivative work?
Of course one can also make a derivative work argument based on the specific functionality provided, meaning that the resultant setup (original code plus one's new extension) is an extended version of the original code. In Android's case, that would raise interesting questions since it's an operating system but built on Linux, which is an operating system kernel, so the question is whether from a functionality point of view we're talking about a fork.
Note that even LWN itself used the compilation of code against original (raw) kernel headers as an argument for LKMs constituting derivative works. In the second paragraph of this LWN article on proprietary kernel modules, Jon mentions that LKMs "require (GPL-licensed) header files to build" as one of several arguments for why they "should perhaps be seen as derived works".
In my understanding, LKMs need to be compiled against at least module.h, and in practical terms against more headers. If any of those headers could just be un-GPL'd the way Google claims it can un-GPL the raw headers for Bionic, there might still be other arguments remaining for which one can claim that LKMs are derived works, but one argument would be gone.
A similar argument as in Jon's article was also made by the Linux Documentation Project on this page.
One can hardly overstate the wide-ranging implications that it would have for the Linux kernel community and the entire GPL software universe if Google's approach to the raw kernel headers was condoned. I'm not sure every Google apologist has thought this through completely.
to post comments)