Linux: the GPL and Binary Modules 657
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."
Linux linkiing analogy (Score:5, Insightful)
Pragmatism (Score:5, Insightful)
Re:Linux linkiing analogy (Score:5, Insightful)
Free? I don't think so. (Score:1, Insightful)
I believe this is wrong. The GPL doesn't say anything about having to release things for free. You could charge a million bucks. You just have to give the source.
Linux driver model doesn't help (Score:5, Insightful)
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 [sourceforge.net] 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.
Re:Pragmatism (Score:5, Insightful)
Just look at the nvidia drivers: The only thing you get are kiddies yelling that nvidia has such great linux support. Meanwhile linux didn't get any better from it, kernel developers get lots of bug reports caused by the nvidia black box (One of the reasons the 'tainted' flag was introduced), I still can't use the nvidia cards on platform not-quite-obscure-nividia-just-didnt-bother-compi
Jeroen
What Linus is missing here... (Score:5, Insightful)
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.
Re:Pragmatism (Score:5, Insightful)
Binary modules may "lower the entry barrier" for some companies, but it can end up being counter productive. Binary only drivers have tended to be crude ports of Windows drivers, and frequently crash the users kernel. This results in bug reports that the regular kernel hackers can't solve, and a misconception amongst users that Linux is unstable.
Far better would be if companies jumped wholeheartedly into the Linux way of doing things, and published their drivers under the GPL. Their competitors aren't going to get much of a leg up from seeing the source to most drivers, especially those for network adapters and the like, but the vendor can benefit from bug fixes provided by independent kernel hackers.
Chris
Re:Linux linkiing analogy (Score:5, Insightful)
Basically, aside from clean rooming, there is no 100% way to ensure that you aren't violating copyright, in ANY field.
Re:What Linus is missing here... (Score:5, Insightful)
The companies providing "binary only" drivers are only distributing this stub source (which they very often GPL) plus their propitary binary. Compiling and linking is usually done by the enduser. Providing real binary-only-drivers would lead to many problems and therefore just isn't done.
Re:What Linus is missing here... (Score:2, Insightful)
Re:Pragmatism (Score:4, Insightful)
But some products aren't that way; nvidia, for instance, at least *says* they have IP tied up in the binary part of their drivers that they can't afford to let competitors (ATI) get ahold of. I don't know whether it's the truth.....I haven't seen the code!
Re:What Linus is missing here... (Score:2, Insightful)
Why don't they just introduce a proper driver API? (Score:5, Insightful)
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.
Re:lines have to be drawn (Score:5, Insightful)
It might make sense to take that position, if such a thing as a "module vendor" existed. As it happens, it doesn't, and no one is out trying to sell binary modules for Linux. The creators of binary modules are *hardware vendors* and they are "contributing" by making their hardware compatible with the free system.
This is not parasitic; if they want, they can just not bother, and you can just not use that hardware in Linux. Let's not forget, it's not like you wrote the driver; why would you want to keep people from making their hardware usable on your system? If a manufacturer says "well, sorry, I want to support linux, but not if it means letting the competition get a sneak peak at this crazy technology in my drivers" you would just say, "ok, parasite, we don't need your stupid hardware."
When the manufacturer in question is a leading producer of video boards, such fanaticism is extremely foolish.
Re:Pragmatism (Score:5, Insightful)
Imagine a future where you install your core Linux kernel, then download a ton of different binary modules from different websites, have to hunt in the forums to mix-and-match the right versions, and end up having bugs nobody won't fix....
We have that under Windows! They're called "drivers."
Re:Pragmatism (Score:5, Insightful)
In certain cases, manufacturers can provide open source modules, but many times, there simply is no viable way. Complex hardware or hardware/software combination is usually covered by multiple patents, trade secrets, copyrights, and various agreements between different parties. In such cases asking hardware manufacturers to open up their internals and provide modules open source is like asking Linus to provide Linux under license other than the GPL. In neither of those cases is a single party is in control of all of the "intellectual property" involved; and it is virtually impossible to get all parties involved to agree to such a request.
Developer resources and graphic cards drivers (Score:3, Insightful)
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.
Original purpose (Score:4, Insightful)
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.
Re:Pragmatism (Score:5, Insightful)
Re:lines have to be drawn (Score:4, Insightful)
I make a video card which I expect to be used with Windows. Some of my users beg me to support Linux. I make a Linux driver. Now I'm a parasite?
An open sourced driver would be nice but not supplying one is now a crime? What am I missing here?
Why binary-only modules? (Score:2, Insightful)
--
Go Debian!
Re:Pragmatism (Score:5, Insightful)
Most drivers do NOTHING that justifies keeping the code under lock like it is done today.
Most drivers simply push data to the right place and fiddle with registers in the right way. There is nothing the competitor wouldn't have already thought off.
If youre competitor has to learn from your driver they are atleast two generations behind you and you have nothing to fear.
Its a corporate culture that is the problem, not patents (which already are open for anybody to see anyway), trademarks or trade secrets.
Jeroen
Re:What Linus is missing here... (Score:1, Insightful)
Re:Pragmatism (Score:5, Insightful)
What good is acceptance if it means a ton of binary only drivers? Acceptance is useless if you lose the biggest advantage linux has: free (speach) SOURCECODE!!!
Jeroen
But why close the drivers? (Score:4, Insightful)
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.
Re:Pragmatism (Score:2, Insightful)
And what good is having free but sub-par reverse engineered drivers that no-one except for the most idealistic zealots would care to use voluntarily?
As always, taking the middle ground is the best option. Sure, keep Linux core free but don't stop people and companies from interfacing it with binary only modules.
Give people the freedom to choose. If you are not willing to risk having them to choose "the wrong option" you're not giving them freedom at all.
Re:It's really simple (Score:5, Insightful)
When you compile a binary, you have to compile with some header files which are GPLed. So you are "based upon" GPL code right?
IIRC Linus argued that this wasn't sufficient. He stated that for a module needed to be written with Linux in mind (ie targeted at it), accessing particular data structures, then it would have to be GPLed.
Think Back (Score:5, Insightful)
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.
Re:Pragmatism (Score:3, Insightful)
Linus, nice guy, but wrong. (Score:4, Insightful)
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.
Re:Why don't they just introduce a proper driver A (Score:3, Insightful)
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).
Re:lines have to be drawn (Score:4, Insightful)
A few plusses just for maintenance come to mind, there are likely more for maintenance and other reasons such as good PR;
There's not much of a benifit to binary-only modules for the vendor except;
Re:Pragmatism (Score:4, Insightful)
Rubbish.
What you should have said is "...there is a lack of will."
The problem is that the companies don't want to release the source not that they cannot. Once they start looking serious sales volumes, due to being excluded from the Linux kernel, companies will find the will to release source.
Re:Why don't they just introduce a proper driver A (Score:0, Insightful)
possible.
With binary drivers the whole point of Open Source is lost, and you could as
well have a proprietary kernel.
As you very well know, most BSOD in windoze are mainly caused by faulty
drivers, do we want the same "feature" in Linux? what about other OSes like
*BSD, what should they do? and other arches like PPC or Alpha? should they all
give up their OSes and systems and follow the "one true way of Linux proprietary
drivers"?
And don't even tell me about those "cross-platform-driver-interfaces", what a
joke... FYI, that didn't work for M$, and it wont work for anyone else, M$
tried to make a "standard" driver interface to allow win9x drivers to work on NT,
it was a *DISASTER*; there are loads of hardware out there that didn't make the
transition and has *no* drivers for WinNT/2k/xp, because the manufacturers were
bankrupt, because they were clueless, because they wanted you to buy new
hardware; do you want the same to happen with Linux?
What we *need* is for hardware vendors to get a fucking clue and start
releasing documentation about the crap they sell, that is the only way for a
stable and open system. Hardware vendors that refuse to document their hardware
are just too stupid to be dealt with.
If I buy something, I have a *right* to know how it works and how I can use it
in any OS I like.
Best wishes
uriel
Re:Pessimists are mind-killers (Score:5, Insightful)
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).
Re:Pragmatism (Score:5, Insightful)
Yes.
And I don't say that lightly. Nvidia has some extremely intelligent staff, including former open-source developers like Gareth and Mark. Nvidia contribute code to open source projects like XFree86. Nvidia are valued members of the ARB and their proposals are both worthy and appreciated. Nvidia's support for OpenGL has helped prevent Direct3D from usurping the entire industry and for that act alone we should all be grateful.
But even with those things considered, I still think nvidia's closed source drivers are worse than no drivers at all. There are many reasons why I think this but the single most important reason is that the nvidia binary drivers take away the very freedoms that Linux grants you. Not for the same code but it's the same principles.
They had support. The Utah GLX nvidia driver wasn't the greatest but it did work with both 3D and 2D. The XFree86 drivers still support 2D on all nvidia cards and the performance is excellent.
And really, I don't know when you started to use Linux, but when I started (pre-1.0) we didn't have video drivers. We wrote them ourselves. We chose the freedom of Linux over the convenience of binary-only platforms with working drivers. It shames me that so many of the current generation of Linux users don't understand what the world before Linux was like. It was hell. Closed source binary-only drivers everywhere. Buggy code that you couldn't fix. Linux changed all that. Finally we have source and freedom and rights. Finally there's something to be proud of; an entirely open source operating system built through the sweat and tears of 1000s of volunteers. And you would sacrifice all that for slightly faster 3D graphics? I can't comprehend your state of mind. Your priorities are completely foreign to me.
Re:lines have to be drawn (Score:5, Insightful)
The manufacturer is selling hardware. Anything they want to protect from being exposed in the module means little to other hardware companies who have competent developers. The details of how the hardware is controlled and any setup and tables can be discovered using the Windows drivers and debuggers.
Contrary example: In Nvidia's case, they don't own everything they ship so unless they convince other companies to opening those parts (unlikely) Nvidia has to either drop those parts or replace them.
The motivations of different companies are important. Server-grade hardware companies fall all over themselves supporting Linux in the main kernel source tree. If Linux becomes popular on the desktop -- even if modestly so -- the kernel modules that support desktop software will likely be open. Nvidia might even change (though this is speculation on my part).
Re:Pragmatism (Score:4, Insightful)
You've hit the nail right on the head, there. There's only one way to convince capitalist, profit-driven corporations to support Linux, and that's to let them know that their non-existant or sub-standard Linux support is losing them money.
If you do buy a card without checking that it's supported in Linux, simply return the card, buy an alternative that is supported, then write a letter to the original card manufacturer stating that you returned their $XXX.XX card because of sub-standard Linux support, and you look forward to their support of the only operating system you use in the future.
Re:Why don't they just introduce a proper driver A (Score:2, Insightful)
Re:Pragmatism (Score:3, Insightful)
What about users like me? I'm not a coder. For me the source might as well be written in Hebrew. I get no benefits from having the code available. I can't debug it, I don't know what things do what. All I care is having a drivers that work. If I could choose between closed and open drivers that worked as well, I would choose the open drivers. But I don't get to make that choice, so I chooce the closed drivers, and use them instead.
Re:What Linus is missing here... (Score:3, Insightful)
If I download and run application X under the GPL, then I need to enter exactly zero contracts with anybody. If I want to redistribute X, or a derived version X1, then I need to enter a contract under the GPL, but not sooner.
Say I download and run application X, and then write and distribute application Y. The only way that I would need to get into a contract (the GPL) with the author of X in order to distribute Y is if Y is in some way a derived work of X. The GPL is not a EULA, it cannot add any restrictions on my behavior until such time as I do something with program X that normal copyright law does not allow by default.
This is exactly the situation with kernel modules. If kernel modules are not a derived work of the Linux kernel under copyright law, then the it does not matter what the GPL says. If kernel modules are considered original works under the law, then they can be distributed in exactly whatever form the author chooses, regardless of what the GPL says. Microsoft likes to talk about the "viral" GPL. But the GPL can never be more "viral" then copyright law is: as long as something is an original work, the author can never be compelled to GPL it.
This whole question is simply one of legal interpretation. What is a derived work under the law and what is an original work? If something is a derivative of GPLed code like the kernel, then the GPL is required, if it isn't, then there are no licensing requirements. At least Linus seems to understand this much.
Re:Kernel and module compability (Score:3, Insightful)
The IDE Raid controller you're talking about uses some functionality which I have a patent on. To make this functionality work the driver includes some code which of course I wrote and are the copyright owner.
I see no point in releasing any of my code as that would lower my income, because none of the manufacturers would need to buy my code anymore...
Ok, I admit, I'm not holding any patents and didn't write any driver code that's included in any RAID driver (not that I know of, at least)...
But I think you get the picture here... It doesn't have to be the actual hardware manufacturer who's responsible for the drivers not to be released in source form. They might be restricted by other parties....
Re:Linux linkiing analogy (Score:5, Insightful)
Sounds fair enough to me.
Re:Pragmatism (Score:3, Insightful)
the real problem is... (Score:4, Insightful)
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)
I think that's a bad precedent (Score:3, Insightful)
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?
Re:lines have to be drawn (Score:3, Insightful)
Yes, it is "parasitic". And the kernel license should be updated to put a stop to this. If we believe in free software, we want to support companies that support free software.
When the manufacturer in question is a leading producer of video boards, such fanaticism is extremely foolish.
No, it's not. It will give other companies a chance to get into the market, with Linux-friendly products with open source drivers.
You see, leading or not, nVidia doesn't really have anything that is so unique. Dozens of companies can put together decent 3D graphics cards. Maybe they aren't quite as fast or quite as cheap, but they are plenty good.
Re:Pragmatism (Score:5, Insightful)
How typical of "free software" zealots to whine and whine for improvement, and when they get it, to whine again that it isn't good enough because it is missing feature X or because it doesn't support obscure platform Y. nVidia is giving you drivers for free, whining because you think they should just give away all their source is not the way to get more companies follow in their footsteps, releasing drivers for Linux.
I've heard the argument that welcoming binary drivers is counter-productive to getting more drivers that are fully open source. While this may well be true, having a somewhat functional driver which works on some platforms (or better yet as in the nVidia case, a well-functioning driver that works on most platforms) is certainly better for the users than having no driver at all.
Re:Pragmatism (Score:5, Insightful)
And if you wanted hardware accel on one of the currently-supported platforms, but Nvidia didn't release any drivers at all, you'd still be on your own.
I understand where you're coming from, but I'm firmly in the "I just want my expensive hardware to work properly" camp.
Re:Pragmatism (Score:2, Insightful)
Sacrificed? It doesn't go away because of a videodriver. I don't know what choices nvidia have. Maybe they could release enough to make it possible to write a good driver? And if so, they should. And we should definitely keep bugging them for not doing it. But to say that chosing a binary only driver sacrifices the whole operating system including the effort of "1000s of volunteers" is a bit over the top.
Of course, it's a dead end. If you believe in the open source model, you know that. But for now, it gives us the opportunity to run good hardware in linux.
Re:Pragmatism (Score:5, Insightful)
NVIDIA haven't given us anything for free. They have given us 6000 lines of code to interface a big black box to the free and open Linux kernel. This has been more than paid for by the thousands of NVIDIA cards sold on the back of supposed "Linux support". They have given us absolutely no device specifications whatsoever. Experience shows us that, over time, Linux kernel programmers write far superior Linux drivers than the hardware manufacturers.
Currently, NVIDIA have offered a sop to the whining Linux fanboys -- "here's your binary, black box secret drivers -- just like in Microsoft Windows". The drivers cause mysterious kernel panics which can't be debugged because they originate from somewhere inside a black box that only NVIDIA may look at. NVIDIA can't leverage the support of hundreds of kernel developers when trying to fix it. It sucks.
If NVIDIA gets away with providing half-hearted binary-only support for Linux, why can't every other hardware manufacturer? "No, you can't have any specifications for this Ethernet chipset, it's top secret -- here's a binary HAL instead". "No, you can't have any specifications for this SCSI disk controller", etc.
Because they have to (Score:3, Insightful)
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).
Re:But why close the drivers? (Score:5, Insightful)
In ye olde days, drivers did nothing more thancanfigure and move data back and forth to a piece of hardware. They were fairly trivial pieces of software, and so no one cared if they were protected. Many types of drivers are still like this today. Network card drivers typically do nothing magical.
A few generations ago, hardware designers realized that they could offload some of the task traditionally done in hardware to the driver. Thus they could simplify the hardware and save money. The driver for a WinModem doesn't just configure and communicate with a hardware modem, it actually performs in software some tasks that were usually done in the modem hardware itself.
At this point, drivers aren't trivial programs, but represent substantial investment and competative edge for the hardware manufacturer. If WinModem company B could look at WinModem company A's driver, they would see the tricks that they used in order to reduce the part count that much further. Company B could immitate Company A, and match their price.
Video cards are like WinModems, although the competititon is not based price but performance. The card manufacturers are using tricks in the driver in order to boost the performance of their hardware. Those tricks may confer to them a competetive advantage, so they won't open source the drivers.
Smart companies are quick to release software as open source when the software doesn't give them a specific and compelling competitive advantage. Cisco released CUPS as OSS because they felt they would benefit far more from having a community enhance their internal printing system than the would be hurt because Bay Networks could reduce their overhead a few hundred thousand dollars. Cisco is not going to open source their routing software anytime soon, because other router manufacturers could use it to compete against Cisco.
Re:Pragmatism (Score:3, Insightful)
Whether they gave it (or are giving it) away for free is arguable. Clearly, someone who bought an nVidia card prior to there being Linux drivers for it got something more than he originally paid for when the Linux drivers were released. Linux desktop users are still in the minority; are there any figures to back up your claim that nVidia have sold thousands more cards than they otherwise would have just because they have Linux drivers out now? My guess is the actual number of additional cards sold is much lower. Most Linux users I know are developers who do their work on Linux but boot into Windows for games and other graphics-heavy applications. I consider this as simply choosing the right tool for the job.
If NVIDIA gets away with providing half-hearted binary-only support for Linux, why can't every other hardware manufacturer? "No, you can't have any specifications for this Ethernet chipset, it's top secret -- here's a binary HAL instead".
If the binary driver works at least for the majority of Linux users, the majority won't really care if it's binary or not. Most Linux users, myself included (though I don't have a funtioning linux box atm) are content with drivers that work as specified, though we would of course also rather see the drivers open-sourced. Until Linux (or rather, the community) becomes a powerful force in the harldware marketplace (having Linux drivers becomes a major competitive advantage) I believe we must get used to compromises like this or throw out binary-only drivers altogether and face the possiby dire consequences.
Re:Pragmatism (Score:4, Insightful)
That's odd, as it is the exact reason I switched over too. Plus stability and power, of course. But you know what else I find odd? You. It would seem that you would rather I didn't have the freedom to do what I want with the OS on my computer. It is really pretty simple.. To each his own. I'll run my binary modules, unload them if I think I have a bug to test it, and get my very nice hardware acceleration out of a card that I payed $200 for.
But really, I think this argument comes down to one issue.. If you have to release and use everything as open source, then you are almost as restricted as having to release and use everything as closed source.
P.S.: I do agree that I would _like_ open source drivers, and I have e-mailed nVidia's PR department about that. But I'm still going to support them, as they've shown more support for their hardware than _some_ companies.
Re:the real problem is... (Score:4, Insightful)
The problem is trying to determine causality. You could equally argue that were it not for NVidia's binary drivers, there would've been enough need for someone to have spent the time and money to reverse engineer an MX-400 and build good open source drivers. From that point on, NVidia would have a vested interest in supporting the community drivers with their new boards, since it would be cheaper than maintaining their own in-house closed drivers.
Instead, they beat us to the punch, and removed 99% of the motivation to do it "right".
Pragmatism-Stealth DRM. (Score:1, Insightful)
Everyone with a binary driver, regardless of platform. Can you honestly say that you control your computer, in every sense of the word? Why not?
Don't push it... (Score:3, Insightful)
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 [sourceforge.net] equivalent under development.
Re:Linus, nice guy, but wrong. (Score:2, Insightful)
That's a misleading concusion and resulting analogy. The work doesn't fall under the copyright of his choice just because it's a derived work; there's no such law. It falls under the GPL because presumably the derivative work authors agreed to those "extra" set of rules when they used the linux source to create their work.
There's no such agreement with Mercedes. If there were some kind of GPL'd Mercedes that everyone collaborated on, the analogy would make more sense. Then companies wouldn't be allowed to create custom add-ons for tricking out your GNU/Mercedes without also making their add-ons GPL'd.
Pragmatism has to win out (Score:3, Insightful)
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.
Error in the article re: copyrights and licenses. (Score:1, Insightful)
With all due respect..... (Score:2, Insightful)
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?
=====================
Sure, less realistic.. (Score:3, Insightful)
Re:-1 Flamebait (Score:3, Insightful)
What pisses me off are the, as was said, hardheaded people who are of the immovable position that either a driver is open source or it's evil. Or worse, those who say that either it should be open source or not exist!
You correctly, finally someone did it, pointed out that even if nvidia wanted to release their drivers under the GPL they can't! The owners of S3TC would own them inside of a week.
And it is not a bloody solution to just say people with such hardware can just bite off. I want to see Linux on the desktop, not just relegated to the server room, and that is only going to happen with good driver support across the board.
I'm sorry, not everyone who makes a board wants to GPL their drivers. They all have their reasons, right or wrong.
I would rather see such drivers then have to tell someone when they ask me about linux,
"Yes, it's a great OS. It's stable, runs fast, isn't full of bloat, blah, blah, blah. But you can only buy a model blah video card, model blah sound card. Because those are the only ones there are drivers for." Keep in mind that model blah and blah would likely be pretty old and out of date.
And to those saying that nothing "important" would have to be released to OS their drivers, that would logically mean it should be pretty easy to write OS drivers that are just as good as the, in this example, Nvidia binary drivers. Why is it then I haven't seen such drivers? (I am not a programmer, so I am likely off base on this, feel free to reply if I'm wrong)
Thank you no, I'll take my fully working, yes with binary nvidia drivers, system anyday. bah!
Re:Linux linkiing analogy (Score:5, Insightful)
Generally, if I sit down with Linux and write "hello world" using standard C calls and compile with normal methods, that's mine and not a derivitive work at all. The problem comes with drivers such as nVidia's. They are not just "windows" drivers with a wrapper for linux. They get into the system and re-route system API calls, much about with non-standard kernel features and the like. And that's the problem with "bianary" modules. The problem with nVidia's approach is that it's hard to tell where their drivers start and the kernel begins...heck, they could rewrite half the kernel and simply override it in their module, it would be hard to fiugure out for normal users...it's that poteitial for abuse that is the cause of such arguments.
On nVidia's defence though, Ther was talk for 2.6 about removing the API calls they try to legally use in favor of others that would require 100% GPL code. That's also a problem because certian vocal parts of the community are actively trying to make the current scheme too "sour" for compaines like nVidia to publish their code. On a side note, there are certian things nVidia CAN'T publish if they have to use GPL! Much of the hardware they build is "patented" from outside sources...they would get into IBM/SCO style lawsuits...but without any cause to defend themselves! That leaves them [and us] with bianary drivers--or NO drivers.
My opinion right now is that Linus is sticking his head in the sand on this issue...other stuff I've read he seems to fully support how nVidia is working, but then allows changes to APIs that clearly theaten that way of working???? This IS a key issue with linux...If companies can't use proprietary, binary modules to protect their/others IP, then Linux will never be a truly "first class" OS. What's needed is for the community to "standardize" the rules [make them just a bit more attractive to business?]...and stop the FSF and such from "legal creeping" against the people who go out of their way RIGHT NOW to support Linux.
Re:Pragmatism (Score:2, Insightful)
But, as you rightly observe, what was the point of them doing that? Dismantling the scanner carefully showed exactly what chip was in it, IIRC it was a National something or other, so I got chip data freely, in tha way that most semiconductor manufcaturers have always provided it. The printer could have been reverse engineered using a little bit of code to monitor the parallel port or USB while printing under a Bill OS. (I never got round to looking inside the printer.)
So, all they have done with their secrecy is to put a minor delay in the way of someone who really needs to find out how it works. A competitor needs at least hundreds of millions to create a new family of ink jets, probably a few millions for a scanner, (tooling charges for the plastic bits alone are horrendous, without software or any custom silicon). so why bother hacking into a competitor's drivers, if you have the budget there are better ways of spending it.
It is only people with a legitimate need to use a device under a non-Gates OS who are impeded by this obsessive secrecy, there are not thousands of hackers sitting up late at home building reverse-engineereed inkjets or scanners. The only thing such manufacturers do is lose the 5 or 10% of business (an increasing proportion!) that they might have got from people who need or want to use Linux, *BSD, or whatever. They do not protect themselves in any way from serious reverse enginering, it is just not possible.
Nvidia is a fairly minor annoyance IMHO, the graphics cards are VERY popular and need support, and what the have done works, on the 3 diverse machines with Nvidia cards at muy disposal. Sadly it does not integrate well into SuSE's Yast configuration system, you always have to edit XF86Config by hand, for which I blame SuSE as Nvidia say the drivers may be distributed, but SuSE doesn't distribute them as part of an integrated package.
The hardware manufacturers could save themselves and us a lot of trouble by publishing proper driver specs in a form that could be easily compiled for any reasonable OS and CPU. That means some kind of definition of registers and how to fiddle them, as you say. It used to be that way, years ago a graphics card or a printer had a proper manual.
A side issue is that if they do disclose details, it is actually much easier to prove copyright viotations as far as the hardware is concerned, and it also prevents a competitor taking out a patent on something they have done, by demonstrating prior art. There is every advantage for a full disclosure of how hardware works, it gives nothing away to the competition that they can't get anyway, although I think some of the operations involved in 3D graphics, or for that matter dithering algorithms on a printer, may be a bit more complex than your description might suggest.
It gets complicated (Score:2, Insightful)
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.
Linus doesn't get to define "derived work" (Score:4, Insightful)
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.
Re:Original purpose (Score:2, Insightful)
Now, if you took Hamlet and added a few scenes, that would indeed be your work, and nobody could copy the "new" work without your permission. That's what the public domain is all about. In fact, that's where Disney make most of their money -- derive movies from public domain fairy tales and tightly control the resultant work.
Re:Pragmatism (Score:3, Insightful)
If NVIDIA gets away with providing half-hearted binary-only support for Linux, why can't every other hardware manufacturer?
Because those who provide full-hearted open-source support for Linux have a competitive advantage over NVIDIA. If you don't like the Linux support for NVIDIA, don't buy their hardware in the first place. No one is forcing you to do so. If you feel you have been tricked by the advertisement of "Linux support," return your video card and demand a refund.
Re:Linus, nice guy, but wrong. (Score:3, Insightful)
The GPL explicitly states that it's intended only to add rights, not take them away. It isn't a signed contract or a dubiously-legal EULA; it's just a limited copyright permission. If you can create drivers for Windows without permission from Microsoft, you can create drivers for Linux without permission from the kernel contributors.
One difference is that creating drivers for Linux may be easier than for Windows, because the source code is available. But arguing that a programmer merely seeing the source code makes the next thing he/she writes somehow a derivative of that code seems contrary to both the spirit of free software and the nature of creativity. It's like saying that novelists shouldn't read books, or that composers should never listen to music.
Re:Linux linkiing analogy (Score:1, Insightful)
Now I'm not sure where you're coming from, but I don't think it follows logically at all to assume the free exchange of ideas somehow implies a complete disrespect for any and all notions of private physical property.
Re:Linux linkiing analogy (Score:2, Insightful)
Um, yeah, I can see how that would be a problem. Here, let me help:
The drivers start at the beginning of the files you downloaded from Nvidia, and end at the end of those files. The kernel pretty much includes everything that was under
After the installation, the nvidia modules are two files...a binary kernel module, and a binary XF86 module. The kernel is generally a single image at this point.
I can see how this could be tricky...
So anyway, in the larger sense, I agree with you that binaries ought to be allowed. However, I disagree that there is any question where the lines are drawn; if you use GPL code in your stuff, or statically link to it, your code must be GPL. If it doesn't, it doesn't have to be. That's really not that complicated, assuming you paid attention when you wrote the thing.