View Single Post
Old 06-13-09, 06:07 PM   #1
calestyo
Christoph Anton Mitterer
 
Join Date: Dec 2006
Location: München, Germany
Posts: 48
Send a message via ICQ to calestyo Send a message via AIM to calestyo Send a message via MSN to calestyo Send a message via Yahoo to calestyo
Red face Reasons for keeping the nvidia driver closed

Hi folks.

I assume that this has been discussed over and over again before, and probably this forum is even the wrong place. But I really wonder, what keeps nVidia from open-sourcing their GPU drivers.

I mean there are of course some pros & cons (even when looking at the issue from nVidia's point of view):


- It's still questionable, whether this "glue" solution does not violate the kernel's GPL. Of course it's unlikely that anyone sues nVidia because of this, but on the other hand it gives a bad example.
A GPLed driver would avoid this.

- We see it nearly each kernel version, that the drivers do not longer build. There are possibly different reasons: usage of stuff not intended to be directly used, the fact that the dirver is not open and thus cannot be adapted just in time, et cetera et cetera.
Anyway an open driver would widely solve this.

- The same IMHO applies to X itself. Open drivers have it much easier to be synced with the X.org development.

- Adding more or less proprietary API or similar things. One example is VDPAU, another thing is perhaps TwinView.
Of course it's great to have them, but on the other hand, nVidia's main competitors will probably not use these stuff but implement their own similar techniques (and vice versa).
This means much more work for X and programs like Compiz (that make use of special functions) or mplayer/xine/etc.
Anyway, it actually hurts the community or better said: An open and perhaps more standardized and more manufacturer-independent way would be better for the community.

- The closed source driver makes it difficult to be distributed with many distros (just take the Debian Free Software Guidelines).

- The community cannot contribute or improve the drivers. Neither real improvements nor simple bug fixes are possible.
Just take the problems with suspend or recent problems with the consoles.

- It's difficult (or takes long time) to include new techniques like kernel based mode setting.

- It's nearly impossible to tell how secure these drivers are. Ok I do not believe that nVidia includes root kits ;-) but their coders are also just humans and code audits are not possible.

- We already have the separation in "current" and "legacy" drivers. Right know nVidia seems to provider good support and maintenance for the legacy drivers, but of course there's a tend for companies to concentrate on their most recent products and (at some point) stop support for their older hardware, where they do not earn any money.
It's also likely that newer technologies are not implemented for older hardware, even if this would be possible (correct me if I'm wrong, but AFAIK this is the already the case e.g. with VDPAU).

And there are probably far more problems with the closed model, but I've forgotten them right now.



I tried to think about the reasons why nVidia wants to keep this closed and whether it makes sense:

- The drivers may contain 3rd party code with proprietary licence, and thus cannot be opened.
=> The open sourcing of Java should have proven, that the community is able to replace those parts.

- nVidia may fear that it looses control on the driver development.
=> This is quite unlikely. Even if the driver would be open source, the community would still need the nVidia developers. Ok perhaps not need in a strict sense, but it's really nice if someone (who really knows what he does) does the work.
And it would be still possible to have an "official trunk" where nVidia decides which patches from the community go in and which not.

- nVidia may fear that it opens its business secrets.
=> Well I'm not a computer graphics expert, but are there really that much secrets? I'd rather think that there are real "secrets" in fields like raytracing or high performance rendering. Not our computer 3D acceleration for games and that, but more stuff like CGI / high performance raytracers/renderers for cinematic areas / 3D engines for computer games (e.g. CryEngine) but not the stuff that's exported by the driver.

- nVidia may fear that an open driver could be of less quality or that people blame nVidia if an open driver has bugs.
=> Look at the tens or hundreds of thousands of open source projects that prove the opposite.
Or just look at the kernel itself. People don't think bad of a company just because a driver in the vanilla kernel has bugs. They think bad of it, if it doesn't support the developers with technical manuals, or the community with open drivers.


Perhaps some of the nVidia employees can give us some information on the current reasons behind nVidia's policy regarding their Linux drivers. Or future plans and so on.



Best wishes,
Chris.

Last edited by calestyo; 06-13-09 at 08:16 PM. Reason: Adding another
calestyo is offline   Reply With Quote