The Advantages of Software Freedom
The gratis nature of software-libre is a nice side-effect, but it isn’t nearly as important to advocates as the four freedoms outlined by the Free Software Foundation:
- Freedom 0: The freedom to run the program, for any purpose.
- Freedom 1: The freedom to study how the program works, and adapt it to your needs.
- Freedom 2: The freedom to redistribute copies so you can help your neighbor.
- Freedom 3: The freedom to improve the program, and release your improvements to the public, so that the whole community benefits.
The following sections discuss these four freedoms in more detail.
Freedom 0 is the freedom to run the program, for any purpose. This is obviously an important freedom. You don’t want to buy some software and then find that you can’t use it for the intended purpose. It seems improbable that even closed-source software would deny this freedom. In practice, however, that limitation is very common. Anyone who has ever bought an education license, or used software that is free for non-commercial use, has given up this freedom. Borland, for example, used to give away copies of their developer tools that couldn’t be used to release commercial software.
Another way in which this freedom is limited is by placing arbitrary constraints on the hardware used by a program. Several business applications, including all versions of Windows, place a limit on the number of processors they can use. If you upgrade your dual-processor server to a pair of dual-core chips, you may find that you’re only able to use half of the server’s computational hardware without buying a new license. With software-libre, this wouldn’t be an issue.
Freedom 1 is the freedom to study how the program works, and adapt it to your needs. This freedom is obviously useful to a hacker or to a computer scientist. It’s less obviously useful to a business.
Large software companies are very keen on the idea of off-the-shelf software. It enables them to invest in development once and recoup this cost many times by selling the same thing over and over again. The idea is also popular with small software-users, who couldn’t afford to have a custom system written. The result is the popularity of "one size doesn’t quite fit all" software. A further result is lost productivity from having to work with software that’s designed to do something slightly different from what you actually want it to do.
Software-libre gives the best of both worlds. Many software-libre programs exist that are rough analogues of off-the-shelf software. These can be used as building blocks to cheaply construct a custom solution. The availability of source code means that they can be customized in ways far beyond those possible with scripting languages such as VBA or AppleScript tacked on top of proprietary software solutions.
This freedom doesn’t only apply directly to the users of the software, of course. If users lack the skills required to adapt the software themselves, they’re free to employ a subcontractor to do it for them. It often makes sense to employ the original author, who would have more knowledge of the codebase than anyone else.
Freedom 2 is the freedom to redistribute copies so you can help your neighbor. Helping your neighbor is a laudable goal, but not necessarily in the best interests of a commercial organization. There are situations when it is useful, however. Suppose you’re collaborating with another company. If both organizations standardize on the same software stack, it’s very easy to exchange resources. If you’re using different software, you might have a problem.
In an ideal world, both organizations would produce data in formats that conformed to published standards. In practice, even if you’re using comparable formats, you might have problems with the different interpretations of the standards, introducing minor errors.
Now suppose your organization has standardized on a software-libre solution. You would be able to give your partner a copy of the software you used.
Of course, this is something of a contrived example. A far more common one involves customers rather than partners. Good customer communication is one of the most important attributes for a successful business. If you can distribute to your customers the software you use to produce documents, then you can guarantee that your customers will be able to read whatever you send them, and that you can read whatever they send you.
Freedom 3 is the freedom to improve the program, and release your improvements to the public, so that the whole community benefits. Again, benefiting the community is generally not atop most corporate mission statements. If you improve a piece of software, however, you might gain good business karma—a small PR boost. You may also find that if you release improvements, the rest of the community is more inclined to help fix bugs that affect you. But these are small benefits.
The larger benefit is that other people have the same freedom. If someone adds a feature to a program you use, then you’re able to use that new feature. If you need a specific feature, you can pay someone to add it, and this is the most valuable freedom of all: freedom from forced upgrades and vendor lock-in.
Anyone who has used proprietary software will be familiar with both of these advantages. How many times has a software firm told you that a particular bug is fixed in the new release (a steal at only $300 per seat)? How many times have you heard "The feature you need is in the next version," and had to sink the costs of upgrading, including retraining a workforce to use the new, enhanced user interface? And how much cheaper would it have been if you could have put the feature enhancement out to competitive tender?