Home Messages Index
[Date Prev][Date Next][Thread Prev][Thread Next]
Author IndexDate IndexThread Index

What is free software?

  • Subject: What is free software?
  • From: Mark Kent <mark.kent@xxxxxxxxxxx>
  • Date: Tue, 7 Aug 2007 17:09:19 +0100
  • Newsgroups: comp.os.linux.advocacy
  • User-agent: slrn/0.9.7.4 (Linux)
  • Xref: ellandroad.demon.co.uk comp.os.linux.advocacy:549082
There has been a long-running debate on GPLv3 in this group, 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.


-- 
| Mark Kent   --   mark at ellandroad dot demon dot co dot uk          |
| Cola faq:  http://www.faqs.org/faqs/linux/advocacy/faq-and-primer/   |
| Cola trolls:  http://colatrolls.blogspot.com/                        |
| My (new) blog:  http://www.thereisnomagic.org                        |

[Date Prev][Date Next][Thread Prev][Thread Next]
Author IndexDate IndexThread Index