There has been a long-running debate on GPLv3, one which
has recently re-surfaced with the subject of binary-only drivers as the
It was clear to me from much of that discussion that there is very
little understand of what the "freedom" part of free software is all
about, and even less understanding of quite why it is so important.
In order to address this, I've created this posting, which includes some
components of the FSF's own pages, and some commentary of my own.
So, let's start with the bit about where it's defined. Why? Because a
recent poster indicated that the use of binary-only drivers is just a
slight compromise of intent, whereas, in reality, it compromises 3 out
of 4 of the intended freedoms of free software. So, a peak at the FSF's
own definition is in order:
" The Free Software Definition
We maintain this free software definition to show clearly what
must be true about a particular software programme for it to be
considered free software.
Free software is a matter of liberty, not price. To understand
the concept, you should think of free as in free speech, not as
in free beer. "
So, we are mostly concerned with liberty, and not price. A binary,
proprietary, driver, might be free of charge, but it is not free in
other key respects, those respects are listed here:
" Free software is a matter of the users' freedom to run,
copy, distribute, study, change and improve the software. More
precisely, it refers to four kinds of freedom, for the users of
The freedom to run the programme, for any purpose (freedom 0).
The freedom to study how the programme works, and adapt it to your
needs (freedom 1). Access to the source code is a precondition
The freedom to redistribute copies so you can help your neighbour
The freedom to improve the programme, and release your
improvements to the public, so that the whole community benefits
(freedom 3). Access to the source code is a precondition for this. "
So, if we have all of these, is it free? Yes:
" A programme is free software if users have all of these
freedoms. Thus, you should be free to redistribute copies, either
with or without modifications, either gratis or charging a fee
for distribution, to anyone anywhere. Being free to do these
things means (among other things) that you do not have to ask
or pay for permission. "
But, if we are charged for it, is it /still/ free? Well, yes it is, at
least, in the terms of the GPL and the freedoms enumerated above. The
fact that a binary driver might be free of charge does not mean that it
meets the definition of free software above. You might argue that this
doesn't matter, however, this is not the case. Why? Because of
lock-in; if you have a binary-only blob, you are limited to the usage
which the supplier intended, and any other usages it can /accidentally/
perform. Because, if you want to use it on a different platform, for
example, an nVidia binary driver on a PPC, then you need to be able to:
" You should also have the freedom to make modifications and use
them privately in your own work or play, without even mentioning
that they exist. If you do publish your changes, you should not be
required to notify anyone in particular, or in any particular way. "
Clearly, if the source-code is not available, even on the x86 version,
and you find one of the very many bugs in the nVidia driver (just look
up on the web to see just how many there are), then you are unable to
fix and patch the driver. This is precisely the reason why
free-software drivers have, over time, come to massively outperform
their closed-source counterparts, because the problems and bugs can be
fixed. Also, if you cannot get access to the source code, then you have
a problem here, too:
" The freedom to run the programme means the freedom for any kind of
person or organisation to use it on any kind of computer system,
for any kind of overall job and purpose, without being required
to communicate about it with the developer or any other specific
entity. In this freedom, it is the user's purpose that matters,
not the developer's purpose; you as a user are free to run a
programme for your purposes, and if you distribute it to someone
else, she is then free to run it for her purposes, but you are
not entitled to impose your purposes on her. "
You cannot run the binary-only software in any situation except the few
which the supplier considered worthwhile. It's been suggested in cola
that, for example, users of PPC machines are too few to be considered
worth worrying about, that we should only worry about the "majority" of
users, that freedom is something which is unimportant, that we should
compromise this area. Well, if you cannot run software, then it fails
in its purpose completely. If that means that you, the user, is unable
to user the hardware and software as you wish, then you have been
locked-out by the vendor. This is not an acceptable situation, and
clearly breaks the intended freedom of free software.
Now, what happens if your friend has a similar machine to you, and you
want to help them do the same thing you're doing? Here:
" The freedom to redistribute copies must include binary or
executable forms of the programme, as well as source code, for
both modified and unmodified versions. (Distributing programmes
in runnable form is necessary for conveniently installable free
operating systems.) It is ok if there is no way to produce a
binary or executable form for a certain programme (since some
languages don't support that feature), but you must have the
freedom to redistribute such forms should you find or develop
a way to make them. "
Of course, with binary-only software, then you cannot help in this way.
In my own computing room, whilst I can have nVidia cards supported on
some combinations of x86 machine, I cannot take that same code and run
it on the PPC machine. I'm not free to use my own computers as I see
" In order for the freedoms to make changes, and to publish improved
versions, to be meaningful, you must have access to the source
code of the programme. Therefore, accessibility of source code
is a necessary condition for free software. "
In case you missed it, I'll repeat the above point again:
"Therefore, accessibility of source code is a necessary condition for
So, to everyone who thinks that binary drivers are okay, I hope the
above has demonstrated precisely what the problems are with them; to
everyone who thinks that binary drivers are just a slight shift in
position, I hope it's become clear that they drive a JCB through the
middle of the intention of free software.