Why Binary-Only Linux Kernel Modules are Illegal

by chromatic

Rick Moen's LinuxMafia.com knowledgebase has some great information. I ran across a series of postings the other day that clarified the problem with loadable Linux kernel modules at the GPL.


33 Comments

JaseP
2006-08-08 07:10:38
Having a JD, and being licensed in two (US) states to practice law,... I strictly disagree. Derive, in my opinion, means to use the code in it. Compiling a binary to work on a specific targeted system is not derivative. Other legal scholars are welcome to disagree. Unless the compiler they are using requires the code to be open by ITS license terms, that doesn't make it required to be open...


How does making a piece of independantly written code to fit with another more snugly make it a deriviative of it??? It's a convoluted argument.


If a code author needs clarification of their right to distribute code written to execute on a GPL OS, they should consult a copywrite attorney, not another software author.

Mike
2006-08-08 07:47:35
Unfortunately, from what I've seen, if it comes down to people opening up their code, or not being included in the kernel, companies will protect their assets first and take not being included in the kernel over opening up... So
Jason
2006-08-08 08:37:29
For this reason, I can't figure out why Linux is so popular in the embedded world. Companies that choose to use NetBSD do not have to worry.

2006-08-08 09:28:04
Embedded product manufacturers are selling a gadget,... most could care less about how its made to work as long as people want to buy it. They make money when their overhead in manufactering the widget is lower than the selling price. Period. PDAs, for example... not much innovation... Touch screen, memory, stylus, maybe wireless connectivity. The only distinguishing factors are style, performance and the ability to do neat things with it. The more open, the better... it adds value to the product.
NL
2006-08-08 09:32:36
I couldn't disagree with you more. Your article reads as though you already had a strong opinion on the matter (e.g. all proprietary software is bad) and consequently set about grasping at straws in a vain attempt to prove your point.


I believe in using the best products, period, and that's why I use GNU/Linux, but I've never encountered a better virtualization product than VMWare, though Qemu is gaining parity. So I use VMWare, proprietary modules and all.


There's nothing wrong with deciding to make a little money from your hard work, and that includes intellectual property. I sure as hell wouldn't write a best-selling novel and then decide to give it away for free, but if I did, it would be my choice, not yours.


These are the kind of articles that give Linux a bad name, and lead the uninformed to believe that Linux = Communism.

Roberto J. Dohnert
2006-08-08 11:04:44
Thank you, but this article seems hypocritical. Your description of Derivative work is what SCO has been arguing since their case began and the Linux community pounded their fist on the table and screamed "NO,NO,NO". Its good to see that at least some in the Linux community and SCO can come to terms and agree. As for your description of binary blobs, I hate to tell you, you are wrong. if you use no Copyleft code, you are in the clear, if you statically link your modules into the Linux kernel you are in the clear and are not in violation of the GPL. If you guys keep trying to strongarm proprietary software makers and force your terms and keep using the words "illegal" you are going to screw yourselves in the long run and scare people away from the platform. This is a non-issue, if you truly want to be successful on the technical merits of Linux and not on religious arguments the you guys will have to find a way to coexist with commercial, proprietary software vendors and hardware manufacturers.
chromatic
2006-08-08 13:05:02
JaseP, thanks for the comment. I still disagree, however. Consider a thought experiment.


Can you compile this kernel module without using the copyrighted header file?


If you compile the kernel module by using a non-copylefted header file, is the resulting binary the same work as if you had used the copylefted header?


Please also note the first dozen lines or so of COPYING in the Linux kernel source tree, as well as the Linking with GPL section in the GPL FAQ.


I can imagine very trivial kernel modules that do not use kernel data structures or depend on copyrighted code in the kernel header files, but they're very trivial.


How is the resulting binary not a derived work?

chromatic
2006-08-08 13:43:32
NL, I really believe you've misunderstood my argument. Your analogy has a huge flaw too. Of course you can write your own novel and do with it as you will, but if your novel is a derivative work of my novel and you distribute it against my wishes, you're not a savvy businessman worth admiring: you're a parasite.


I'm unclear on how asking people to respect copyright is communism. Could you clarify?

