Open nVidia Linux Driver Pledge Nearly Complete
Ciarán Mooney writes to let us know that the Pledgebank drive to raise $10,000 for Project Nouvaeu is almost complete — at this moment it needs only 196 more people to sign up. Project Nouveau aims to provide open source 3D acceleration for nVidia cards. The drive was started by David Nielsen, whose blog explains what he hopes will happen.
With new technology like AIGLX, XGL and XEGL emerging, having open source drivers for 3d cards is very important. Along with the recent R300 work for the ATI cards, this will bring much improved graphics to the Linux Desktop regardless of architecture. I only hope that the ATI X200M card gets open source support soon too (obviously not from nouveau).
Also Fedora 7 (dure April) intends to include the nouveau drivers - which is great as out-of-the-box Fedora can't include the binary nVidia driver necessary to have AIGLX working.
And to anyone who thinks this is unnecessary as there is the binary driver - just wait until you card is dropped from the official support and the old driver stops working with some future kernel.
This sounds, for lack of a better phrase, retarded to me.
Blog Entry: I hope that a bunch of people on slashdot will give me money. The End.
If a manufacturer refuses to help the Linux community by providing drivers, wouldn't it make more sense to simply, oh I don't know, boycott their products?
Instead someone has the stupid idea to INCREASE nVidia's market share by getting a community nVidia gives the finger to to buy their products.
Way to encourage companies to support the open source movement... it's basically saying "don't bother writing drivers for Linux, we'll do it at OUR expense!"
Lunacy of epic proportions.
For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
[...] The pledge mentioned is however not supported by our project. We currently don't need any money and the person who set it up is not connected to our project.
Congratulations to everyone who pledged to throw money at something that doesn't need any.
His blog entry says it's basically a $10,000 "thank you" for taking on the project. Seriously, what? I'm giving someone a big pile of cash to thank them for taking on a project, even when they haven't made any meaningful progress toward completion of that project?
I hereby announce I will take on the project of solving world hunger. Please give me a giant no-strings-attached donation as a "thank you" for my initiative. I will then make very little progress toward my goal before finally abandoning it as too difficult.
The project's official website is even more interesting. It explicitly says they have no affiliation with the pledge drive, and don't need money.
For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
In fairness, the Nouveau guys (Heh, I hadn't grasped the name before but that's fairly clever...) aren't asking for money, say they don't need the $10K and make it clear that they're not expecting to have a reliable driver for the Fedora 7 release. The hype isn't their fault and I look forward to seeing what they come up with.
What I'm listening to now on Pandora...
Just to bring this back into view...
1 7&PHPSESSID=629ef486f166fab6ef8951de2a5ae96c
http://wiki.duskglow.com/tiki-index.php?page=OGPN
The Open Graphics Project is making steady progress.
Learning HOW to think is more important than learning WHAT to think.
if it's not worth $10k to nVidia to open up the source code themselvs, then why should it be that the software shouldn't be worth more than that to develop?
You misunderstand why NVidia refuses to open their driver code. They're not just being dicks, and they probably aren't too scared to expose their own proprietary technologies, because there ARE benefits to gaining the acceptance of the OSS community that translate directly into more profit.
The real problem is that NVidia didn't write all of the driver code itself, from scratch. They incorporated copyrighted code licensed from other companies, probably some derivative and some word-for-word. They probably use patented algorithms and technologies, too. Several other companies hold rights over the NVidia source code, in such a way that NVidia can't just release it and contribute it to the Linux kernel without violating its own agreements, or exposing the Linux kernel to litigation.
(I really wish I had a quote about this, I cannot for the life of me remember where I read it, but I *believe* that an NVidia exec stated as much in a press conference or release. So unless you do your own research, take me with a grain of salt.)
there's likely to be an inquiry by nVidia, to ensure that it was not inappropriated from them
I find this highly unlikely. Unless one of the companies holding licenses over NVidia's head assumes that they contributed under the table to the OSS effort, there are no grounds whatsover to assume that code was "inappropriated" (sic). NVidia itself has no interest in preventing the release of an OSS driver--if anything, it will help sell me hardware and drive their market share upward as they become the "OSS-friendly" graphics card company. (That's worth a lot of fanboy forum toadying.)
NVidia probably could develop a fresh OSS driver for release into the Linux kernel, via the 'clean-room' approach. It would have to hire developers to do it, provide them with enough specs/code to get the job done but NOT provide them with the licensed code or algorithms, and sit back and watch the payroll fly out the door. This would probably cost them a lot more than $10,000, given the complexity of modern GPUs and the relative rarity of the software skills to do this kind of work. But if someone else wants to do it for free, all they'd have to do is stay the hell away and cross their fingers.
Yes, you are missing something, since you are obviously not following the developer blog: 8 8
LRC, the best-read libertarian site on the web
More appropriate would be to say "or else use a kernel you don't want to." It's just as much of a nightmare being forced to upgrade your kernel as well. Gaming is very sensitive to kernel version (just read the Cedega release notes re: versions 2.6.9 and 2.6.10). Upgrading from 2.6.15 to 2.6.16 caused some Cedega-supported games to stop working.
My major issue with the binary driver is security. Because the driver is a kernel module, remote exploits of the NVIDIA driver will hack the kernel every time. Online gaming brings new life to the idea of remotely exploiting the NVIDIA driver, and not having an auditable driver is a big issue. It took them over 2 years to fix a reported, remotely exploitable issue. It's unacceptable to be forced to use such crap. The only other alternative is to use some other crap which suffers from exactly the same problems. I wish something would shake up the 3D market, but somehow I doubt this project is going to unseat NVIDIA. :(
mandelbr0t"Please describe the scientific nature of the 'whammy'" - Agent Scully
Often technologies will have in the license agreement "You can't release this code." You aren't required to like it, but if you sign the contract (and this stuff involves real, paper, signed contracts) you are required to respect it. nVidia and ATi both license a good deal of things for their drivers (S3TC would be an example). They can't just give the finger to these people and do what they want, they'll get sued and they'll lose because there's a contract in place.
One of the problems is that the drivers are x86 only (although there are old and outdated Itanium drivers). Another issue is obsolete video cards. nVidia could one day stop supporting the TNT or GeForce. What do we do then? If there are no open source drivers, we're SOL on updates. If there are open source drivers, then we can make continued improvements when needed.
You are either misinformed or a liar. The nVidia Linux drivers support x86, x86-64, and IA-64 architectures. This is actually one more architecture than they support on Windows (no IA-64 for Windows systems).
I agree it would be nice to see open source replacements for the nVidia drivers, but please lets not spread or further any FUD about the current closed source drivers. nVidia has done a nice job with the drives. I use them without issue on two different x86-64 machines (one AMD, one Intel).
isomerica.net | Foonetic IRC
It isn't that NVidia or ATI won't release code. They won't even release hardware specs. There are plenty of kernel and X.org hackers out there who would jump at the chance to write open-source drivers for NVidia and ATI cards. But to do that, you need hardware programming information. You need to know which registers in the cards do what, you need to know what opcodes do what. You need to know what data goes in what registers, or to which addresses, and what data the card sends back, in raw binary. The driver developers don't have this information, and without it, they can't write drivers. NVidia and ATI aren't providing this and won't provide this, citing the need to protect trade secrets. Just to provide the 2-D open-source drivers that X.org does have for NVidia cards, the X.org developers had to run the driver source files through a code mangler that makes those particular .c files look like an entry to the Obfuscated C Contest, or NVidia wouldn't provide enough information to do even 2-D acceleration. The whole point of Nouveau is the laborious process of reverse-engineering NVidia's cards to figure out this information.
Sure, there may be some secret sauce in there that makes for shinier 3-D graphics at a higher frame rate. But I suspect that shiny graphics aren't on the top of the list of things they're protecting. It's DRM. Macrovision's built into every video card that has a TV output port (so you can't use a VCR and tape a DVD movie.) Soon, HDCP will be built into every new graphics card so you can watch HD-DVD and Blu-Ray movies without being able to exercise Fair Use legally. And very likely, all you have to do to turn off Macrovision and completely piss off the MPAA is flip a single bit in a particular register. And it's likely that if hardware programming information was known about newer cards, cracking HDCP would be trivial.
That's why we're stuck with proprietary drivers.
Meldroc, Waster of Electrons
Will this project produce a driver that will let my Inspiron 8000 offload window rendering from the CPU to the nVidia GPU, so Ubuntu runs faster?
Or is it just a way to get higher FPS on 3D games running on nVidia HW?
--
make install -not war
A similar thing has happened with Java. A few programmers, some employed by RedHat, got together to produce clean-room implementation of the class libraries under the classpath umbrella.
Outsiders scoffed at the insurmountable task they were undertaking, saying it was a waste of time given Sun's implementation.
Now, with nothing to lose, Sun is on the verge of releasing Java under the same license that classpath uses!
nVidia have been very open about the reasons why they can't OpenSource their code - I think we have to take that as a true statement. It's not going to happen - period.
Can we clone their drivers? Maybe - but it could take years to do that - and no sooner we succeed then we'll discover that there have been four generations of new hardware since we started - and the hardware we can support will be so far behind that very few people will want to use it.
You *might* be able to do this for a relatively simple peripheral like a WiFi card - but graphics chips are probably the most complex (and least standardized) single chip device in existance. The driver has to contain a full-up compiler for the OpenGL shader language for chrissakes! (And no, you can't use an existing compiler or translate to some other language because this is a language that supports 4-way parallel arithmetic and has the bizarrest optimisation requirements imaginable!)
This is a massive undertaking. $10,000 doesn't even scratch the surface of the work involved. I seriously doubt that a cash injection of a million dollars would get you a working, useful driver within a couple of years...let alone maintaining it and continually reverse-engineering the next generation of hardware.
Your driver would probably (by necessity) infringe on a bunch of patents too.
Whilst I'd REALLY like the peace of mind of knowing that there is a working, efficient and up-to-date-with-modern-hardware OpenSourced driver out there - it's *so* not going to happen. We need to find clean ways to wall off the nVidia driver so that it can function without being a security loophole and so it can survive kernel changes and such.
www.sjbaker.org
I'd rather have closed drivers that work for these devices under Linux than some crappy open source drivers.
What is wrong with that?
1. nVidia can change their minds about Linux support at any time.
2. People may want the hardware to be usable on other arches than i86.
3. It'd be nice to be able to distribute a complete working nVidia Linux system legally.
What is wrong with any of that?
10,000 seems like a lot of money. Its not. I expect a driver dev to get $70+ per hour, this pays for 143 hours.
You are not going to get a driver in that amount of time.
But, I will give you clues. The nVidia chip is pretty high on the OpenGL stack. The chip itself handles most OpenGL primitive operations. It just won't do contexts (nor will the ATI). I don't know the underlying protocol to communicate with the chip, but I would guess it is packet based. Registers would prove far too slow. I would imagine that for OpenGL, VGA, video, and mode support you are looking at almost a thousand "registers" or eqivalents.
It may be possible to catch the kernel level packet interfaces -- mode setting and VGA extension should be reversable via emulation. But this won't tell you what any of the commands do. You could try iterating OpenGL and comparing generated packets... but...
Modern chips typically DON'T implement a fixed-function pipeline. So you will have to figure out how OpenGL shader compiler for the chip works (because you have to know the "machine code").
Good luck for a 4 week driver project. The shader compiler itself is almost a C++ compiler which has to be reversed, the communications format and the packet streams. I would give 10 man-years as a first estimate.
Or, you could try to get the vendors to "be nice".
But I won't do it for 10 grand. Sorry.
Just another "Cubible(sic) Joe" 2 17 3061
BUT, userspace drivers could allow us to kill and restart the driver when it crashes, keep the old slow ABI around so we don't have to bin the working hardware when the maker tells us to and put the driver behind a 'firewall' to prevent it seeing anything that would upset it.
I can see why they don't want to release the binary interface of the card; it's not like an ethernet card ... "put bytes here and they go on the wire" ... the "interface description" would be a complete description of how the card works and why it works that way. The "driver" and the "chipset" are two interwoven parts of the device. The choice as to which side of the AGP a particular function is executed is not fixed and depends on detailed design choices during the co-development of the driver and the chipset.
To try and put it clearly this interface is just like the interface between the different phases of GCC; the C-compiler syntax trees are the "interface" between the phases and could be described but it's not a fixed interface. The programs on the sides of the interface share code so that they know what will be sent and how it should work.
They are stuck here; they cannot release the drivers because of paper contracts; they cannot release the 'interface' because it would require an exact description of the driver to make sense of it; and violate the contract. If they release what they can they're just taking the piss.
IMO there are two choices that allow both sides to be happy
1) Usermode drivers
2) An opensource daughtercard.
A box for a usermode driver would need care. In some ways a process with a usermode driver would have to be very different (eg control of shared memory in OTHER processes, DMA access to memory). The support for restarting the driver would be very interesting.
The simple fact is that there is no hard line between 'software' and 'hardware' and if part of the 'hardware' actually runs on the host system I don't see a problem for open source. AS LONG AS the 'hardware' conforms to a published interface specification. There is IMO no difference between comforming to 'Usermode driver Version 1.1' and 'ATI I/O Port Version 12.43832' both have advantages and disadvantages but both are perfectly reasonable.
The current situation is not reasonable; the kernel interface between the driver and the rest of the kernel is like the GCC example above it's not "Interface version 1.1" it's "The driver module interface for kernel version 2.6.14-ac13" and because these graphic card are designed in part like 'winmodems' (so they can be both cheap and fast) the makers are basically screwed.
Number (2) would be an expensive little card that basically runs a lightweight version of the driver and means that everything on the host side can be open source and/or firmware blob. It in effect turns a 'winmodem' graphics card into a completely selfcontained one. (ie solve the problem by throwing moeny at it)
So where's the usermode video driver project?
Ya think? Pity the kernel developers don't.
:(
Beyond just allowing for better drivers, this would allow other ISVs who write software that interacts with the kernel to better support Linux and thus grow the Linux ecosystem. But making developers lives easier and more fun was apparently more important.
I've been ranting and railing about the stable API / ABI issue since the new development process was announced. I now have to wait for my distro to stabilise / patch 'their' kernel six ways from Sunday. Even today if you look at the differences between the SLES and RHEL kernels, they are significant, and they are only going to diverge further.
The new kernel development model encourages, nay, demands fragmentation. Welcome to the Unix wars part deux