By Tom Adams, 2006-12-07.
Free software refers to software which may be run, studied, copied, and modified freely. The word free refers to liberty as opposed to a lack of cost. The opposite of free software is proprietary software - that which may not be freely used, distributed, modified, or studied.
In this short essay I will define free software a little more fully, explain why it came to be, and how software is made free. I will then go on to explain one of free software's best points from the point of view of the user.
The Free Software Foundation describes four fundamental freedoms for software to be considered free:[free-sw]
The freedom to run the program, for any purpose (freedom 0).
The freedom to study how the program 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 neighbor (freedom 2).
The freedom to improve the program, 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.
Probably the most important figure where free software is concerned is Richard Stallman, the originator of the term free software. He is also responsible for GNU Emacs, most of the GNU core utilities, and the founding of the Free Software Foundation.
The MIT Artificial Intelligence Lab, where Stallman worked, was in possession of a printer from Xerox. It was set up such that people would be alerted when their print jobs were complete, or when there was a paper jam.[shouldbefree]
The AI Lab later received a new printer from Xerox. This printer came with a separate, dedicated computer running proprietary software which was required to operate the printer. It was possible to send a notification when a print job was accepted, but it was not possible to send notifications when print jobs finished, or when there was a paper jam.
Of course it was frustrating for the programmers at the AI Lab to suffer with poor quality software and to have no way of improving it. So Stallman decided to change that by creating free software which couldn't be made proprietary, and he started work on the GNU operating system.
As a personal example of where the lack of freedom to modify software is a problem, I offer my own story of SuSE[suse] 9.0 and YaST2.
My first GNU/Linux installation was SuSE 9.0, purchased in a box from Amazon for what now seems like an awful lot of money to pay for software - but alas I was still on dial-up and didn't know of the existence of magazines with cover discs. I managed to wipe my OEM installation of Windows XP, and many other things I didn't intend to delete. For a week I went without Internet access on my own machine. Until I purchased a hardware modem, I spent many hours using my mother's computer to read HOWTOs on The Linux Documentation Project[tldp] and other sites.
I was enjoying playing with my new toy, but eventually I found a problem with YaST2, SuSE 9.0's graphical package manager, configuration utility, and general do-everything tool. The problem was that sometimes there were updates marked as critical which were very large (for a dial-up connection which was automatically cut-off every two hours), and downloads could not be resumed. These critical downloads could not be ignored. If you wanted to install any other software, or any other updates, you absolutely had to install the critical updates.
I searched for a solution to this problem and discovered that YaST2 was the very thing that I was trying to get away from by using GNU/Linux - proprietary. At the time I doubt I could have compiled YaST2 if it was free, let alone modify it to allow critical updates to be disabled, but I could have installed a patched version of YaST2, presumably distributed by somebody who also had a slow connection. But due to it being closed source the only person able to fix the bug was the vendor.
These days I no longer use SuSE, and YaST2 is no longer proprietary (although I don't know if critical updates can be ignored in the vanilla distribution).
Apart from technical and economic reasons to use free software, there may be many reasons for people to use and contribute to free software.
The philosophy of the GNU Project is that free software is better than proprietary software simply because it is free. As such, many people interested in political freedom as well as computers are likely to be drawn to free software.
With free software, it is likely that a capable user will contribute patches and bug reports to a software project if they have time (I know I do). This allows for a sort of community that isn't possible with proprietary software - a community where the end-users can be the programmers isn't possible without access to the source code. This kind of community lends itself to users helping each other. That is to say that there are many Web sites, forums, and non-Internet organisations aimed at all ability ranges from neophyte to wizard.
Most free software does not come about by the work being placed in the public domain, although that is a possibility. The most common way of making software free is to apply a license to it.
Microsoft, probably one of the most well-known vendors of proprietary software, uses an End-User License Agreement to agree with an end-user that Microsoft will take their rights away from them (and assign Microsoft some additional rights) in exchange for the user being able to use the software. This is not a license, it is a contract because there is an agreement between two or more parties (if the end-user accepts the terms of the contract). In a license, the holder of the copyright assigns additional rights to the recipient of the license. The additional rights may be granted conditionally, but no rights can be removed by a license.
There are two main types of free software license: those that simply allow the next person who comes along to do what they like (permissive), and those that require that the software remain free (restrictive).
The former category's most popular license is known as the revised BSD license[freebsd-license], which states that redistributed source code, binaries, and documentation must contain the text of the license and the copyright notice. This means that the software could be improved, compiled, and then just the binaries could be distributed - thus the software could become proprietary.
The most popular restrictive free software license is the GNU General Public License[gpl]. This license states that if the programme is modified and distributed, source code must be provided along with the license. Thus if the software was improved, compiled, and only the binaries were distributed, the person doing this would have broken the law.
There is constant debate (usually known as
flame wars) on the topic of whether permissive[bsdl-gpl] or restrictive licenses are better. While there are practical factors to be considered, the biggest factor in choosing a license is the developer's personal beliefs.
In recent news, the GPL Violations Project[gpl-violations] won a case in a German court against D-Link who were distributing parts of the Linux kernel and other GPL-licensed software in a way which violated the GPL. D-Link claimed that they
[did] not consider the GPL as legally binding[dlink-judgement], but were eventually forced to refrain from further distribution.
The Debian project[debian] specifies a number of guidelines known as the Debian Free Software Guidelines[dfsg], which are used by the Debian legal team to judge whether a license is free or not. Very rarely do the FSF's four fundamental freedoms mentioned above and the DFSG disagree on a license's freeness. A notable exception is the FSF's GNU Free Documentation License[fdl] which the FSF describes as free, but the DFSG classifies it as non-free due to invariant sections[dfsg-gfdl].
Many non-professional users of free software are attracted by the hackability of such systems†. It's rather hard to hack on a system that doesn't even ship with a single compiler or interpreter. Through simply exploring a system, one can learn a great deal about how it and similar systems work. Free software is often easy to explore and understand because for the most part it is made by hackers for hackers.
I recall the days when computers came with BASIC interpreters‡. I never got much out of BASIC because I was too young to really appreciate programming at the time and the only computer I had with BASIC was a children's toy with just volatile memory, but writing BASIC programmes on text-only interfaces was much more fun than anything I ever did on an operating system without a compiler or interpreter.
Free software as a movement was started due to a frustration with a new culture of proprietary software that was seen as a negative force. The means by which software is usually made free is through licensing additional rights to users of the software. Finally, free software is often popular with hobbyists due to it being very easy to explore and change to one's liking.
Overall, free software is a good thing from the point of view of the end-users and developers simply because it is free, and because it is easy to hack. It may or may not be a good thing for businesses, but that is not the subject of this essay.
- The Free Software Definition [Internet]. Available from http://www.gnu.org/philosophy/free-sw.html [Accessed 2006-11-18].
- Stallman, R. M. (1992) Why Software Should Be Free [Internet]. Available from http://www.gnu.org/philosophy/shouldbefree.html [Accessed 2006-11-18].
- openSUSE [Internet]. Available from http://www.opensuse.org/ [Accessed 2006-12-05].
- The Linux Documentation Project [Internet]. Available from http://tldp.org/ [Accessed 2006-12-05].
- (1994) The FreeBSD Copyright [Internet]. Available from http://www.freebsd.org/copyright/freebsd-license.html [Accessed 2006-12-05].
- (1991) GNU General Public License [Internet]. Available from http://www.gnu.org/copyleft/gpl.html [Accessed 2006-12-05].
- Montague, B. Why you should use a BSD style license for your Open Source Project [Internet]. Available from http://www.freebsd.org/doc/en\_US.ISO8859-1/articles/bsdl-gpl/ [Accessed 2006-12-07].
- GPL Violations homepage [Internet]. Available from http://www.gpl-violations.org/ [Accessed 2006-12-05].
- (2006) gpl-violations.org project prevails in court case on GPL violation by D-Link [Internet]. Available from http://gpl-violations.org/news/20060922-dlink-judgement\_frankfurt.html [Accessed 2006-12-05].
- Debian [Internet]. Available from http://www.debian.org/ [Accessed 2006-12-05].
- (2004) The Debian Free Software Guidelines (DFSG) [Internet]. Available from http://www.debian.org/social\_contract.en.html\#guidelines [Accessed 2006-12-05].
- (2002) GNU Free Documentation License [Internet]. Available from http://www.gnu.org/licenses/fdl.html [Accessed 2006-12-05].
- Srivastava, M. Draft Debian Position Statement about the GNU Free Documentation License(GFDL) [Internet]. Available from http://people.debian.org/~srivasta/Position_Statement.xhtml [Accessed 2006-12-05].
- The Jargon File [Internet], version 4.4.7. Available from http://catb.org/jargon/ [Accessed 2006-12-06].
- In case there is any confusion, the verb to hack is defined by the Jargon File[jargon] as follows:
6. vi. To interact with a computer in a playful and exploratory rather than goal-directed way.
Whatcha up to?
Oh, just hacking.
- Or rather, I recall using computers from those days - I'm not quite that old.
Node your homework. This essay is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (version 2 or above).