Please note that this was written before the April release of beta drivers. For current news, see elsewhere.
What is NVIDIA doing?
According to this Slashdot article, graphics chip maker NVIDIA may be bypassing the DRI features of XFree86 4.0 in favor of a proprietary mechanism. That's unfortunate for a couple of reasons. First, DRI is a work in progress, thanks to the talented people at Precision Insight. If it doesn't work well with one card or a family of cards, why not give PI and the XFree86 folks a chance to make it better? Second, while XF86 includes support for binary-only modules, it's a Bad Thing to encourage their proliferation. Yes, graphics companies have tremendous amounts of research and development invested in their products, but releasing obfuscated code or, worse, no code at all harms the free software community:
Support, but Not as We Know It
- It reduces the likelihood of multiple platforms being supported. Linux/x86 will probably get binary modules, but how about Linux PPC, or FreeBSD? Will the drivers be compiled to take advantage of my K6? Will they take advantage of AGP support in my kernel?
- It increases the amount of time it takes to get drivers from the company. They may have the resources to devote a dozen programmers to writing drivers for four or five platforms -- but will they have time to squash bugs on a hundred varied machines? Will they have time to keep up with the latest developments in the GLX code? Or Mesa? How about the newer kernels, or the freshest XFree86? I (and many others) say that the more people you have available to find and to fix bugs, the more bugs you will fix. Now adding people to a project isn't a magic bullet, but having more experts looking at a problem seems more likely to reach a better solution more quickly. (On the plus side for NVIDIA, I understand they are moving to a common codebase of driver sources for different operating systems -- yes, that includes Windows and Linux. While this represents a tremendous undertaking, it theoretically reduces the time it takes to maintain and update drivers. Once the merge occurs, that is.)
- It forces people to stay current with the manufacturer's supported hardware.. Now this is probably what hardware companies want, but some people need to use older versions of hardware and software for very important reasons. There are people writing a DOS emulator, by the way. Just because the latest and greatest Quake is number 3 doesn't mean that people aren't still playing and enjoying Quake and Quake2. (To id's credit, I hear that one of their developers is working on updating the old versions to work with the latest iterations of Mesa.) Sure, only a handful of the people who are committed to a specific platform will have the ability, but why not let them fix the bugs in the drivers or add new features as they have need?
On the other hand, it's entirely possible that SGI and NVIDIA have come up with something even better than DRI. They employ a lot of talented folks who've been working with high-performance graphics for a long time. We can only speculate at this point, due to lack of information. Still, I think the open path is a better choice.
A Little chromatic History
Regardless of those points, NVIDIA can do what they want -- after all, they are the ones who developed the cards and the original drivers, and the last thing I would suggest is forcing the company to do anything. But consider my position.
When I put together my latest Linux box last year, I purchased a TNT2-based video card. NVIDIA had recently announced that they would be big Linux supporters. Not only that, but lots of people told me that the card had very good 2D and 3D performance. What could be better than showing my support for a Linux-friendly company?
Unfortunately, the drivers that came with my version of XF86 didn't support the chipset very well. With a little help from fellow Linux users, and some preliminary drivers from NVIDIA, I was able to get things to work. The 2D performance is acceptable, and 3D wasn't bad -- but it certainly didn't impress anyone in the know. But hey, NVIDIA was working on their drivers.
As I understood, the company wanted to release source code -- addressing the first, second, and fourth points listed above. Unfortunately, the code was run through an obfuscator first. Instead of being clear and readable (as clear and readable as driver code can be, that is), it was nearly indecipherable. Perhaps a Zen master of low-level hackery, register twiddling, and incredibly obscure math could do something with it -- given enough time, but my friend Corrinne Yu is busy with other things.
Still, I want to give the company the benefit of the doubt. They had new drivers coming soon -- and with the imminent release of XFree86 4.0, with the substantive changes and enhancements designed to take advantage of hot hardware like the NVIDIA cards, things were in a great state of transition. They said new drivers were coming soon.
Early in January of 2000, new drivers did come. Obfuscated drivers, that added only a few features while degrading 3D performance on my system to such a point that it was unusable. Five months after purchasing the card, it was still unsuitable for my purposes. If you look into the Utah-GLX project, you will notice that it has taken off in that time. If I'd purchased a Matrox card, for example, even though I wouldn't have been supporting a soi-disant Linux-friendly company -- at the time -- I would be very pleased with the state of my video card support at this time. Still, in January, we all knew that XFree86 4.0 was right around the corner, with new ways of increasing performance, so why not wait a few weeks?
Version 4 came out weeks ago. This wasn't much of a surprise to anyone, as the release date had been "first quarter 2000" for quite some time -- and pre-release snapshots had been out for months (I seem to recall one from July 1999). Video card manufacturers are encouraged to contact the XFree86 team so that their products can be supported from the first day a new release comes out. Of course, drivers for 3dfx and ATI cards are only starting to come out at this point -- but at least the companies are keeping their customers informed.
That brings you up to the present, as outlined in the earliest paragraphs above. At this point, I (and many other people on Slashdot, especially those replying to my initial post on the matter) question NVIDIA's committment to Linux and the rest of the free software community. It's April 2000, and we're still waiting for what was promised nearly a year ago.
Astute readers will recall that my original page indicated that I would be returning my video card to NVIDIA and asking for a refund. I have since reconsidered. Due to personal issues, as well as well-reasoned advice from more patient customers, I am willing to wait until SIGGRAPH in July to see what NVIDIA will deliver. (I do recommend that potential customers consider the lack of communication from NVIDIA and the willingness of other manufacturers to provide hardware documentation to driver hackers.)
As mentioned before, I have no intention of forcing the company to open their drivers, nor will I do anything more than suggest they make their chipset specifications available to either the general public or a subset of interested driver writers. What I do suggest is that NVIDIA take their promises to the free software community seriously. My good faith in the company is bruised, and many people have contacted me to express similar sentiments.
It may not make good business sense, at first glance, to embrace all of the principles of the free software community -- certainly there is a strong push to keep "intellectual property" and "business proprietary" information out of the hands of direct competitors. I am not a dedicated business man; my opinion on those matters is colored by my experiences from the other side. However, most of us can agree that alienating a segment of your customer base -- especially the technologically saavy segment responsible for equipment recommendations and purchases, is a mistake. For more information on why I believe opening driver soure and hardware specifications makes sense, see my analysis.
Warming my Heart
What I really want is simply information, arranged roughly by importance:
- What is the state of the current driver?
- When will it be released?
- Will source be released?
- If yes, will bugfixes and enhancements be folded into the main tree?
- Will it use DRI or another hardware access scheme?
- If the latter, will information be released to allow other drivers to use such a method?
I would be ecstatic if NVIDIA allowed a Utah-GLX developer or two to see hardware documentation. I would be satisfied with a binary-only release, provided that NVIDIA plainly states that such is the limit of their "Linux Support".
This document may be mirrored (in its entirety) on any other web site, provided that any modifications are clearly marked, and a link is provided to the original location at http://snafu.wgz.org/chromatic/nvidia.
(one mirror is at www.fiftysix.org/nvidia. Thanks Matt!)
return to my index