Reverse engineering is a longstanding tradition in the free software
community. It has often been the only way to get hardware to work when the
manufacturer refuses to make documentation available, but there is more to
it than that. Some of us, certainly, enjoy the challenge of figuring out
how a particular device works. And our sense of freedom tells us that it
is our right to understand the hardware which we have purchased and
rightfully own. We, as a group, tend not to respond well to those who tell
us that reverse engineering a product is not the right thing to do. But,
increasingly, your editor is hearing voices within the community which are
saying just that.
One of the most prominent reverse engineering projects at the moment is Nouveau, which is starting to
have some real success in making NVIDIA graphics adapters work with free
software; see this week's Kernel Page for an article on the state of this
project. NVIDIA hardware has been a problem for a long time, of course.
It is said to be nicely-designed, and it is certainly present in a
significant percentage of new machines, but NVIDIA has had no interest in
making free drivers (or documentation) available for some years. So the
only way for owners of this hardware to use it with reasonable performance
under Linux is to use NVIDIA's proprietary kernel module, and that is a
price many of us are not willing to pay.
There are currently about eight developers working to make the Nouveau
driver better. They have reached a point where their understanding of the
hardware and their reverse engineering tools are quite good; that, in turn,
is enabling fast progress toward the creation of a working driver. With
this kind of developer attention, the Nouveau driver may reach a stable
state over the course of the next year, at least for some versions of the
hardware. And that, it seems, should be a good thing.
Except for one little issue. NVIDIA's competition in this market is
provided mainly by Intel and AMD/ATI. Intel provides free drivers for its
hardware as a matter of company policy, and AMD has pushed a much more
friendly policy onto ATI since the middle of last year. So free drivers
for Intel video adapters come with distributions, and the first ATI drivers
are beginning to become available.
One rather perverse result of this situation is that there are almost no
community developers working on the Intel drivers at all. The development
and maintenance of those drivers is an expense carried by Intel alone. One
could argue that the lack of hardware documentation from Intel has made it
hard for other developers to participate; Intel is now beginning to address
that problem by burying the community in comprehensive, Creative
Commons-licensed hardware programming manuals. It will be interesting to
see how much more community help Intel gets as a result of its
ATI, which has not, to date, provided working, free drivers, is arguably
getting more help from the community and, especially, from distributors who
have an interest in working drivers. But that company, too, is putting in
resources of its own toward that goal.
NVIDIA, instead, is giving us nothing - and, in return, we are giving it
an eight-person development team dedicated to the production of free
drivers for its hardware. Once Nouveau is in a working state, Linux users will be able to
buy NVIDIA hardware in the knowledge that it will simply work without
requiring them to download and use binary-only kernel modules. The result
of that can only be higher sales for NVIDIA.
While talking to developers at linux.conf.au, your editor heard a number of
them say that NVIDIA does not deserve a gift of this magnitude from the
community. We are now quite close to having free support for video
hardware at all performance levels, supplied by friendly
companies. Rather than penalize those companies by making a free gift to
their biggest competitor, some say, shouldn't NVIDIA be made to pay for its
behavior by exclusion from our community until it comes around?
There is a point here. The biggest lever we have when talking with
hardware companies (or any company, for that matter) is money. Companies
which see themselves as missing out on the Linux market will find a strong
incentive to change their behavior. So if NVIDIA finds that system
resellers are not using its chipsets for Linux-based systems, it will have
to reconsider its position with regard to free drivers.
In the past, there was no credible alternative to NVIDIA, so the company
had no real reason to fear that it could lose money as a result of its
uncooperative behavior. Now there are well-supported alternatives at the
lower end of the market, and the prospect of the same for high-end graphics
as well. So there will be no need to buy hardware from this particular
vendor, and, since the alternatives will be well supported, every reason to
buy from somebody else.
Unless NVIDIA's hardware, too, is made to work via a community-supported
driver. Should this happen, one could well say that we, as a community,
have taken a prize away from companies which have treated us well and
handed it to their competitor (which has not). Arguably, the community
should not pursue the creation of reverse-engineered drivers in situations
where competing vendors are playing by our rules. Otherwise, we are
sending a rather conflicted message to both types of companies. It may
really be true that, in the long run, the Nouveau driver is harmful to our
All of this discussion may be moot. There's no way that any of us could keep
others from reverse-engineering their hardware and writing drivers, even if
we wanted to. Anybody arguing against the mainline inclusion of a
GPL-licensed driver for popular hardware is likely to end up in a minority
position, to say the least. So, as a community, we cannot make a
collective decision to stop this kind of development. But, as individual
developers, we may occasionally want to give a moment's thought to the
question of whether our activities are truly beneficial in the long run.
to post comments)