|
There has been a long-running debate on GPLv3, one which has recently re-surfaced with the subject of binary-only drivers as the centre-point. 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 software: 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 for this. The freedom to redistribute copies so you can help your neighbour (freedom 2). 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 fit. " 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 free software". 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. |