Linux: the GPL and Binary Modules
An anonymous reader writes "When first made available in September of 1991, the Linux kernel source code was released under a very restrictive non-GPL license requiring that the source code must always be available, and that no money could be made off of it. Several months later Linus changed the copyright to the GPL, or GNU General Public License, under which the kernel source code has remained ever since. Thanks to the GPL, any source code derived from the Linux kernel source code must also be freely released under the GPL. This has led many to question the legality of 'binary only' kernel modules, for which no source code is released. Linux creator Linus Torvalds talks about this issue in a recent thread on the lkml."
The article is actually an email thread. It does explain boths views. Here's another look at it from Kevin Dankwardt. A little dated, sept. 2002, but still relevant today.
LWN.net do some great coverage of this issue in these articles:
http://lwn.net/Articles/53780/
http://lwn.net/Articles/51561/
These two articles are in relation to Linksys, but they cover the general issue. There have been some other great GPL-related articles on LWN.net if anyone wants to search the site.
Expert in software patents or patent law? Contribute to the ESP wiki!
Says this. Copyright law demands permission to base things on other things.
Je fume. Tu fumes. Nous fûmes!
you are aware that a good chunk of this thing (and all the kernel interface) is available in source, right?
I'm a programmer. None of the NVIDIA core is available as source. None of the NVIDIA GLX is available as source. The only source provided is a small kernel interface. Even if you're not a programmer, notice the compiled file sizes: nv-linux.o (wrapper) = 47Kb. nv-kernel.o (binary-only NVIDIA core) = 1.8Mb. The nv-linux.o source code is just over 6000 lines of code. Extrapolating, NVIDIA are keeping over a quarter of a million lines of code out of our site, and that's just the kernel module!
what's this about not having one compiled for your archetecture? Have you ever installed these?
I have -- for an IA32 architecture consumer/home PC. Have you installed one on a SPARC box? You can't! NVIDIA don't provide a SPARC architecture build. Have you installed one on a RISC PC? You can't! NVIDIA don't provide an ARM architecture build. Have you installed one on an iMac? You can't! NVIDIA don't provide a POWERPC architecture build.
I have run a lot of video cards in a lot of Linux boxes.
You sound like an unreformed Windows-using home/consumer PC builder. "Just download drivers from the manufacturer's support site" is the worst possible form of providing hardware support in an operating system.
Does my bum look big in this?
Because most Linux drivers began their life as "sub-par reverse engineered drivers". It was only because they were open source that they got better.
In some, common, cases they cannot. Eg.
Companies may licence parts of the code from third parties, usually under other licences that do not allow unlmited source release - so they would have to re-write (clean room) to get a version that they could release source for.
Regulations (depending on your location, eg. on things like wireless cards, modems) sometimes require that stuff works within set limits (eg. power, spectrum). Often the hardware is more flexible, and the limits have to be encoded in the driver software. The law will then require the company to take resonable steps to ensure that end users can't change the software to circumvent the limits. Usually this will mean preventing release of modifiable source code.
That's just two examples - there are plenty more reasons that might apply.
Companies like NVidia provide binary-only modules because they have to. Their code contains stuff that is patented and licensed from other companies, and they *cannot* legally release that code.
For example, NVidia's linux drivers contain S3TC tecxture compression algorithms, which is patented and licenssed. It is not theirs.
They CANNOT open source these drivers, nor could Linux developers create an implementation of them without being sued by the company who owns the rights.
And people just don' t seem to get this and it really really pisses me off. NVidia is just trying to do The Right Thing (tm), releasing Linux drivers at a LOSS nonetheless ( you think they make enough on Linux-owner sales of their cards ot cover these programmers salaries? I doubt it. ), and all the community does is flame them. No wonder hardware companies are so hesitant to support Linux in any shape or form.
I also need to throw this in to close... I don't know what people's problems with these drivers are. I have been using them since version 1043 (3+ years), and I have *NEVER* had a problem that wasn't fixed by reading the FAQ. And their feature and 3D support totally blows away any of the open source drivers (ATIs always lag 1-2 years behind the release of a card, and they still don't have all the features of the windows ones like FSAA and anisotropic filtering, while NVidia has had them for years).
And, as has been said many times before, NVidia doesn't own all the code in their drivers. Some of that is licensed. As a result, they are not allowed to change the licensing to GPL-only. To do that, they'd have to strip out much of the functionality that makes the card useful.
Overrated / Underrated : Moderation