BobT
2006-08-08 17:14:40
You may want to remove the extra quote marks from the link to the
article you reference.
chromatic
2006-08-09 11:13:46
BobT, thanks for the suggestion. I've corrected the link.
scharkalvin
2006-08-09 12:26:15
Let's see. I write an interface layer between my binary blob and the kernel. This interface layer (thunk if you will) does use the kernel header and I DO distribute the source to it. My thunk moves necessary data between my blob and the kernel interface and handles my blob's private API. My blob is NOT compiled against the kernel header, it is staticly linked against my thunk module and the kernel. My thunk may be a derived work of the kernel, it is released under the GPL however. My blob is NOT a derived work of the kernel, it does NOT use any kernel headers, it does NOT need to know about kernel internals. It calls functions in my thunk that DO need to know about the kernel and the thunk is GPL'ed.


I really wish hardware vendors would just provide true open source drivers rather than tiptoe around the GPL. I suppose they feel that there isn't any other way to protect their IP and still be able to sell product in the Linux market. It may also be the only way to meet DRM requirements in the multimedia arena. If we ever want to have Linux Blue-Ray or HDDVD players, binary blob drivers and applications will be the only way it will be provided.

Lianqi
2006-08-09 13:54:07
I believe if the GPL pursues those video card vendors too much, they will suspend their work of issuing binary drivers and leave consumers in dark night.
Henry
2006-08-09 14:11:32
As far as I know the Nvidia *binary blob* is not "compiled against" or "distributed for a particular version of the Linux kernel" so I don't see how the argument holds. Another example, I use ndiswrapper to use my Windows drivers in Linux. How can you claim a driver that is written 100% independently from Linux is a derivative? It seems like Wine/ndiswrapper is doing the job of the "thin shim." Unless the GPL adds a rule that GPL software can't *communicate* with non-free software, I don't see a problem. Even then, the problem won't be with the distributor of the blob, but with the user who is actually running it. However, all of this makes me wonder. Is this really about freedom and the "respecting of copyrights"....or this about anti-corporate religion? Because as the other comment said, this all appears to be grasping for straws. If it was about freedom, then I think the zealots would just let us use our proprietary software as we wish. Personally I don't care about either religion, I use Linux because I like KDE--I don't care about GNU or the linux kernel itself. If zealots make it so that I can no longer use my Nvidia card and other hardware (i.e. wireless through ndiswrapper), then I'll just go by a Mac or something.
Henry
2006-08-09 14:18:34
Clarification: Note I said the *binary blob* isn't distributed for a particular version, but the then shim is.


Also, the whole GNU version of freedom reminds me of the Metallica Song "Eye Of The Beholder":


Doesn't matter what you see
Or into it what you read
You can do it your own way
If it's done just how I say
...
Freedom of choice
Choice is made for you, my friend
...
Freedom with their exception


HaHa. There I go using copyrighted stuff again.

