Linux and Closed Source: nVidia

August 23rd, 2008 by Jeff

Tags: ATi, Closed Source, CUDA, Drivers, intel, Linux, nVidia, open source

Posted in Technology, 1 Comment »

nVidia has always felt a need to keep their drivers closed source, providing binary driver packages for Windows, Linux, Solaris, and BSD. This article focuses on the rationale and possible solutions to this “problem” in the case of Linux.

For the last few years, nVidia has been offering drivers for the Linux platform, albiet on a slightly delayed schedule from its Windows counterpart.  On top of that, the Linux version of the drivers seems to be feature-incomplete from its Windows counterpart.  This could simply be a response to the fluctuating feature set found in most Linux distributions; for instance, the Windows drivers assume DirectX is installed along with a few other support libraries Microsoft includes in Windows.  On the Linux front, the fluctuating versions of X.org, the kernel, and other packages make it far more difficult for nVidia to keep up with feature parity between the two versions.

Now, you might ask yourself why nVidia chooses to keep their drivers closed source.  According to numerous articles available via a Google search, nVidia’s drivers seem to contain “intellectual property” that isn’t deemed appropriate for release under Open Source licenses.  There also seems to be hints at outside code from other companies included (PureVideo, perhaps?) within the binary drivers that nVidia cannot legally release under copyright law.

Lets examine the “intellectual property” side for a moment.  If indeed nVidia’s drivers do contain code that could give away trade secrets, then it only stands to reason that they don’t let this code out in the public.  ATi and intel might jump at the chance to see the inner workings of their competitors drivers.  Except at this point ATi and intel are working with the Open Source community to build their own FOSS drivers.  So, any “intellectual property” that ATi or intel might have included in their driver packages has since been opened or reverse engineered to a point where they can’t hide any trade secrets the might have about their hardware.  With that said, nVidia could simply follow suit and release their intellectual property into the open as well.  Sure, some of their secrets would get back to ATi and intel, but at this point ATi and intel have shown nVidia their hand as it were.  Which leads to the next reason nVidia doesn’t open their drivers: 3rd party contributions.

While no clear evidence can be found that nVidia uses 3rd-party software in their drivers, nonetheless there is the possibility of its existence.  In that case, nVidia cannot legally release those pieces of software to the public.  If that is the case, barring any business agreements with the software vendors nVidia uses, perhaps some of the proprietary software could be rebuilt by nVidia teams before a public release, thus sanitizing their code to be 100% pure nVidia code.  That would certainly be one solution.

There are hints to a few other reasons behind nVidia’s reason to remain closed-source. And while they can be valid, the evidence is purely circumstantial at best.  One reason could be the ability to pass Windows registry values via xorg.conf into the Linux driver.  If this is indeed the case, one would assume the Linux driver is a derivative of the Windows driver.  While this isn’t necessarily a bad thing – having one codebase is a lot easier to maintain than two – it does bring up the possibility that some of the code inside those drivers are works of Microsoft and can’t be revealed.  Another secondary reason is nVidia might be hiding something.  Perhaps quirks in their hardware they have patched with specific lines of code in their driver? Again, this is purely circumstantial and therefore should be taken with a grain of salt.

So, for reasons some of which have been explained here, nVidia chooses not to open their drivers on the Linux platform.  What can be done about this?  Surely, plenty of steps can be taken to resolve the difficulties of running a closed source driver.

  • Hire more developers – nVidia could hire a few more Linux developers to work on the Linux port of their software.
  • Engage the community – Linux has a great development community, nVidia could engage them to help find and report bugs on all sorts of hardware not available at nVidia’s testing facilities.
  • Work around copyrighted code – nVidia, after hiring a few more people to work on their drivers, could opt to spend resources on developing 100% nVidia code for the eventual release into the open.
  • Branch their code – While not the best solution, nVidia could branch the Windows and Linux/Unix/BSD/Solaris code into two distinct sets.  This would allow the Windows and *nix code to be developed separate while still sharing some common resources between both versions.
  • Realize its ok to have buggy hardware – Sometimes bugs in hardware happen, and you have to program around them.  No one is going to fault nVidia for having a few transistors out of place.  The community will help with making sure the software works with these quirks.

The community is willing to help.  nVidia just needs to realize they can be helped greatly by releasing open drivers. Yes, it will take some resources and money at first to assure the code they eventually open is free of any copyrighted material. But, as soon as that version is available, nVidia can expect to see thousands of patches to it by the community in order to build a better driver. nVidia can even hold on to the distribution of that driver similar to how many patches exist for the Linux kernel but only some are released at any given time.  It could also help to provide an even more stable Windows driver in the long run.  And, more people would be willing to buy nVidia products if they knew it would work well with Linux and Windows side-by-side.

However, should nVidia choose not to take this route, and continue offering closed-source drivers that work fairly decently, they should at least look into cleaning up their driver of Windows bits, allowing the community a chance to become involved in some way, and providing an even better user experience to those who choose to run Linux with their nVidia hardware.

One last point, if nVidia does wish to contribute more by opening their drivers, the CUDA platform could really take off with Linux, as alot of data centers and supercomputers choose to run Linux at their foundation.  How about the number one position on the TOP500, powered by nVidia?

This entry was posted on Saturday, August 23rd, 2008 at 3:20 pm and is filed under Technology. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

One Response to “Linux and Closed Source: nVidia”

  1. [...] the first edition of Linux and Closed Source, I discussed nVidia’s closed source drivers. This edition will focus on the Voice-Over-IP [...]

Leave a Reply

Spam Protection by WP-SpamFree