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
The Open Graphics Project recently released schematics for their first product and are steadily making progress towards completing it for sale (http://kerneltrap.org/node/6262). If Libre graphics drivers are REALLY important to you, you might want to consider looking them up at "www.opengraphics.org". Despite being unfunded since early 2005 (which they could use some help with), they are still managing to make some headway. Those people with technical expertise (graphics drivers, graphics hardware, PCB design, chip design) would do well to pitch in to the effort. And those with money who also complain about the lack of Libre drivers should put their money where their mouths are. Rather than sitting around and complaining about it, the founders of the OGP decided to actually DO something about it; if you want to do more than just complain, they could use your help.
I used to think having a Linux kernel driver ABI would be a good thing. But then I started to change once I read about the OpenBSD ilk and their trials with wireless, RAID, etc. (and their recent "blob" song). My attitude these days is "not in my kernel".
Binary blobs prevent peer review for security. They are in themselves a security risk as any vendor could use them to inject God-only-knows what hooks into the kernel (Sony rootkit native on Linux, anyone?). And I'd be more inclined trust the quality of code from the Linux community above and beyond anything proprietary.
I'd rather go without. If we must have binary drivers, they should either be run in user-space through a strict Free-software gateway or provided as a safe byte-code for a driver virtual machine.
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"
Help build and support a real open solution. http://opengraphics.org/
Domestic spying is now "Benign Information Gathering"
I currently have a notebook with an ATI Mobility Radeon 9700. Frustrated by the lack of open source drivers, I installed the proprietary ones offered by ATI... Big mistake... it caused so many problems, one of which had been listed as a known bug for half a year by ATI.
If a vendor want's to close source their drivers, then that's their decision... However, they should provide a decent level of support. A known bug should not exist for any more than several months (imagine what people would say if they did this with their Windows drivers).
Linux users should not be treated as second class, if the vendors out there don't want to spend the time/resources developing good quality drivers, then why bother trying... instead, they should release as much documentation as possible about their products so others can.
I have a friend who owns an Nvidia graphics card and has had no problems with it. Secondly it seems that Nvidia's linux support surpasses ATI's. When it comes time for me to purchase a new PC, it will not contain an ATI graphics card.
Excuses Are Like Assholes - Everybody's Got One
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.
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.
I pretty much felt the same way until nvidia dropped support for cards that are TNT2 and older. The older drivers from nvidia's download archive are tough to build against newer kernels.
Granted, a TNT2 with 32 megs isn't going to make Quake4 playable, but it will work for things like quake3 and the original Unreal Tournament just fine. Not to mention most of the free openGL stuff like tuxracer, chromium and openGL screen savers.
I understand that things like S3 texture compression are proprietary to Nvidia's partners and there could be problems there, but couldn't they open enough to get basic accelerated openGL working at least on their legacy products?
"If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
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.
I have an EPIA M10000. Next time I build a PC, I'll probably pick another VIA EPIA. Why? Because VIA released source code for drivers for every piece of hardware in the system, from the S3 UniChrome graphics card to the hardware MPEG decoder, from the ethernet interface (hello, nVidia) to the hardware random number generator.
It's also a nice stable silent mini board with a CPU that runs on 4W of power.
If you don't need gaming-level 3D performance or heavy number crunching power, a VIA EPIA-based system is a great option.
(And no, I have no financial ties to VIA.)
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
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.
Only problem being that a lot of the functionality these games require is actually in the driver, which is very very likely to be closed-source forever. Its as if you want to recreate a full personal computer with a state-of-the-art OS on it, but only get the schematics of the hardware, with NO software whatsoever. This will take a while, especially since the closed-source stuff is filled with tons of functionality and is being extended at an enormous pace.
This sig does not contain any SCO code.
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...
And lo, stuff started working correctly, out of the box, with no makefiles involved. And it was good.
Shift happens. Fire it up.
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!