Should Linux Use Proprietary Drivers?
Richard Gray writes "Should Linux accept proprietary video/graphics drivers from likes of Nvidia and ATI ? The GPL written by FSF says that the license prohibits proprietary drivers. From the article: 'To write open-source graphics drivers without help from Nvidia or ATI is tough. Efforts to reverse-engineer open-source equivalents often are months behind and produce only 'rudimentary' drivers, said Michael Larabel, founder of a high-end Linux hardware site Phoronix ... Torvalds has argued that some proprietary modules should be permissible because they're not derived from the Linux kernel, but were originally designed to work with other operating systems.' The FSF however, sharply disagrees. 'If the kernel were pure GPL in its license terms...you couldn't link proprietary video drivers into it, whether dynamically or statically.' Where do you fall on this issue?"
As for this statement:
Firstly that is a very arrogant approach, some of the best developers in the world work on open source stuff, saying it is to hard is just stupid. As for customers not asking for open-source drivers, all I can say is huh? There have been dozens of calls over the years for drivers to be open sourced!
Regardless so long as the drivers are proprietary, I will continue to load proprietary drivers into my kernel, the FSF has a fairly narrow minded view here, yes it would be great if the drivers were open, but they aren't, and I am not going to restrict my system capablities just because the FSF doesn't approve.
GeekServ Unix Consulting Services (http://www.geekserv.com)
Linux should be *open* to using either. If not than it's not really a "open" tool.
The real question is: Should we buy hardware with closed source drivers.
Tom
Someday, I'll have a real sig.
Useability beats ideology. I want my GeForce to work, I will use the drivers that work, regardless of license.
You say you want a revolution....
Proprietary drivers should never have been allowed to link to the linux kernel - doing so makes them a derivitive (yes, even those drivers that predate the linux kernel). Allowing them to link has diluted efforts to create free drivers, diluted the GPL's effectiveness (in the kernel) and allowed Nvidia & ATI to appear to be contributing more then they actually are.
I'm lucky (hah!) enogh to be using a driver from a vendor who shows a little more support for OSS, but while the software is quite stable, the actual hardware is crap (and utterly useless for games).
There are shills on slashdot. Apparently, I'm one of them.
As long as them drivers are free and have no limitations on being distributed with a system, there shoukldn't be a problem. Elsewise, leave them out and just download them.
This is my sig. There are many like it but this one is mine.
Yeah, it's great to be an idealist, but there are some of us who want usable 3D. I fall squarely in the latter category, and I will continue to load proprietary modules into my kernel.
Any move by the FSF to prohibit this will only drive people away from Linux, since it's not likely that NVidia and ATI will ever open their drivers completely. Free Software is great for some things, but occasionally the FSF has to recognize that some proprietary elements are unavoidable.
If a Linux Distro is really open, should the user not have the freedom to choose if he wants to use open-source drivers or proprietary drivers. Being slavish to the 'open-source only' rule is in fact counter to the spirit of it all.
Oh goody, another licence flamewar. Seriously, proprietary software is going to be a fact of life for ever, intentionally annoying your users by preventing them using binary modules is only going to reduce Linux uptake.
The Linux kernel offers API's and services that allow proprietary applications to run. If you look at a video driver as an "application to display information" then I see no reason why a proprietary driver couldn't be used with the Linux kernel. Just stick to a well defined set of API's and this discussion becomes a non-issue.
To Terminate, or not to Terminate, that's the question - SCSIROB
So it doesn't matter what people think about it. It is allowed... move on. NVidia and ATI will never release open source drivers that have the same performance as their proprietary closed driver so what does this matter? If Linux wants to survive in the 3d performance arena that require high performance video cards then it has to allow proprietary drivers otherwise it is screwed. If the Linux kernel changed to not allow any proprietary drivers to ever link in any way with the kernel then Linux desktop use would be reduced dramatically. I have been using it for 9 years and 5 years exclusively on my desktop without Windows but I would drop it in a heartbeat if the latest 3d games and 3d modelling software that normally get released for Linux wouldn't have about same performance as a Windows setup. If MS wanted to severly hamper Linux growth it would be relatively simple... buy NVidia and ATI and stop releasing drivers for Linux :). Some might say that the server market would keep growing the same but that would not be true because without 3d performance I bet that quite a few developers would stop producing code for Linux which in some way or another would also eventually slow server ocde development(less people with the skills on Linux).
Not true. I want OEMs to write the drivers because they have the specs in front of them. Networking drivers have shown many times that releasing the spec to OS programmers often results in better drivers than the OEMs. There's no reason to assume the same can't happen with video drivers.
TWW
"Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
OGP seems a brilliant idea but without significant financial backing from a major player (nVidia, ATI, IBM, someone like that), it's basically just a hobby project. Who is going to back a piece of electronics on which they have no IP and which ANYONE, even say nVidia or ATI or some bloke on eBay, could copy and sell?
I hate IP issues as much as the next slashdotter but I really can't see this taking off.
LinuxBIOS has taken off in a TINY way because it allows large Linux-dependent companies to boot their machines faster for a tiny piece of free code that they can stick on a £5 flash chip themselves with a £100 device.
OpenCores and the like haven't because the designs are fantastic but to actually put them into hardware in any bulk way costs an awful lot of money.
OGP is basically a large OpenCore project that relies on being able to manufacture cards that are built with some VERY expensive components, for a final price which may be way more than any average graphics card on the market but yet can't outperform that average card. And there's no way to reduce that cost even if you were to assemble it yourself (in fact, it would probably cost more).
And then you have, say, 10,000 units of these cards that you sell at just over cost (literally, because any more and people would laugh at the price tag). The profit you would make would be nowhere near enough to justify the effort, to secure the next batch or to convince some investor to plant millions into the scheme.
And in the end you get a few thousand people who are happy running an open system that costs them much, much more in terms of time, effort and money than **any** card on the market.
It's not going to change the world and it's REALLY NOT going to be available anytime soon in any shop (even the ones who stock every obscure component known to man etc.) for anyone to even notice it exists. By the time it gets there, it's going to be obsolete. By the time the new, improved model is released, it will also be obsolete.
Then you have legal problems like what if nVidia decides it hold a patent on something (hardware patents are much easier to enforce than software)? What if the cards explode in someone's machine? The disclaimers are all well and good but the slightest bad press will kill the entire project stone dead.
And in the end a graphics card is just a graphics card. Those that need the fancy 3D are gamers (who don't care about binaries) or 3D professionals (who wouldn't touch stuff like OGP with no warranties, no performance advantage, etc.).
The standard Linux kernel API (syscalls, etc.) presumably isn't sufficient to write a high-performance video driver. That's why they're writing kernel modules instead of applications. But kernel modules by their nature are loaded into the same memory space as the kernel itself and muck around with its internals quite a bit; they no longer communicate purely over well-known stable APIs.
I dont want to know how it works.
I just want to know how to talk to it properly so I can make it do what it is supposed to do (and push it to its full potential).
My microsoft optical mouse might have code in a little embedded processor inside it (I dont know) but regardless of how it works, what matters is that it talks over USB and it talks using a known documented protocol (so any operating system is able to use it).
My Intel Pentium IV 3.4GHz HT CPU does contain microcode that I dont have any source code for. But, it doesnt matter since the documentation of how to talk to it (the x86 instruction set) is open. (I dont know if the physical specs of how to talk to it and how to build a motherboard for it are open though)
Its the same with graphics cards. We dont want or need the origonal design files for the custom ASICs used on the cards. Or the complete schematics for the cards. All we need is details of how to talk to the card and how to get it to draw stuff on the screen. (which these days means full hardware accellerated 3D being powered by OpenGL) If a manufacturer can provide a graphics card where the hardware interface is open and which supports all the things you need these days for games like Doom III, Unreal Tournament and Neverwinter Nights (like pixel and vertex shaders), I for one am prepared to put my money where my mouth is and support them.
A: No.
A little more seriously, let me just repost part of a comment that really illustrates the veracity of this answer:
(seen on slashdot, not said by me)
Nathan's blog
Lame is better than Fraunhofer?
no...not really.
Firefox is better than Opera? Once again, I disagree.
Gaim is better than Trillian? Not on my windows desktop.
You're basing fact on your opinion. Stop it.
Binary drivers are generally just crap ... look at the stability problems they cause with Linux. Even *if* they were good, they should never be accepted because they are unmaintainable. The OpenBSD people seem to be a really forward-looking bunch. It annoys me that so many in the Linux community have such short-sighted and highly flexible ideals, because it is Linux (not OpenBSD) that sets the standard for free and open source software ... and they aren't setting the standards very high. ATI and NVidea deserve to be marginalized as Linux gains market share ... let a company that freely provides technical documentation (as anyone selling a product should) get some dollars. I'll cheerfully accept a video card that is theoretically 50% as fast if it has the complete and stable drivers that result from good open documentation.
It is also a pragmatic issue; heavy user reliance on proprietary drivers would make Linux development unsustainable.
Just to pick one obvious example: if someone's running a proprietary video driver, and their network driver is crashing, it's proven in practice to be extremely difficult to distinguish between a subtle bug in the network driver and a bug in the video driver scribbling over memory in the network stack.
Without visibility into the source code for everything running in kernel-space, issues like that turn out to be extremely labor-intensive to fix and diagnose. We don't have that kind of labor available. And of course if the issue's in the proprietary driver, the kernel developers can't fix it anyway.
A pragmatism that ignores consequences isn't much of a pragmatism.
Jumping out a window might be a "pragmatic" way to leave a building, but most people would agree the pragmatic solution would be to take the elevator to the lobby and use the front door instead.
DNA just wants to be free...
I find this fanaticism in the open source community is what's crippling Linux. OMG, some are actually considering using code in the kernel to block proprietary drivers. Imagine the problems that is going to cause for the end user. That's insane, but that is the mentality in the open source community that puts the GPL over the user. The gpl purpose is to foster cooperation not to force it. If an entity believe its needs to protect its IP, then why does that preclude their software from operating with GPL software. Majority of users (99%) want something that just works. They don't care about proprietary, open source, or philosophy. They don't have a CS degree nor care to get one. They don't even read the EULA. They just want the function which coincidentally is the purpose of making software. The end is function! The end is the user! GPL is just a means to get there but it is not the only way.
You don't have to be smart to use a Mac, you just have to be smart enough to buy one
Not allowing proprietary drivers to use Linux is a huge mistake, and imho contrary to the philosophy of free software.
Stallman says that the 0th law of free computing is that I own my computer. And he's right. I *do* own my computer, and I own my video card as well. If using a proprietary driver is the only way to use my video card on my computer, then who are the Linux community to tell me I can't? Or to even make it harder for me?
The fact is that Linux's hostility to third-party drivers -- even open ones -- is a huge detriment to the operating system.
Linux should take a lesson from Solaris and establish a standard interface which allows anybody to write a driver, open or not, and have it be binary-compatible with the operating system. Under Solaris, it was possible to create a single binary driver and have it run unchanged under Solaris 7, 8, 9, and 10. My understanding is that Linux deliberately cripples binary driver compatibility just to make it harder for anybody to ship pre-compiled drivers. That's the behavior I'd expect from a cell phone company, not an open operating system.
Also, for the record, I've written video drivers for ATI cards for a living (Solaris). They're insanely complicated; with literally thousands of registers. Reverse-engineering would never reveal the full complexity of the hardware.
As for documentation, the documentation I've worked with (from more than just one video chip vendor) is almost always woefully incomplete. It doesn't work to "just release it"; it really does involve a lot of cleanup or phone support with the people trying to develop software. Remember that the documentation is written by and for people who can just get up and walk down the hall if they have a question. Once you start supporting third-party developers, it can be a nightmare.
Where do I fall on it? The FSF is full of it when they say that you can't write a proprietary binary that links into GPL software.
The only thing that the GPL can control is derived works. If the work isn't derived, it isn't under any sort of GPL control.
Now, creating a module that can link statically or dynamically without it being derived IS a tricky thing. But it can be done.
If the interface is well documented, the code creation trail is legally clear, and ideally it works unmodified on at least one non-GPL code base, the module cannot be derived from GPL code and the GPL doesn't apply. At all.
I'm not sure ATI or nVidia's modules qualify but they are close.
Actually distributing a static linked binary containing GPL code would probably be a GPL violation. (Note that nVidia's binary doesn't contain GPL code, and "magic numbers" from header files are not copyright, any more than the same sort of information taken from Windows headers taint WINE.)
Distributing a non-GPL-derived dynamic linked binary, or a binary with end-user compiled glue code would not be a GPL violation. The end-user just happens to dynamically link it to GPL code, or compile it with GPL code, but that is his right under the GPL and not the distributor's problem.
I am not a lawyer, etc, etc.
The card manufacturers insist that open sourcing the drivers lets valuable IP out into the open that could hurt their business. True or not, that's the company line and they aren't going to change it. I fall into the category of "I want my damn video card to work". And I want it to work with all it's bells and whistles. The solution is that I taint my kernel by installing the Nvidia drivers. I sleep just fine at night having done this dirty dirty thing. But every day I wake up and get 3D acceleration across both of my monitors and it makes me happy. I'm staunchly in the middle of the road on this one.
Jesus may love you, but I still think you're an asshole -BVB
RMS eventually founded the FSF because he couldn't get the source code to a broken printer driver. Learn your history or be doomed to repeat it
Well.. has he get the driver code yet ?
"Useability beats ideology."
:-)
RMS eventually founded the FSF because he couldn't get the source code to a broken printer driver. Learn your history or be doomed to repeat it.
History doesn't change facts, it helps explain them. In this case the fact is RMS is still *not* getting the driver, I guess that makes the FSF a failure.
In any case, useability is still the champ.
I don't use Linux, so it doesn't much matter to me if it uses proprietary drivers or not. But I do use FreeBSD which has a proprietary driver or two available for it. My answer based on my FreeBSD experience is: "NO FSCKING WAY!"
There are many advantages to Open Source software, and to me, being fully in control of your computer is one of them. But when I used the NVidia driver I was not in control. When it was first announced I was in the process of building a new PC. On the basis of NVidia officially supporting FreeBSD, I decided on a GeForce card to show my reciprocal support. For a few months I was happy. Then the proprietary nature of the driver rose up and bit me. When a new FreeBSD CD set arrived on my doorstep via my subscription, I wasn't able to use it until NVidia updated their driver.
The last straw came when after SIX MONTHS of no updates, I went searching around for reasons. It turned out that NVidia had decided not to update the driver because they were tired of tracking an evolving kernel. They weren't going to release a new Binary Blob(tm) until the 5.x branch was declared stable. While that might make sense on the surface, how come none of the Open Source XFree86/X.org drivers had the same issue? How come none of the Open Source DRI drivers in FreeBSD had the same issue? This was especially painful because the driver KEPT CRASHING the kernel! In twenty five years of using Unix, BSD and Linux, this has been the only time I have seen a kernel crash.
I went to the store and bought a low end Radeon. I am using the Open Source radeon driver, and couldn't be happier. It has never crashed on me, and I never have to wait for someone to get around to syncing it up with an OS upgrade. The transition from FreeBSD 5.x to 6.0 was painless, which is how it should be.
Keep the Binary Blobs(tm) out of my operating system!
Don't blame me, I didn't vote for either of them!