chromatic
2006-08-09 14:36:58
Henry, of course ndiswrapper doesn't make binary drivers written and intended for another operating system derivative works, nor does the GPL cover distributing those drivers. Linus made that point pretty clearly in the e-mails on the Linuxmafia site.
(If ndiswrapper is itself a binary blob, linked against the Linux kernel, that's a different story. I've never used it. I don't know much about it.)


I find your comments about "religion" and "zealotry" dismissive and insulting. Why is it so easy for you to hide your arguments behind the freedom to use whatever code you wish in whatever means you wish and so difficult for you to respect the freedom and the wishes of the people who provide the Linux kernel, which allows you the freedom to choose whether you want to use free software or proprietary software?

Alan
2006-08-09 15:06:01
As usual this old argument comes down to the definition of derived work and the persons intent. Indeed, we will be hard pressed to find two more difficult words to define even for technical designs and implementations.


Nvidia/ATI/insert your vendor here, effectively see a method for which they can implement their driver for their card without clearly violating GPL or possibly even for multiplatform implementations. You can argue that they are a derived work regardless of a SHIM layer but then you have to prove that the SHIM is meaningless and their intent is purely to avoid contractual obligations. Good luck on those arguments my friend, as you will find with charges such as perjury that it is difficult to prove intent.


In the end, I have to agree to some extent that the harsh minority idealism of GPL enforcement is not so different from zealotry and religion that was described by an earlier commentor. Two fundamentally problematic things that society has today when people effuse their idealism without room for interpretation and without compromise. I love Linux, and I respect Linus for his rationalism, something that I truly with more in the GNU foundation had more of.


-Alan

hanishkvc
2006-08-09 17:34:22
I find many people making the statement, that one uses the best thing for the job. Let me tell you that no one is telling that there aren't good proprietrery software, if there is some proprietry software use it its your wish and right.


But then if you also agree that there is some good open source products that you use then it is there because it is open and it has allowed people to fix and enhance it to reach that level, which is possible because of its open source nature. If that open ness was not there, it wouldn't have been possible to have all these great open source products. NOW if someone wants to be in this opensource market, then he should respect the wishes (i.e opensource licenses of these copyright owners) of these opensource developers as his work will not be of anyuse in this particular market (i.e that of the opensource products), which he wants to be in, if the underlying opensource product is not there in the first place.


Put differently as some great person had told centiuries ago humbly "I am a small person who appears like a gaint because I stand on the shoulders of many gaints". If people who use the opensource market for their own profit realize this fundamental thing thats what would be great. And I would say if this statement of that great person is understood by everyone, then we wouldn't have had to live in this purely money oriented world with all these patents (the way they are implemented in todays world, where almost anything is patentable irrespective of the lack of PATHBREAKing innovativeness in most of the ideas) and other stupidities.

Kalle Klovn
2006-08-10 02:39:52
If the shim is licensed under the GPL, would it be legal to link a binary blob to it?
AJS
2006-08-10 03:35:56
It's legal to link a binary blob against a GPL shim if you hold the copyright in both works, or have extraordinary permission {above and beyond the GPL} from the holder of the copyright in the GPL work.
chromatic
2006-08-10 12:43:58
Alan, you really ought to read the comments from Linus in the second link in my post. (It's in the second sentence of the first paragraph. It's easy to find.)


I quote:


A kernel module is not a separate work, and can in no way be seen as "part of the hardware". It's very much a part of the kernel.
Marck
2006-08-10 14:37:08
If you are right it would be a sad day for open source. The momentum that Linux currently has depends on some level of compromise between completely open and completely proprietary. Linus has been visionary enough to understand this and unlike RMS and others who don't understand the big picture, Linus has allowed this compromise to exist.


Binary only modules are not ideal, but they are far better than no modules at all and in some cases are simply unavoidable.

chromatic
2006-08-10 14:44:02
Thank you for the comment, Marck.


I still disagree, however. In my mind, Linus's comments about kernel modules being derivative works are very clear.


I also wonder if the truly free drivers would be in much better shape now if the binary blobs had never existed. Certainly their availability appeases many people who might otherwise have put their energy and resources and support behind non-infringing and unencumbered drivers.

David
2006-08-10 15:46:10
I think Roberto J. Dohnert missed a fundamental difference between SCO's theory of ownership and the scenario described here.


SCO is claiming that they control any source code that has been compiled into the same product as theirs. The argument here is the source remains under the control of the author, but the act of compiling it against the Linux kernel makes the binary resulting from compiling a derivative of the Linux kernel.


The basis of this is that compiling neccessarily uses the details of the GPL licenced code in a way that makes the result a derivative of that code under law. It does not alter ownership of the source, but does make it incompatible legally to distribute the binary-only driver because of the insoluble licence snarl it creates.

Sum Yung Gai
2006-08-10 20:08:15
Mr. Chromatic,


I have done some research on this binary blob issue, and what I've found, in the case of nVidia's blob, is this. The blob itself is OS-independent (processor-specific, though) and is the same blob used on Windows, MacIntel, and Linux x86. There is a shim that is specific to each operating system, and this shim indeed is what the blob calls. Linus is right in that kernel modules are a part of the kernel and, thus, subject to the GPL. Well, the blob isn't itself a kernel module. The OS-specific shim is. This is why nVidia can get legally away with it. It's a dirty trick that happens to be legal.


Now, that said, I haven't, and won't, buy any video cards that require binary blobs. If that means I still continue to use my Radeon 7500 and 8500 and my Matrox G400, then great! They still work great, they still do what I want, and I personally see no reason to change them out. I'm voting with my *WALLET*. The same, BTW, goes for wireless; I have not bought any laptops with Broadcom wireless chipsets in them for exactly this reason. I use only Atheros, Ralink, or Realtek wireless (thank you, OpenBSD team!). Yes, I know that you can't change your video chipset on a laptop, but I don't need battery-power-depleting 3-D performance on my laptop. That's what my desktop box is for.


Vote with your wallet, pure and simple. Trust me, it ain't that hard.

Sam
2006-08-13 14:02:31
Unfortunately, from what I've seen, if it comes down to people opening up their code, or not being included in the kernel, companies will protect their assets first and take not being included in the kernel over opening up... So
NthDegree
2006-12-12 17:42:15
All this "violates the GPL" bullsh!t is the reason I now prefer *BSD to GNU/Linux. REAL freedom is in being able to do w/e the hell you want with code providing you acknowledge the people who wrote it (or helped you with writing it).
chromatic
2006-12-12 17:53:19
@NthDegree, what if "the hell I want" is to use the code you wrote without acknowledging you? Your "real freedom" isn't, in that case.


If you're going to complain about GPL users drawing a line, why draw your own line?

BobWired
2007-02-28 13:17:27
The Bell telephone Compnay used to insist that plastic telephone jackets that covered the Bell Telephone Directory books were part of their telephone network, and claimed that these 3rd party telephone book covers put the telephone network in danger, and prevented companies from distributing these free telephone book jackets. (These companies were selling advertising.)


The Linux kernel derivative work clause is a lot like that.


It is an overreaching attempt to control the behaviour of others.

chromatic
2007-02-28 13:27:02
@BobWired, shall we put you down as someone who opposes copyright in general then?
WNight
2007-07-24 15:13:22
Binary blobs linked to GPLed works are legal. Totally.


The three examples below will cover linking (describing a location in another work), modifying a copy of another work (regardless of license), and how the parts of a program that must resemble another are uncopyrightable.


1) Scholarly Discussion: Books that discuss Hamlet are not derivative works of Hamlet, even if they *link* to specific pages and phrases. ("Sentence three, para 2, page 231")


