Tuesday, October 3, 2006, 06:34 AM
As many of you will be aware, earlier this year the Kororaa Project (a binary install method for Gentoo Linux) released a live CD showcasing Xgl and compiz technology. The live CD included non-GPL video card drivers from NVIDIA and ATI pre-compiled against the running Linux kernel. We received an email from a kernel developer insisting that we cease distributing the livecd with these drivers as he claimed they were a violation of the Linux kernel GPL license. Since this time we have been doing hundreds of hours of research looking into this issue (and the livecd was taken offline). We have received thousands of comments, emails and suggestions from the Linux community, for which we are very grateful. In the end we were unable to find absolute proof showing how the drivers violate the Linux kernel, perhaps because no-one out there is willing to step forward for fear of the consequences, but personally I believe the issue is the "grey area" created by the legal copyright definition of "derived work". We can spend (and did spend) a lot of time trying to come to a clear understanding of when something is and isn't a derived work and STILL not have an answer. There is also no precedence set in a court of law because this particular issue has not gone to court, yet (to my knowledge). I would like to point out that this does not mean there is not an answer, merely that I just didn't find it in this way. But bare with me and please keep reading.
If these non-GPL drivers do NOT violate the Linux kernel license, then fine, we could use them. But if they DO violate the kernel, then that is something we cannot ignore. So for the most reliable answer I think we need to go to the technical experts on the matter. Greg Koah-Hartman, a highly regarded Linux driver developer, said in his key note speech to the Linux Symposium 2006:
..there is no way that anyone can create a Linux kernel module, today, that can be closed source.
Linus has also stated that non-GPL kernel drivers are a violation - he did say that he thought NVIDIA might be exempt because they were not originally designed for Linux, but in general all non-GPL drivers are violations.
The kernel _is_ GPL. No ifs, buts and maybe's about it. As a result, anything that is a derived work has to be GPL'd. It's that simple.
He goes on to say
Basically:
- anything that was written with Linux in mind (whether it then _also_ works on other operating systems or not) is clearly partially a derived work.
- anything that has knowledge of and plays with fundamental internal Linux behaviour is clearly a derived work. If you need to muck around with core code, you're derived, no question about it.
This doesn't really address something that was originally written for another operating system and then later modified to better suit Linux, however I would assume once it crosses that line it then becomes a derived work. The ATI and NVIDIA drivers certainly have code designed to work with the Linux kernel (even if just the shim/wrapper), so while the binary component of the driver may not have originally been written for Linux, the wrapper certainly is. It's not a piece of code that magically happens to work on Linux, they have development teams working to make it work (that's its purpose).
From Greg's address:
When a company says that they need to "protect their intellectual property", that's fine, I and no other kernel developer has any objection to that. But by the same token, you need to respect the kernel developers intellectual property rights. We released our code under the GPL, which states in very specific form, exactly what your rights are when using this code. When you link other code into our body of code, you are obligated by the license of the kernel to also release your code under the same license (when you distribute it.)
Even Novell has stated that they believe non-GPL modules are violations of the kernel and will not be releasing anymore products supporting them. Andrew Morton and other developers have also spoken out against non-GPL drivers, and there is of course Arjan van de Ven's theoretical doomsday scenario.
Even if we are not convinced, surely we should give the kernel developers the benefit of the doubt over companies creating closed source binaries, just in case they actually do violate the kernel.
Of course this raises another issue anyway. Even if non-GPL components are not violations, are they ethical?
From Greg's address,
So remember, individual companies are not more important than the kernel, for without the kernel development community, the companies would have no kernel to use at all. Andrew Morton stood up here two years ago and called companies who create closed source modules leaches. I completely agree. What they do is just totally unethical. Some companies try to skirt the license of the law on how they redistribute their closed source code, forcing the end user of it to do the building and linking, which then causes them to violate the GPL if they want to give that prebuilt module to anyone else. These companies are just plain unethical and wrong.
Personally, I use Linux because I love it and I love free (as in speech) software. Why then would I protect, promote and support closed source drivers?
More from Greg's address,
Remember, no one forces anyone to use Linux. If you don't want to create a Linux kernel module, you don't have to. But if your customers are demanding it, and you decide to do it, you have to play by the rules of the kernel. It's that simple.
Do we make an exception just because these drivers give us unprecedented 3D support under Linux? Is that fair?
So in closing, at this stage I have decided to take the opinion that non-GPL modules are violations of the Linux kernel and are also unethical. This means we will not build non-GPL drivers against the kernel and as such Kororaa will not be shipping non-GPL modules in any future products. Of course if the end user believes non-GPL drivers are acceptable, then he/she is free to install them on their own system. For myself however, I am using the Linux kernel to create a product. If it was not for Linux then it would not exist and I therefore have a responsibility to respect the license of the kernel.
I guess in the end, the message from the Linux developers and the GPL license is this: "If you don't like it, don't use Linux. Simple. And if you do use Linux, then you should play by the rules." which I think is fair enough. I would like to emphasize that this is not a weakness of Linux, but a strength. The "grey area" of "derived works" in copyright law is just far too grey and we could argue both sides forever. But in the end if we just ask ourselves "why would we want to use closed source products anyway?" maybe we already knew the answer, we just weren't (and many aren't) prepared to accept it.




