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"
Of course the drivers should work. The question is whether or not the vendors should freely license the code. Are you suggesting that open drivers can't work? I think not. More likely that they would work better, because people would be able to review and tweak the code.
Personally, I just don't understand why NVidia et al insist on keeping their code closed. Sure, there might be some niftly little performance enhancing tweak that they don't want their competitor to have. OTOH, their competitor probably has some nice tweaks of their own. All in all, I think that argument is a wash. I don't think the argument for keeping the drivers closed is pragmatic or ideological - I think it's merely due to inertia. That's what they've always done, and they don't have any reason to change. If they were forced to change - because Linux didn't accept their modules anymore, say - I'm sure they would, rather than lose sales. And it really wouldn't hurt them in the slightest. I'd guess that in the long run it would even help them, because the code sharing amongst all the manufacturers would accelerate the development of new abilities that would drive people to want to upgrade their hardware. Plus think of all the third party development that would drive up demand.
NVidia and ATI are hardware companies, not software companies. If they would just realize that and act accordingly, it would be a win for everyone.
Here lies the problem: Linux is shit without hardware. People arent going to want to use it "widely" without having to open a box at wal-mart to check the revision number of a peice of hardware to see if some barely-working craptastic peiced together, workaround, hacked, repackaged, 2 year old driver is going to work. Poorly.
The people that make computers useable are: Software developers, and hardware developers. If those 2 entities can't agree then useability goes out the window. Don't get me wrong, I love linux. But at the same time, the 500 bucks I just spent on a new video card and sound card are out the fucking window if I run anything but windows XP. I'm not waiting for some guy, or some group of guys (girls) to accidentally find some way to make my hardware "work" and by that, they usually mean it works electronically, but there is no real software to change any settings or use any advanced features. When the day comes that I don't have to act like a racoon going through the trash in my old hardware bin trying to find a video card (with more than 32 megs of vram) or a soundcard (with a signal to noise ratio of more than 60db, and better fidelity than a ghetto blaster) then I would be more than happy...scratch that, extatic to install Linux and get away from microsoft. GPL really needs to learn to swing a little bit from "idealist" to "realist"
Useability = hardware+software. Hardware limitations are useability limitations. Stop protecting your ideals and think about the end user for a change.
Windows has more viruses because linux has more virus coders.
Yet another example of FOSS ideology shooting itself in the foot.
There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
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.
Gimme a break! It's just brazen bullshit.
The nVidia exec saying that "writing video drivers is very difficult" is the most brazen weaselly crap I've ever heard. He's basically telling the FLOSS community, "Oh, you don't want this code, you couldn't handle it anyway."
The free/open source world has already produced several of the best operating systems, the best C compiler, the best web server, the best desktop environments, the best MP3 encoder, the best instant messenger clients, the best web browsers, the best email apps, the best typesetting software, and the best drivers for all manner of hardware. Linux supported x64 before Windows, runs on more and weirder architectures, and has better SMP support. So don't tell me FLOSS can't do hardware drivers, that's just FUD.
Why the hell couldn't the open source world produce awesome 3D video drivers too, if they could get the specs? What a stupid smokescreen argument against releasing the code.
My bicyles
I have installed many linux boxes in my life and i must say, drivers are the single biggest pain in the butt. From SCSI/SATA RAID cards to Videocards to new motherboard chipsets, it takes me huges amounts of time to configure or tweak a source driver into actually working. The Linux community somehow fails to make a standard API (like microsofts WDM) for drivers. Somehow they manage to break support for every module and driver every few minor kernel revisions.
What they need is a Linux Driver Model (LDM) and open up a nice clean binary interface for drivers. Then every small Taiwanese webcam or USB device manufacturer can release a proper driver for this OS actually giving desktop linux a real chance.
ATI and nVidia are in a tight race. I'm sure they continously disassemble eachothers driver to check the latest optimizations. Not giving up the source gives can give the edge for a few months more and thats what matters here. Just like many other hardware vendors in this scene the sofware is becoming a more and more important part to competing. Demanding opensource drivers for everyting will continu to cripple linux and make it an inferior desktop OS (and even hinder the server-OS adoption) to the end of time. WAKE UP PEOPLE. GET OF DOWN FROM THE IVORY TOWER! FIX THE DRIVER MODEL!
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
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.
Unfortuneatly, that over-simplifies things. Your analogy would only work if modern 3D was built entirely around three dimensional pixels, aka voxels. In reality, the core of 3D acceleration is built around meshes, and the 2D representation of the scene is calculated from that 3D mesh.
But when you throw in all the different programmability options (vertex shaders, pixel shaders, etc) modern GPUs support, it becomes an entirely different beast. We're talking about a piece of hardware whose capabilities are so complex people have devoted efforts towards using it for things OTHER than it's purpose, such as folding and even physics.
I'm sorry, but writing drivers for modern high-end 3D graphics hardware is NOTHING like writing drivers for a NIC, or even 2D graphics drivers.
My sig can beat up your sig.
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!