2) Debuggers: A program that links with and modifies any program/library, at the user's commands.


3) Mere factual data cannot be copyrighted, especially when it is merely the incidental data (ie, data structures designed for machine architecture reasons instead of artistic reasons). Even if an API were designed to be artistic, it could be described in a different form, without the copyrighted presentation.


Binary blobs are an ethical/pragmatic issue. I dislike those who don't really help out, but whom only link (nVidia...) but that they do so is as legal as me disassembling that driver and writing a binary patch, which itself would be legal to distribute.

BobWired
2007-11-07 09:50:00
chromatic,


I do believe in copyright. I hold copyrights. I have seen my copyrights violated... I got over it. I also believe in open source - I released some BEFORE Linux was around.


I am saying that copyleft is overreaching.


To me, copyleft is the same as General Motors suing a company that makes a replacement front bumper for an Impala, because General Motors says the replacement bumper violates the IP of General Motors design on the Impala, up to and including the dimensions of where the bumper attaches to the Impala.


In my mind, Bell Telephone, and General Motors, and Richard Stallman all deserve a special place somewhere for overreaching restraint.


Unlike RS, I am not telling you what to do, I am just telling you what I think. Copyleft doesn't cover that, yet <*:-)

cfulmer
2007-12-05 12:40:18
It's pretty clear that a "derivative work" under the GPL means the same thing as it does under copyright law. (Thus, the words "or any derivative work under copyright law.") So, when there's a large body of US copyright cases examining what derivative works are, it doesn't much matter what Richard Stallman or Linus Torvalds think the word means.


In general, a derivative work has to recast, transform or adopt expression from the original. If that doesn't happen, then there's no derivative work and no need to distribute source code.


So, the question is: what expression in a kernel module was recast, transformed or adopted from the rest of the kernel? I can't think of much.

chromatic
2007-12-05 13:04:46
@cfulmer:


So, the question is: what expression in a kernel module was recast, transformed or adopted from the rest of the kernel? I can't think of much.


Let's try a thought experiment. Take the GPLd kernel and its headers and compile your kernel module against those. Now take a hypothetical complete reimplementation of those kernel headers, distributed under a non-copyleft licence, and compile your module against those.


Compare the resulting binaries.


If there are any differences, then the binary compiled against the GPLd headers is a derivative work and thus any distribution without permission from the copyright holder is a copyright violation. Again, that's the binary, not the source code.


If there aren't any differences, then the Linux kernel headers are merely statements of fact, and are probably uncopyrightable. At least, the facts would be, and it's only the presentation or organization that's copyrightable.


To my knowledge, there are no non-copylefted headers against which you can compile modules for the Linux kernel, so it's difficult to imagine that distributing any binary modules without following the terms of the GPL or gaining permission from the copyright holders of the kernel is anything other than copyright infringement.