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."
Maybe I'm wrong here but perhaps this is a way to look at it. If I wrote a story that was derived from the LOTR then it would not be a derived work in the legal sense it would be copyright by me. Although I'd have to get permission to use the trademarked names etc. Isn't this a bit like the linux kernel issue? The module is not directly derived from the kernel it is an extension that uses the hooks that were created in the previous "story". Maybe I'm on crack here....
I have a theory that the truth is never told during the nine-to-five hours. - Hunter S. Thompson
If a module is "based upon" GPL code, then it must be released under the GPL as well.
If a module is not "based upon" the GPL code, then no such restriction exists in regards to its licensing.
In fact, you could say that the Linux kernel in a particular system was "based upon" these closed modules, but it is difficult to argue in the other direction.
I have been pwned because my
A certain amount of pragmatism has to prevail here -- were binary modules disallowed, the phrase 'shoot yourself in the foot' jumps to mind. Linux is probably better off with them, as it lowers the entry barrier to companys wishing to contribute. And that's rarely a bad thing.
((lambda x ((x))) (lambda x ((x))))
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.
This "grey area" exists because there is no clearly defined boundary defining the seperation between the kernel and the drivers. Modules are parts of the kernel which have not been linked yet. When they're required, they are loaded and linked with the kernel.
The fact that Linus states that there is no exception must worry a lot of companies out there who are producing binary drivers for Linux E.g. nVidia, or SciTech (Who started the LKML thread, after all!) Are nVidia's kernel modules under the GPL? If the possibility exists that they are then I would expect them to suddenly get cold feet over Linux.
If the kernel had a proper boundary with E.g. a set of API's that the kernel and drivers can use to communicate with each other then it would help to solve the issue of what is and isn't "the kernel". For example in Syllable drivers are ELF images which are loaded by the kernel ELF loader. The drivers are loaded under the kernels memory space but there is a very well defined API between the two, and a very clear seperation between them. Under this model I can argue that the kernel is actually being linked to the driver, so the driver can be under any licence while the kernel remains under the GPL. There is no "cross pollenation" between the driver and the kernel. Which is a good thing IMHO, if it avoids issues like the ones being raised on the LKML.
Syllable : It's an Operating System
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!
Linus talks all about linking source with the kernel and stuff like this. But guess what: With most binary modules this part is done by the user, not by the distributor, and this is clearly your right - you just cannot distribute the binary.
See for example stuff like driverloader (the ndis-wrapper around windows wlan drivers for the centrino and other cards): They are shipping a source which you can compile against the kernel headers (which are provided by YOU!) and will form a kernel module which can be loaded (by YOU!) against the kernel.
I really can't see how linus can claim copyright to the distribution of any source which happens to run with the linux kernel - but does not contain any part of it. And the enduser is free to compile and link this sources against the kernel, as the GPL allows modifications for own use without any restriction.
I guess the whole discussion is politics. Linus dislikes binary only drivers (for good reasons: they are unflexible, hard to debug and can cause user confusion and problems) and would like to have them not happen. But i don't think it is helpful to take a extreme shaky legal position (and downright confusing the users by making legal statements which simply do not apply here) to achieve this goal.
Although i dislike binary-only drivers in general, i came to the understanding that sometimes this might be the best you can get. In the business software world copyright is often a diverse field, and even companies who would like to release the source might be barred from that through NDAs and copyrights of third companies. So some companies have no choice but releasing binary drivers and i'm happy that they do at least that. If all would adhere to linus position we would just keep some users alone out in the rain. I'm all for helping users getting their hardware running. They might have made the wrong purchase in the first (getting a hardware with open sourced drivers would have been wiser), but just saying "tough stuff, you have lost, now go away" won't help them.
Linus really calls it the way he sees it, doesn't he?
Your logic is fundamentally flawed, and/or your reading skills are deficient.
You are a weasel, and you are trying to make the world look the way you want it to, rather than the way it _is_.
Wow. I hope someday I'm enough of a badass to be able to flame people like that and get away with it. (That said, it's particularly impressive how Linus can fling these barbs at people and still come off as a reasonable guy, unlike quite a few open-source "leaders". Having a sense of humor seems to help quite a bit.)
OK, from the article it seems that merely writing a device driver which uses the kernel module interface automatically makes the code a derived work. Also, building programs which include the kernel header files automatically makes those programs GPL.
Now, what if someone wrote another standard driver interface, separate from the kernel interface, wrote a device driver which implemented that and then wrote a GPL'd interface wrapper which translated the Linux module interface to that of the new standard?
Obviously, the wrapper interface code is now a derived work. However, does it also mean that because the new driver which uses a code interface which the GPL'd wrapper implements now is tainted by the GPL?
Also, does the driver become a derived work if the person who writes it initially does so to get some hardware working on his Linux box, rather than his other box which runs ObsureOS which also implements this standard device driver interface but the person hasn't installed the hardware on that machine yet?
Agrajag: "Oh no, not again!"
it lowers the entry barrier to companys wishing to contribute
I see it as encouraging companies *not* to contribute. Why give people Free code when you don't have to?
A binary file is not a contribution, it's just a marketing tactic exploiting our free platform. Since the Linux hackers have written an entire kernel, I don't think it's unreasonable for them to ask for module source code in return. Otherwise the module vendor is a parasite.
Expert in software patents or patent law? Contribute to the ESP wiki!
The SCO case will have some far reaching effects if a sufficiently bone-headed judge rules in certain ways. One of the cornerstones of SCO's "case" is their theory on derivative works: notably, JFS. JFS is in the same category of kernel module as AFS which Linus references. SCO claims that JFS is a derivative work of Unix and therefore falls under IBM's contract obligations and SCO's copyright. Were SCO's theory to be accepted, it would be theoretically possible to try to force AFS to be GPL'd under the same theory.
An even more interesting stretch of the theorem would depend on how this "derivativeness" would be defined. Why is JFS a derivative work? If it's because it has substantial similarities to other Unix file systems (tree structured directories, permissions) there's an interesting case against MS for NTFS and DOS FAT, as these both have tree-structured directories and MS has been a Unix licensee. Now, wouldn't that be fun. Unfortunately the only entity that could bring that case would be our good friends Darl and SCO at this time.
So, I think there's lots of things to quibble about here, and appended is part of the law that might prove relevent. I'll try to make a case for a driver company attempting to create a non-GPL driver that uses snippets of GPL'd code in a 'fair use' way.
.h files), is what matters, and not all of the compilable code even in the subset of files referenced are used to create the .obj.
The key I think is if you can convince a judge that what they are doing is furthering 'research'. But the rest of the tests obtain:
1) Binary Linux drivers are generally release with a non-commercial nature - people don't charge for the software (although the opposite case, that you have to buy the hardware, could be argued to contradict this) - specifically, note that the word "including" modifies the two called out styles of use (commercial and non-profit eduacation) - thus other things might very well cause this section to obtain.
2) The copyrighted work is humungus and designed to be used in explicitly this manner
3) The portion of the whole is miniscule - it could be characterized as a 'quote' from an original source
4) The effect on the market value of the copyrighted work can be argued (successfully, I think) to be _positive_.
One other thing: I am under the impression that you can't copyright tables of raw data (such as names and their numeric mappings), so with Linus, I'd argue the #defines and such don't count for these calculations. The comments can't be said to contribute to the (binary) final work, even if someone read them once. Linus noted, and I agree, the compilable code (macros, subs defined in
I think I've made a (albeit shakey) case for 'Fair Use' in this way.
(ObSCO: I wouldn't be _at all_ surprised if SCO is going to attempt to argue that the overwhelming weight of the detrimental effect of #4 on SCOnix's value will outweigh the relatively trivial amount of infringement of #1, #2, #3 should IBM attempt to suggest fair-use of a couple of lines here and there)
------
Title 17, Chapter 1, Section 107
Notwithstanding the provisions of sections 106 and 106A, the fair use of a copyrighted work, including such use by reproduction in copies or phonorecords or by any other means specified by that section, for purposes such as criticism, comment, news reporting, teaching (including multiple copies for classroom use), scholarship, or research, is not an infringement of copyright. In determining whether the use made of a work in any particular case is a fair use the factors to be considered shall include --
(1) the purpose and character of the use, including whether such use is of a commercial nature or is for nonprofit educational purposes;
(2) the nature of the copyrighted work;
(3) the amount and substantiality of the portion used in relation to the copyrighted work as a whole; and
(4) the effect of the use upon the potential market for or value of the copyrighted work.
The fact that a work is unpublished shall not itself bar a finding of fair use if such finding is made upon consideration of all the above factors.
I hate binary-only kernel modules, and all kernel modules should be available as source.
I recently purchased an IDE Raid controller, and naturally I chose one where the box said "Yes! Works with Linux!".
Sounds great so far, doesn't it? Problem was that the drivers turned out to be precompiled binaries for the kernel shipped with the following distributions: SuSe 7.1-8.0 and RedHat 7.2-9.0.
I returned the controller and demanded my money back.
First of all, I ran Debian with a kernel not supported by the binary drivers.
Second, with these kernel-spesific drivers I would be unable to upgrade my kernel (what if an dangerous kernel exploit is found?)
Third, "Yes, works with Linux!" is a lie. What the label should say is "Yes, works with a couple of Linux kernels!"
Fuck the binary drivers. I don't see the point. It's not like they would loose money by giving away the source to the driver -- they'll sell the hardware anyways, won't they!?
Yes, I'm replying to my own down-modded post. I feel that the Flamebait moderation is uncalled-for and believe that the moderator has simply missed the point of my post.
It is a morally incorrect stance to demand that 'because I did all this work that you are benefitting from, you must pay me back in kind', as the original poster to whom I was responding to said (in a sort of way). He correctly makes the point that this is a community and that it is in everyone's best interest (cumulatively) for everyone to play by the rules, so to speak, and release source code into the open. However, to demand that someone open their source code is to usurp that person's Freedom and that is where the moral error arises.
When a person derives a work from GPL'd code, there is a legal understanding that the derived code must be placed under the GPL as well. This is designed into the GPL because the derived work benefits from having existing source code to be based off of and as 'payment' for this use the deriving programmer gives up his rights to copyright the derived code. It is a raw deal to some, heaven to others, but all parties come into the deal knowing what is required of them.
OTOH, a person who simply writes a driver that is linked at runtime to the kernel is under no such obligation to do so. This is precisely because the code is not based off the GPL'd kernel code but rather designed to a specification which the kernel implements. The use of kernel headers and libs would arguably be considered Fair Use of the GPL-copyrighted work. It would be nice for the developer to include the source under the GPL, but he is in no way required to do so by law. He does not benefit from the GPL'd code in any way except in the sense that the GPL code exists and he is finding a way to serve a need in users of that code.
But another point that I was making in my original response was that closed source binaries in no way hinder the uptake of an OS. Windows, being the premier closed source whipping boy, does no worse because Windows drivers are closed. It is arguable that it does better because binaries can be standardized at the source rather than having many incompatible user-altered binaries floating around. Support becomes a matter of fixing a problem once and floating a new binary rather than applying a patch to the source code and hoping that everyone who's using the source can merge the changes correctly.
Linux is not hurt by closed source drivers. The Free Software Movement may be set back because drivers for advanced hardware may not be available in any form except binary, but Linux itself will soldier on regardless. In fact, the more drivers that are available for Linux (open or not), the more likely it is that a user will be able to use the operating system without an incompatible hardware problem.
I know some people just hate the idea of binary drivers to begin with, and if that is your stance, fine; I don't agree, but I understand where you're coming from. But if you're going to allow binary modules (as Linux does), why do it in such a half-assed fashion that a company that might provide a Linux driver can't be sure one way or another how you're going to view their code (exempt from GPL or bound by it)? Either do it right and enforce a clear boundary or just stick with source only drivers.
The huge problem pertaining to graphic cards is that they probably are, on PCs, the item that is replaced /upgraded most often and are developed at the highest pace immediately after CPUs.
While CPUs are well documented and a critical resource well looked after by developers, GPUs are in contrast shrouded in mystery and buried in patents. Also most kernel developers, I'd wager, don't care one bit about dual screens and accelerated OpenGL.
Before NVidia came on the scene with their drivers the high-quality multi-screen 3D Linux desktop was very very hard to come by. It think it is still true today that you cannot have accelerated 3D and xinerama together under XFree. This causes no problem with the NVidia drivers.
So yeah, it's bad, and the NVidia stuff does cause mountains of weird problems still (I still can have my USB webcam running with the combination of NVidia drivers, dual-head and SMP, not that this is crucial, mind you, but it is annoying). OSS drivers only give you 2D.
Meanwhile I'd like to know how are things with the ATI camp, probably not much better.
Paradoxically, if NVidia had not come forward with binary-only drivers, the situation would probably be a bit better even with their hardware: it would have been reverse-engineered to some extent.
However the pool of available talented OSS developer is finite, and some other project would have suffered almost certainly.
The original purpose of restricting derived works was to make it so that authors (companies or not) could not copy code from the public domain and claim it as private work, No?
Kernel Modules cannot exist without the Linux Kernel. This dependancy means that any part of the Kernel Module that depends on the kernel for *module* interface purposes is not derived work. It is when authors base their code off of other code that is in the GPL that they must in turn release thier code under the GPL.
So in short, if the module could have been written entirely with Manpages and documentation, it is not derived work. If the author views the code of other modules, then it is derived work.
Deriving functions and invoking them are two very different things.
I never understood why companies are so reluctant to provide the source codes. The reason I hear usually is that such source codes would help competitors to design similar hardwares. Is this just urban legend and the real reason is more an habit of secret, or does this argument is real (i.e. seeing APIs implementation helps you design hardware) ?
--
Go Debian!
I'm no C expert, but I imagine there is a to get a list of available functions from the kernel, some query or another. One that is available, at least as root, from userland. Something like how the System.map file is generated from a kernel compile.
.h files (which don't contain any inline'd code, just function defs), would the resulting .h files be considered GPL? After all if I use a GPL word processor, my documents are not GPL'd, right?
If this facility exists, would a dump of the function calls in the kernel, with apropriate calling information (data types, number of parameters, etc) converted info a new set of
In ethical belief, I side with the GPL-only crowd, in the rome-wasn't-built-in-a-day argument, binary drivers wins for me.
If I were NVidia, which seems to be both the most loved and most hate bin only driver, I would see if it was possible to move all protected/proprietary code to the X11/GLX driver. X11 has full (or near full) access to the system a t a low level, and it's BSD licensed so no toes are stepped on.
Please send all UCE to scally@devolution.com so I can f
Several issues need to be more clearly defined before the forest is seen for the trees.
The phrase "Her bosom heaved..." can probably be found in 152,234 fictional books. If I add a few more words, it becomes a sentence and can probably be found in 1,289 books.
Derivation means you take the original work which has some 'body' of substance and add or subtract to it. Using less than that results in an excerpt. We know that excerpts can be used all over the place. There is also a difference in whether the material is 'instructional' in nature. Significantly more leeway is given. The kernel and associates aren't 'instructional'.
Simply including one line of a system or function call will not make a work a derivation. Including a file (or, even if not a 'file') of substantial body will make a work derivative. Two people writing a play may write separate acts which are then combined and published. Their final work is not one derived from another, but a shared work - joint equal ownership. If they individually copyright their own 'act', the joining would be derivative - the former not.
Binary code is a derivative work. It could not have occurred without the source file. But is it a copyright derivative? Colorization of B&W films results in new copyright, but also contains information for the 'source' that is identifiable. Binary code doesn't except for strings which might appear.
If I use a proprietary compiler on a GPL code, I get a binary. In one sense, it's derivative. In another, it's not. If I create my own scrambler, and process the novel Gone with the Wind text, is that new work a copyright derivative? I think not. This may even imply that using a GPL compiler on GPL source may result in a work that is -not- GPL because it could only be created via the creators unique use of the tools.
Joining a transmission to a motor will not result in copyright infringment over either the motor or tranmission, without regard that they have complex connectivity, assuming there were only separate copyrights beforehand. Patents aren't an issue either provided there is one for the motor and one for the transmission.
Whoever put the two together can sell it or use it as they wish.
Titles cannot be copyrighted. For more protection over things like system or function calls which may be specific to Linux, it may be necessary to do more legal legwork. For example, it may be necessary to assign a trademark to the function one-liner. Overkill? Not in todays legal world. Perhaps a GPL for trademarks used in Linux will become necessary.
My driver is a parody of their driver. :-)
OK, I've wondered about this since the dawn of PCs, and wonder about it every time I have to install nVidia drivers: Why do this? Onceupponatime, you bought hardware and drivers were just kinda there with it. Then they started putting copyright callouts on 'em. Now they're treating 'em as if they were standalone programs - doesn't an nVidia card kind of function as a dongle for the nVidia drivers, if they're so worried about copying?
If the driver spec is floating around in the open, that's a value-add for me as a comsumer (the company can't force-obsolete the cards by yanking drivers away, easier to switch OSes) and for the company (it makes the devices marketable to more people, and they get free optimizations and ports from the OSS community). On embedded devices it's even sillier, I mean, what good does PalmOS do me if I don't have a Palm? If I were trying to reverse-engineer an nVidia card or a Palm, wouldn't I start with the hardware? And if I did make a 100% Palm-compatible, I could just sponge off Palm's binaries then... ditto nVidia...
So, why be all grabby about drivers anyway? The cavalier something-for-nothing closed-source approach to open-source support seems vaguely dishonest to me somehow - it just makes me uneasy, and affects my purchasing decisions. If they're so happy to rip off the OSS community, won't they also be happy to rip me off, I ask myself.
IMO, binary-only is a trap: All it takes is closed-source drivers for motherboard devices, the manufacturer doesn't make a new version of the drivers to support a new kernel, and you're stuck buying a new computer or using Windows. A trap. Since an open driver spec is a value-add for both the consumer and the hardware company, I am very suspicious of proprietary drivers and the motives behind them. Trap. Linux is better off without binary-only taps. I mean drivers.
Linus: "So you can run the kernel and create non-GPL'd programs while running it to your hearts content. You can use it to control a nuclear submarine, and that's totally outside the scope of the license (but if you do, please note that the license does not imply any kind of warranty or similar)."
-- All Gods were immortal.
-- S. Lem
My second printer was a Citizen 120-D 9-pin mono dot matrix, and it was also very Epson-compatible. It had a beautiful programmer's manual replete with examples of how to access each feature, from simple double width text to high-density image graphics, and even went so far as to provide timing details for the Centronics interface. {Hey, you might be plugging the thing into some device of your own construction}. It was even known for owners of EPROM burners to patch the charsets to match certain manufacturers' non-strict interpretation of ASCII {the BBC model B, for example, had a pound sign at CHR$(96) instead of a backtick, so it could keep the comment mark at CHR$(35) - a comment in BASIC is denoted by REM, but the # was used to specify immediate mode in assembler}.
..... you get a Quick Start guide which says "Plug the printer into your computer. Do exactly what Windows tells you to do" and a huge manual, replete this time not with useful programming information but with dire warnings about attempting to do anything "unauthorised" with the printer, and it probably illegal to examine the printout with a magnifier to see how the fonts are made up.
Compare and contrast that with today
IMHO the lawful owner of an instrument has the right to know everything about that instrument. My property can, by definition, contain no secrets from me {though I might reasonably be bound to keep any secret I discover}. It's time that this was enshrined into law. If you can't handle the concept of people knowing how to write drivers for your hardware then you perhaps shouldn't be selling it. Mandatory Full Disclosure would put an end to this argument once and for all.
Je fume. Tu fumes. Nous fûmes!
By his definition, if X was created primarily to work with the linux kernel, then it is a derived work, and therefore falls under his copyright regimen of choice (GPL). this is like saying that if you make a super efficient oil filter that was clearly designed exclusively for mercedes engines, then mercedes can tell you how to sell it.
while mercedes clearly has the right to protect its trademarks and copyrights, as long as the oil filter maker doesn't pass it off as anything but an aftermarket job, his business is secure. this is true whether the aftermarket add-on fits onto an easily identifiable interface (the little bit that the oil filter screws on to) or not (those places that hack up a whole mercedes and turn it into a stretch limousine or something - though the latter may well run into trademark issues if they are not careful).
yes, software is not like physical items in many instances. but, in this one, it is.
was a crackingly playable Quake 3. That was worth something to me.
Boffoonery - downloadable Comedy Benefit for Bletchley Park
An even better alternative would be for the proprietary part of the driver to be a provider of a public, documented API, so that anyone could write a driver for it for any OS, instead of it being a consumer of some particular OS driver API. This would completely eliminate the need to use any GPL'd code in the proprietary driver binary.
Such an API could (and in many cases should) conceal proprietary aspects of the associated hardware, and in so doing perhaps remain stable for more than one generation of the hardware. Also, such an API could (but in most cases should not) have hidden functionality (e.g. "reserved" arguments to functions) that could be transparently used by proprietary application code (assuming the driver for a particular OS passes the arguments through unchanged).
It depends rather the module uses or not other GPLed files, either source or headers.
It's as simple as MS claims to be. GPL infects everything it touches. If you use any header or any source code from Linux kernel (or whatever GPLed code) it MUST be released under GPL.
But this is theory. We must avoid problems with this kind of GPL violation in order to keep major non-free drivers avaiable. (oh no, if Stallman sees me talking like this... :o) At this moment popularity is also very interesting.
Let's not become like SCO.
-=-=-=-=
I know life isn't fair, but why can't it ever be un-fair in MY favor!?
You clearly missed the point in my signature. It has nothing to do with pessimism. Karl Popper (famous natural philosopher) wrote a book after WW2 called "The Open Society and its enemies" as a defence of democracy and a critique of totalitarian rule (including fascism, communism and various religious ways to rule).
In the book he argues that democracy has an incremental approach to society building whereas e.g. communism (and political islam for that sake) has a "revolutionary" approach. The point is that those who promise us paradise on Earth after we have made the society in whatever way they would like us to - they have always ended up giving us hell on Earth (Soviet Union, Iran, Afghanistan and so on).
You're mistaking the GPL for the LGPL. The API would not be subject to copyrights, but any sources compiled against it would be GPL because the license of the GPL does not allow for abstraction layers like that.
"[We'll be] really getting inside your head and making it an unpleasant place to be" -- Trent Reznor
There are a load of GCC headers and other GPL'd library headers which are compiled into any code you build. The library itself may be LGPL'd but the code, data astructure definitions in the headers are included into the resulting binary, so if this problem is as you state, it is a GPL issue rather than a Linux kernel issue.
If this is the case then *any* binaries produced by GCC or which even look at headers or data structures included with any GPL'd or LGPL'd library must also be [L]GPL'd.
Government of the people, by corporate executives, for corporate profits.
Hard to believe you're not a troll but just in case...
The Linux community wants SCO's "intellectual property" out of Linux. The GPL doesn't permit their IP to stay in there. It must be removed; the license and the law demands it.
But first they have to tell us WTF their IP actually is. We can't remove it because we don't know WTF they're talking about! Even IBM doesn't know and the judge couldn't figure it out either, which is why SCO has been compelled to tell the court WTF they think they own in 30 days time.
Linux developers are very respectful of IP rights, even if sometimes the users (*cough*MP3 thieves*cough*) are not. This is why we wrote our own operating system, from scratch, rather than subject ourselves to binary-only licensing.
that sometimes there is no other choice.
For example, try to find a combination of GPU and drivers that is good enough to play linux games like Neverwinter and Unreal or emulated games through WINE that is 100% open.
You cant.
I suspect that even if you were able to completly Reverse Engineer (through disassembly or otherwise) the windows or linux Binary-Only drivers and/or the interface and hardware APIs for and from that, make an open source driver, you would probobly be violating several patents or other IP thingos and would have your ass sued by the makers of . Also, the makers of would probobly state that using the code means you get no tech support, no warranty, no nothing. Plus, the makers of would get some kind of court order to state that since the open source driver violates the patents etc that distributing, using or working with it is illegal and have all the copies in existance removed.
Also, 802.11* wireless network cards. I dont know of any 802.11* wireless network cards that have 100% open source drivers for linux except for 1 or 2 that have been Reverse Engineered by someone. For those, you dont get technical support, you may not get warranty service and the manufacturers would probobly shut down the Open Source driver projects if they had a way to do it.
Personally, I love Open Source and Open Specifications (i.e. Open file formats, Open APIs, Open network protocols, Open hardware interfaces etc) and push for such things wherever I can. (I was involved in a push to get Electronic Arts to release stuff connected with the gameplay scripts for Command & Conquer Renegade. They didnt release it. But in the end, I wrote my own DLL that sits between the game exe and the official DLL and allows one to implement ones own scripts but its still nowhere near as good as having the official stuff would have been)
It's dangerous because if Linus's argument actually holds, than Microsoft can legitimately claim that Mono is a "derived work" from
It is also unnecessary because the kernel falls under a license. A license can state under what conditions something can be used. Whether or not the GPL has enough teeth, you could certainly write an open source license under which any module developed using the Linux kernel must itself have an open source license. Or you could write an open source license that explicitly prohibits the linking of closed source modules into the kernel. That makes the question of whether something is a "derived work" or not irrelevant and still enforces the intent.
Now, we only need to figure out what the intent should be. Do we actually want closed source kernel modules?
You don't have to agree with me, but I can only conclude that the restrictive GPL with its vague derived work clause is hurting Linux: a company won't put trade secrets into a binary driver to run the risk of losing these trade secrets because of a lawsuit based on the GPL which states that the binary only driver has to be opened up because it violates the GPL.
OR get a proper system into place like in Windows, for kernel modules so the modules are not 'derived works' (calling kernel modules derived works is pretty stupid IMHO, but that aside) OR live by the fact that not a lot of hardware vendors will offer drivers for their hardware. (which then results in the 'home brewn' drivers which are not always up to par).
Reading all the comments here I simply can't understand why so many people are so hardheaded. Don't you see / understand that to make Linux an OS with great support for a LOT of hardware, you have to convince hardware vendors their drivers will not be part of a GPL-case? Apparently not.
Never underestimate the relief of true separation of Religion and State.
> I'd rather run a 95% Free Software operating
;-)
> system, than a 95% closed operating system
All software should come with permission to study, share, modify, and redistribute. If 95% of the software you use comes with these freedoms, that's a great, but we mustn't lose sight of the final goal. We've come so far, we have soooo many pieces of software that people said we'd never have. If hardware companies would just give us specs, we could write our own drivers, and y'know I bet we'd write better drivers than they do!
Expert in software patents or patent law? Contribute to the ESP wiki!
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, and I have *NEVER* had a problem that wasnt 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).
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).
So far, most posts in here have been about binary only drivers provided directly by hardware vendors. My case is somewhat different, yet if I read everything correctly, I could still be affected by all this.
I am the author of the Linux Philips webcam driver, which supports a lot of Philips and Logitecht webcams, and a few others. This driver has been in development for nearly 4 years, has been formally introduced into kernel 2.4.5 and has been in continual support by yours truely ever since the first public release, some 3 years ago. Now here's the catch:
Part of the driver (PWC) is Open Source, even in the kernel under the GPL. With it, you have a functional webcam driver, but there are some limitations; you can't get the full resolution and not as high as framerate as is possible. For that, you need a binary only plugin, called PWCX. It contains decompression routines that allow you to use the cam at its full performance. These decompression routines fall under an NDA and are thus not public. Judging by the number of mails and webvisitors I think this driver has been quite a success. And now this may no longer be possible.
The point is, that by the strict interpretation held by Linus et al. I can no longer make this PWCX driver, thereby depriving a lot of users of a useful bit of hardware. Or at least make it quite a bit less enjoyable. I might as well remove the PWC driver altogether form the kernel then, hmm?
First off, I feel sorry for the thousands of Linux users that use my driver (PWC and/or PWCX) and may no longer be able to do so. Second, I'm getting pissed off beyond measure by this Open Source fundamentalism because it is my driver that may be turned into a worhtless piece of code.
It is my ass here that's on the line; I signed the NDA with Philips and if I goof up and accidently post the decompressor code or fail to protect it properly, I will be the one standing in court, not Linus. Second, I went through all the trouble of getting in contact with Philips, trying to convince them to help the Linux community and indeed they have, and I commend them on that. But they have their reasons to shield some parts from prying eyes (read: competition) and I can't blame them. So that's why there's and NDA and it's even fairly relaxed. Without the NDA there wouldn't even have been a driver.
BTW, Philips spent exactly 2 webcams and a couple of manhours on getting the paperwork done in order to get their product supported in Linux for 3 years across 3 major kernel versions, including online helpdesk. I think that's damn cheap. I cannot count the hours I spent on programming and debugging and tracing intractable bugs, not to mention the time spent in helping users by e-mail. I've also spent many an hour to get this PWCX module crosscompiled to various hardware platforms in order to extend it's Linux usage as much as possible. Now that may appearantly all have been a big waste of time. Thank you very much!
No, it is time to realize for anybody who thinks that the GPL is the Holy Grail of computing that this is not going to work. You cannot force anyone to oblige by a volountary license (because that's what the GPL is: nothing more, nothing less). As I wroting in my piece on tainting the kernel, if you make it any harder for (hardware) vendors to support their product in Linux, they'll drop it like a brick because they don't have to. This way Linux will never gain any real acceptance.
Finally, it's also not very wise to piss off people like me, who are doing their best, and made some small yet clearly apreciated contribution to Linux. I would also rather have a complete Open Source solution, but I'm realistic enough to know that is not possible in this Universe. So I think I've struck quite a good comprise. But if I am being told now: "well, that isn't good enough", I might just throw in the towel in the ring altogether.
- Nemosoft
"Fix it? It has been disintegrated, by definition it cannot be fixed!" - Gru in Despicable Me.
Under a strict GPL interpretation, modules can be considered "derived works" because they link dynamically into a GPL environment (the kernel). The modules depends on kernel headers to compile and use internal kernel data structures exposed through module interfaces that are technically under the GPL. Thus, if you interpret the GPL as written, then yes, all modules would be required to be released under the GPL.
Clearly such a situation is not acceptable to hardware manufacturers and Linus recognized this. Hence his "binary only is allowed for modules" rule. It is the kernel developers themselves that are changing the module environment to try and enforce the strict constructionist view of the GPL.
RMS recognized this issue and developled the LGPL. The intent behind the LGPL was to allow for the development of GPL'd code that could be incorporated into binary-only products without tainting those products provided the binary product announced was linking to LGPL code and made it available on request (or distributed it with the product). As long as a clear separation exists between the proprietary product and the LGPL'd code (in other words, the proprietary code links to the LGPL'd work. If it copied LGPL'd code into its code base, then it would become tainted), the two models can co-exist.
RMS doesn't like the LGPL. It is a compromise license designed to fit the realities of the world rather than what he wishes it could be.
In my opinion, maybe the simplest solution is to relicense future versions of the Linux kernel under the LGPL. The distribution and modification requirements for the kernel proper would still be in force as with the GPL and make it compatible with binary-only modules explicitly since this very issue of linkage and mixing is exactly what the LGPL was designed to address. For the record, I prefer the LGPL over the GPL for practical, real-world open source development. It provides the best of both worlds when approached correctly.
If the LGPL cannot fit, then clarification is required for the definition of derived works as encompassed by copyright law and how the GPL perceives it. v3 of the license should maybe incorporate a better, clearer definition of dynamic linking when no source is exchanged between two programs.
I agree with Linus. Binary-only modules should be acceptable under the GPL since they do not incorporate GPL'd works directly except through runtime linkage.
Of course, in real life not all are born equal. What I was trying to convey was that, in my opinion, society should work towards giving, e.g. disabled people, equal opportunity (though I do realise that it is a goal that cannot be reached in full).
Equal opportunity does not mean that everybody will be able to become astronauts. But it does mean that most people will have greater opportunity to shape their lives according to their wishes than in other societies.
And sure society is influencing how you live your life. But we also have a choice for ourselves. In my 'dream society' this choice is maximised.
The reason most of these companies develop binary-only modules is to keep a leg up on their competition. Put simply, companies like nVidia don't want ATI or Matrox getting hold of their improvements. Some drivers include proprietary technology and speed or quality improvements that either can't or (in the interest of profit) shouldn't be open.
Hardware manufacturers have very little that sets them apart from each other. Their biggest concern is that the driver source code would give away how the hardware works and therefore would show their competitors how to implement their technologies.
Let the hardware manufacturers develop their binary only modules. It's better than what we've seen with the wireless market...which is what we would likely see if we started spouting "show us your source code" to all of the hardware manufacturers that choose to make binary only modules...
And of course the other reason for a binary module is to charge for it (like is being done with Linuxant's DriverLoader) but...just like anything else worthwhile, there is already an open sourced equivalent under development.
This has been more than paid for by the thousands of NVIDIA cards sold on the back of supposed "Linux support".
Well, this is precisely why, I and many others, buy nVidia cards. I use a dual boot Win2K/Mandrake box and I know I'm getting excellent drivers for each operating system.
I personally don't see any problems with closed source binary drivers. The kernel provides (or should provide) interface abstraction to a sensible level where it's possible for safe "black box" drivers to be written.
Then again, I don't understand anything about writing device drivers or how tightly integrated to an os kernel they need to be. As a layman, I would have thought that the kernel provides certain services to a driver module which are accessable through an interface?
Card manufacturers have trade secrets to protect - that's the nature of the world we live in. No matter how much you or I may wish that drivers are all open source, if an opensource driver reveals details about the hardware, manufacturers are not going to want to opensource the software.
Do all of us Linux users a favor, then. Please switch to Windows. Or better yet, Mac OSX. Linux should not change itself to support the needs of the consumer-gamer crowd; if you want your expensive hardware to 'just work' why are you running on a tinkerer's operating system?
=====================
Together, we will drive the rats from the tundra.
Wouldn't it be more productive to concentrate on finding a solution everyone can accept?
Quack, quack.
My employer has a product that includes an embedded Linux system. Some of the product code runs in user space, some is implemented as loadable modules. I can find no clear guideline anywhere that tells me whether the product can remain proprietary (i.e., closed source).
First problem: Nobody's *opinion* (not even Linux or Stallman) counts - only a legal interpretation of the GPL has any weight in the real world (i.e, with my employer). Such a legal opinion does not yet exist (though it probably will post-SCO).
Second problem: Does the fact that some code is a module mean it has to be GPL'd? (These aren't device drivers, BTW).
Third problem: How much does the use of header files "infect" the code with GPLness?
As much as I love Linux, using it in a litigation-shy big company is more complicated that most people realize.
I think it would be interesting to see the support for these two statements:
and Where's he getting this stuff? I have serious doubts that copyright law contains the words "user space" anywhere. So just what causes that distinction to exist? My guess is that he's making it up (with the best intentions and desire, of course).That one about "anything that was written with Linux in mind" is particularly amazing.
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
...that include Linux kernel header files?
Linus commented in the LKML thread that "YOU CAN NOT USE THE KERNEL HEADER FILES TO CREATE NON-GPL'D BINARIES" (emphasis in original).
I've written a userland program for my company that #includes a single kernel header file (linux/nbd.h, the network block device).
It's mostly of academic interest, since my company has no plans to ship this program, but does #include'ing that GPL'd header file mean that the program must now be GPL licensed?
I didn't think so, since I'm not getting any actual GPL'd code in my own program (just #defines for ioctl() numbers, and a couple of struct definitions), but Linus's comment seems to say otherwise.
More and more these days, I view the GPL as moralistic masturbation. It's pathetic and sad. There are plenty of other things in this world that are worth being moralistic about. I don't see how software development falls under the same heading as "helping the homeless" or "stopping persecution" or any of those things we really ought to give a shit about.
Sorry, but I just don't want to waste my energy on that crap. My primary objective with my code is for people to USE it. Not to sit around smoking cigars with the boys arguing over who has a "right" to it. Grow up and find something worth fighting for, for chrissake.
See, I've used linux since around version .95
I remember, clearly, reading the kernel license, which was the GPL with an added clause: that binary-only kernel modules were permitted, as long as they use an interface that already exists in linus' kernel tree. So you could write a new binary only network driver, or scsi driver, or video driver, but not some totally new kernel functionality, and wrap it up as a module.
Now, I realize that this clause seems to have never existed, and I must have mentally mixed up some mailing list posts with the actual license... I can't find it anywhere in the kernel archives.. but I swear Linus' older kernel license was not just the stock GPL... it had some exceptions.
Anyone else remember this, or am I off my rocker?
This is where a model like an extreme version of the 'random model' might come in handy. Release neither the source, nor the binaries, until the sum total of donations crosses a certain mark.
Of course it would have to be a bloody good product to achieve it.
Karma: It's all a bunch of tree-huggin' hippy crap!