Copyright © 2002, 2003, 2004, 2005 Robert J. Chassell
This document introduces software freedom: why and how such freedom is important.
Edition 1.03, 2005 Oct 27
This uses a verbatim license, since it is a statement of my opinions; it is not a manual or help document.
Permission is granted to make and distribute verbatim copies of this entire document without royalty provided the copyright notice and this permission notice are preserved on all copies.
--- The Detailed Node Listing ---
Acknowledgements
The Goal
Why
What is free software?
How to Create Software
Legal framework
Freedom and Duty, in detail
What Free Software Brings
The Social Costs of Restrictions
Misleading Metaphors
Metaphors explain the new in terms of the old
Licenses, Game Theory, and Strategy
Limits to Learning
Tiger teams and Poodle Teams
Poodle Teams
The Manufacturing Delusion
Often times, our societies are hurt by the newly gained ease with which computer programs can be duplicated and information stored. We face new and different difficulties than in the past. These difficulties come from bad laws, false beliefs, and obsolete institutions.
With software freedom, we can overcome these difficulties (leaving us with the more `normal' problems of an advanced society).1
When I first started this book, I thought I was only going to discuss the implications of “increasing returns to scale”, in which the more you make, the easier it is to make more. As a practical matter, oligopolies or monopolies are the consequence of such a technology.
In the past, with steel making and oil refining in the late 19th century, this kind of economic development caused problems with both quality and opportunity. In the present, software oligopolies have exposed us to machines that need frequent reboots, systems that are vulnerable to simple viruses, and to a wide-spread belief that computers often fail for no good reason. (Such flaws are avoided by good software.)
But, to my surprise, in working on this book, in addition to talking about problems of quality and opportunity, I also found myself figuring out how to defend freedom from assault, how to defend ourselves from enemies without and from criminals within.
Bad laws and obsolete institutions weaken us. Their perceived benefits are short term. Their long term effects bring danger. The consequences are startling. For long term survival, we must change ongoing practices and ways of thinking within our societies.
I first became involved with software freedom in 1984. In 1985, I became a founding director and the first corporate treasurer of the Free Software Foundation, Inc. The FSF was designed as the institutional arm of the GNU Project, an effort to create a complete, free software system. I have been involved with software freedom ever since. Over all, I have been involved in aspects of software other than programming. (I wrote a book, An Introduction to Programming in Emacs Lisp, but I do not think of programming as the focus of my life.) I edited more than a dozen books and handled the finances and administration of the Free Software Foundation.
It took many years, but the GNU Project succeeded. GNU/Linux (often shortened to `Linux') not only works, it is readily available and is used by millions of people. For the GNU Project, the most difficult years were the first seven, in the 1980s and the early 1990s. During that time, we created most of the key parts of the system. In the early 1990s, Linus Torvalds, who was not directly involved in the Project, created a kernel, called `Linux', which while not as good as the kernel being created under FSF auspices, was good enough and worked. More to the point, Linus placed his kernel under the GNU General Public License. This meant it could be used legally. The GNU system with the Linux kernel proved highly attractive, technically, socially, and legally. Within another seven years, GNU/Linux had spread widely.
It is sad that we had to develop free software intentionally. In the early days — during the first generation after 1950 — all software was free or perceived as free. That is to say, programmers felt they had the right to copy, study, modify, and redistribute it. Indeed, in the beginning, you could not copyright a computer program and you could not patent any of its mathematics. Trade secrecy existed but was not felt as onerous.
Perhaps the best metaphor for software is that of a cooking recipe. A recipe tells you how to cook dinner. A computer program tells a computer how to act. Neither are necessarily considered `literature', although both may be well written. Most importantly, people expect to share cooking recipes. Although a few cooks attempt to keep secrets, most are happy to tell you what they did. Similarly, at the beginning, most programmers were happy to tell you how they programmed. But then, some lost the freedom to talk.
Beginning in the 1970s and early 1980s, it became legal in the United States for companies to copyright computer programs, and legal for them to patent mathematical procedures. Software vendors stopped supplying source code. `Non-Disclosure Agreements' prevented programmers from helping each other.
These attacks on programmers' freedom inspired Richard Stallman, a brilliant computer programmer, to talk about freedom and then to pull together many people and start the GNU Project, to create and distribute software that would be free.
This book is not about the GNU Project, nor is it about software as such. Rather, it is about the beliefs, laws, and institutions that surround or should surround the software industry.
And freedom, as with every social institution, needs beliefs, laws, and people to protect it.
I am especially indebted to the works of Douglass C. North and Yochai Benkler. I would like to thank both men for their writings. Their works led me to change how I think. Neither, as far as I know, have suggested that they hold the opinions I present here; they may well hold different opinions or have come to different conclusions than I.
I am also indebted to the works of Alan Page Fiske, Adam Przeworski, Lawrence Lessig, and Clayton M. Christensen, who have opened my eyes to the nature and structure of our society and to the institutions that configure it. My many thanks. I hope I have learned well.
I would like to express my thanks and indebtedness to two men whom I know personally, who have shaped my thoughts and life, Richard M. Stallman and Eben Moglen. Richard introduced me and others to the idea of software freedom, and started the project which has led to the most significant current instance of free software, the programs of the GNU operating system using a Linux kernel. Eben inspired me to look further into the institutions and laws that can help or hinder our success.
Finally, I would like to thank Stacey Goldstein and Bradley Kuhn for helping me with this book — most importantly, for keeping themselves and others `off my back' until I understood myself the issues; and then for helping my own discoveries to others.
My mistakes are my own.
After reading through quickly and briefly, you may wish to go further. My suggestion is that you determine how certain you judge each claim — perhaps some are weak — and you evaluate the proposals that are mentioned.
For judgement, provide evidence for (or against) each claim. The intent is to exercise `determinative' oratory, as described in Words Only. However, the evidence will mostly, perhaps entirely, be of the `I hear' or `I know culturally' nature, rather than of the `I reason', `I observe', or `I experiment' nature.
Informally, the `I hear' evidence will consist simply of cocking one's head and saying to one self, “right!” or “wrong!” or “somewhat suggestive”. More formally the evidence will consist of scholarly references, news stories, or interviews. The `I know culturally' evidence requires, I think, a convincing, personal story.
It is good practice to specify what you think is the certainty (or uncertainty) for each claim or bit of evidence: whether it be a slight hint, weakly suggestive, suggestive, or highly suggestive, or the contraries.
Thus, there is text that says that software freedom leads to safety, quality, and opportunity. Is this true, and if so, how true? Is the evidence weakly suggestive, suggestive, or highly suggestive, or the contrary? By evidence, I refer to what you know or can find out as well as to what is written.
Supposing the claim is highly suggestive, as I think. Then you can evaluate a political proposal, in this case, favoring software freedom using the GNU General Public License as the legal tool. An alternative proposal, that I do not mention, is to ban copyright altogether. Yet another is to use the GNU General Public License but to shorten the length of copyright.
To evaluate a political proposal, you can use the `four Ps of politics': protect, preserve, prepare, and provide. (See The Petals of Cooperation.) You can use other criteria, too.
In each proposal, what is currently uncertain and what should be determined? If the underlying factors are sufficiently uncertain, should the proposal be revised to succeed regard of outcome? If so, how?
Our circumstances are straight-forward. Over the past half century, technology has advanced. We can now copy and distribute large programs easily and cheaply. We could not do this in the past. This change in technology changes our society.
For safety, quality, and opportunity, we need software freedom. By software freedom, I mean our freedom to use, copy, redistribute, study, and modify software.
Not everyone will choose to exercise their freedom, but with such freedom, more people will be able to discover, develop, and apply advances. We will survive and prosper; those who fail will lose. Similarly, with freedom, more people will have the motivation and resources to make software reliable, efficient, and secure. We will enjoy high quality software. And finally, with freedom, more people will learn to understand, change, and make use of this new world that technology has brought. We all will gain opportunity.
In a small, informal society, a few comfortable social conventions can protect software freedom. But in the large, complex society that we inhabit, we need laws and institutions to defend ourselves; otherwise, freedom will lose. Moreover, as a practical matter, in the modern world, conventions will not be widely adopted by businessmen and others unless they are backed by law.
Firstly, software freedom must be defended against enemies who wage war.
Secondly, software must be defended against thieves. Otherwise they will gain a free ride, and eventually ride us down.
Both these necessities impose constraints on how governments and other organizations may use software, and on their collection and use of information. Moreover, these necessities impose constraints on the types of laws and institutional arrangements that may be chosen.
Fundamentally, it does no good to create or continue laws that aid enemies of any sort or that weaken ourselves.
Moreover, to strengthen ourselves, we need to discover, develop, and apply advances. This means that rather than extend the period of copyright more years into the future, copyrights must be shortened. (Copyright cannot be ended altogether, since it provides a way to protect freedom.) Software patents must be abolished.
Finally, rather than ask a government to purchase or subsidize software that puts restrictions on what people may do, our defense requires that governments focus their purchases and operations on software that frees people to learn and advance, and do this in a manner that protects everyone from thieves and enemies..
All these actions are necessary to defend society, to benefit from software, and to gain opportunity.
These actions will be opposed by the short-sighted, the craven, and by those who wish to attack our countries, to hurt us, and to take away our freedom.
There are three reasons to favor software freedom:
For many people, the deepest argument for software freedom is simple: without it, we all will lose our freedom. We will be conquered, if not now, within a few generations.
Victory goes not to the brave, nor to the dedicated but, more often than not, to those with the more advanced technology, and the means and will to use it.
Victory does not necessarily mean military victory; it may mean commercial victory.
An “advanced technology” need not be a computer or other technology requiring a complex production technique. A jujitsu throw may be advanced: the goal is to win. Success may come from a throw that uses an attacker's strength against him and against which he is not guarded.
Over time, free software tends to become more reliable, efficient, and secure. Free software gains quality. This is because everyone involved has the motivation, and some have the resources, to improve the software.
Machines should not crash unnecessarily, email messages should not waste their recipients' money, computer systems should not be vulnerable to simple viruses. Computer programs should do what you want.
The owners and managers of a company that produces proprietary software have a motive to delay publishing some bug fixes: the shareholders gain more when they can sell more copies of an update or of a second update; and they can sell more when the update fixes bugs.
Clearly, this economic motivation has no effect when the software – proprietary or free — is sold in a competitive, free market; for in that case, customers will seek reliability. Consumers will avoid a company that delays bug-fix publication.
But if a customer finds it difficult to change, if he or she experiences `lock in', then the customer may decide to suffer current problems rather than change to different software. As with all people who deal with a monopoly, or partial monopoly, the customer makes a trade-off. He or she knows that the seller is taking more resources than the seller could obtain in a fair market, but the extra cost to the customer may not be enough to stop the customer from using the product.
A customers is `locked in' when he or she must pay a high transition cost to shift to another vendor or to another solution. For example, a person may keep his or her information, or his or her company's information, in a format that is restricted to one vendor. A `locked in' customer will accept less efficient software than otherwise, because the loss in efficiency costs less than the costs of change. Indeed, since computers, even those with poor software, provide such an increase in efficiency over the previous generations' pen, pencil, typewriter, mimeograph, filing cabinet, and printing house, a user may not appreciate that his or her poor, restricted software is inefficient compared to other readily available software. Company accountants, for example, may not think that the cost to a company of viruses is a cost they are duty bound to stop.
But `lock in' cannot exist in a competitive, free market, the kind of market that software freedom creates. In such a market, a customer can easily find another vendor. A customer can easily reduce the costs of viruses.
With freedom, a customer will pay little or no extra cost to shift to another software provider, another service, or another hardware provider. This means that customers will tend to choose the more efficient over the less efficient, since the more efficient costs less over all.
When given the choice, customers prefer security. They do not like the cost of losing their work, or losing a part of it. They do not like to clean up from a disaster. They do not want to be robbed. They do not want their personal habits made available to a crook, their medical or financial data taken, their bank account emptied, or their identity stolen. They dislike the consequences and they dislike the fear.
Many customers dislike insecurity; but if the cost of shifting is higher than the benefits they see to staying, then they will not shift. Worse, some customers have not spent the necessary `indirect costs' of learning their circumstances. They do not realize that they need not suffer. They have not invested the resources needed to learn that security is possible.
But again, when transition costs are low, people will choose software that is safe. Not everyone will so choose; but enough people will choose so that secure software exists and expands. In addition, hardware providers will offer software that, along with necessary hardware and social habits, gives security.
Only when the perceived benefits of insecure software are greater than the cost of changing, will people stay with insecure software.
A free society is better than the alternative. You gain opportunity. Your freedom to create and use software is a part of living in a better society. Software freedom guarantees you the legal right to work, to start a business, to choose whom to hire, to chose from whom to buy, to choose software, to help others, and to share.
Software freedom does not guarantee that you will do well or be well; but it does guarantee that you will have the opportunity.
Software has become an important part of a modern economy, like steel or wheat. In the 1950s, the word `software' did not exist, although what we now call software was being written and used.
Incidentally, I first heard the term `software' in 1966. Although I understood that the term was a metaphor based on the word `hardware', at first I was continually confused. I kept mistaking the word `software' with the phrase `soft goods', which refer to products such as draperies. I had a hard time learning to define `software' as insubstantial programs rather than as the kind of product from which you can make substantial, but flexible, curtains.
Advances in technology have brought software into view. Just as we no longer live in the kind of world that existed in the 1450s, we no longer live in the kind of world that existed in the 1950s. In the 1950s, for example, mechanical devices controlled the engines of most automobiles. Now the job is done by electronic devices, which are controlled by software.
The issue at hand is how much freedom we all should have in learning to understand, change, and make use of this new world.
If you or someone else wants to use a car with a particular device in it, how expensive should it be? Should the device be priced at a higher than fair market value, which transfers value from you to the seller, or should it be priced at a level that motivates the seller to sell, but which does not transfer away as many of your resources?
If you or someone else want to start a business involving these electronic devices, how expensive should it be? Should you be forbidden? Should others also be forbidden?
Should you have the ability to choose readily the person or entity from whom you buy services or hardware? Or should you make decisions based on a high cost of shifting? By cost, I do not mean only direct costs, but indirect costs, such as those of changing habits or those of relearning. I mean, all the costs that come into a decision.
Of course, you will not be interested in most opportunities: I, for example, am not much interested in the auto-parts industry, although I recognize its importance. The question is whether you and others should have the right both to be interested and to act.
The different choices open to you and others depend on how institutions are organized. For example, a society can implement institutions that restrict what you may learn or do; or the society may implement institutions that encourage you to learn and act.
It goes without saying that people in a society can only implement institutions within certain constraints; if they wish for more utopian institutions, they may not be able to sustain them successfully. Utopias often fail. Human character, habits, environments, the available technologies, costs, and outsiders, all limit what can be done. Nonetheless, people have choices, especially in the richer, technologically more advanced societies.
The issues with software are whether to set up institutions that restrict who may use a software package, which raise its cost, a practice that is advantageous to some, but not to others; whether to set up situations which reduce copying, which again is advantageous to some, but not to others; and whether to introduce rules that reduce redistribution, study, and modification?
As the Nobel Prize winning economist, Douglass C. North wrote2
... institutions basically alter the price individuals pay ...
For example, legal barriers to inexpensive use, enforced by police and courts, lead to higher costs for people who use that software.
When there are legal barriers to study, organizations tend to work and rework what they already possess, rather than employ inputs from outside, even though the outside inputs may contain valuable innovations.
However, a society cannot do without institutions; as North also said,
The major role of institutions in a society is to reduce uncertainty by establishing a stable (but not necessarily efficient) structure to human interaction.
Every society will define in one way or another the bundles of rights and obligations, the transfers of resources from one to another, the costs, and the benefits, that its members enjoy or suffer.
In the United States, for example, it is legal, relatively easy, and not too expensive to obtain a copy of Shakespeare's play, `Macbeth'. This was not true in Britain or its then colonies for more than a century and a half after Shakespeare's death in 1616. During that time, the British government continued to enforce the copyright restriction that the copyright holders had on Shakespeare's plays. That law was finally repealed in 1774.
But repeal can be reversed. Until recently, many thought that it would become legal and perhaps even easy to reprint books first printed in the United States during the 1928 - 1932 administration of President Hoover. But the U. S. Congress changed that previous right. You may not legally reprint such books, except by going through a process that is costly in time, and sometimes money; and even then, you may not obtain the legal right — a right that until a few years ago, you had every expectation of having in the early years of the 21st century.
Freedom provides for one way of structuring a society. As a general rule, a free society provides more people with dignity and power than a non-free society.
It goes without saying that a society with freedom must limit the power that some might gain. This is because those people's `freedom to' enables them to hurt others, who wish `freedom from'. There is an old saying, “your freedom to swing your fist stops at the end of my nose”. The freedom “to swing your fist” is a `freedom to'; freedom from being hit is a `freedom from'.
Quite clearly, not everyone can have `freedom to' do anything. `Freedom from' is necessary. Otherwise, people will get into each other's way, and hurt each other. Programmers cannot hide their code from others and still gain the benefits of collaboration.
That is why the major license for software freedom, the GNU General Public License, can be understood as a protection, as a `vaccination'. The License is primarily a `freedom from' license; it protects a programmer from having his or her work taken without recompense. (The License is also a `freedom to' license; it permits third parties to collaborate, even if an author or other first party turns against sharing.)
When I write about software, I am referring both to the programs that run the computer, that is to say its operating system, and to applications, such as electronic mail, spreadsheets, writing tools, and Web browsers. In addition, I am referring to applications that are embedded in a machine, applications that control a fuel injector, or operate a telephone, or control a washing machine.
Free software is software that you may use, copy, redistribute, study, and modify.
These five freedoms constitute a bundle of rights.
Of course, an end-user, someone who uses but does not program a computer, may wish only to copy and use a particular piece of software. But that software is developed and improved by programmers and others who study, modify, and redistribute software. The whole bundle of rights is necessary.
The freedoms to use, copy, redistribute, study, and modify software are not intrinsic to the technology: there exists software that you are forbidden to use, forbidden to copy, forbidden to redistribute, forbidden to study, and forbidden to modify.
In addition, for free software to be effective socially, a programmer, or more precisely, the legal copyright holder of a program, must adopt an obligation to the community: when a programmer fixes or extends work that others have done, and makes that work public, the copyright holder must pass on the same rights that he or she received, so that others may use those fixes and extensions. The free software community calls this practice 'copyleft'.
The converse of this is that others have the same obligation. If you are a programmer, this duty of theirs ensures your access to improvements and fixes to your own work, as well as to the work of others. It means that everyone, including people who are not programmers, will benefit.
The GNU General Public License is the legal tool that provides the most freedom for software. It is the most protective of all the legal tools. It takes away others' freedom to hurt you and others, and restricts them from becoming bullies.
In essence, the GNU GPL forbids you to forbid; you may do everything else. It also forbids others from stopping you.
Consider, for example, the history of the GNU Compiler Collection, GCC. This program is used by many developers to convert their human readable code to code that runs machines.
Richard M. Stallman began writing GCC in the mid 1980s. At that time, he wrote it to work with just one computer programming language, C, so initially he called it the `GNU C Compiler'. However, he wrote the beginnings soundly enough that people could adapt it for other languages, which they did. In part, this extension is the result of good technical work; if the program failed frequently when people adapted it to other languages, or had the job appeared too hard, no one would have extended the program. But GCC was well designed and implemented, so people with a certain amount of skill could make extensions. But in addition to being technologically possible, extension had to be legally possible, without hassle.
In the late 1980s, programmers created another program, called Kyoto Common Lisp. They did a good job technically. However, that code was encumbered by a restriction that at first appeared minor: if you transferred the code to someone else, you were responsible for registering their name with the creators. This was intended to enable the creators to warn all users of problems and pass on improvements. The goal was good. But the restriction meant that no one would sell CDs with the software on it, because of the hassle of registration. Similarly, few, if any Internet repositories would distribute the code, because they could not be sure that those who copied it would register properly.
So the software stayed stunted. Few used it.
Then the license was changed to the GNU General Public License (a copyright holder may always make such a change, regardless of the previous license) and the software became more widely used. And then it was folded into GCC. Now, it is part of the GNU Compiler Collection and called `GNU Common Lisp'.
Freedom requires a legal and institutional framework. There are different ways to ensure software freedom; the most powerful way is to attach a special copyright license, the GNU General Public License, to the software. This license gives you and others more rights than most licenses.
In essence, the GNU General Public License forbids a copyright holder to forbid. You — a copyright holder, a programmer, or someone who does not care about programming — may do everything else. Your rights and those of others are reciprocal; this encourages collaboration among those who wish to work on the software. The GNU GPL protects programmers from having their work stolen from them and it protects users from being over charged for shoddy work.
Other kinds of free software license exist; some, unfortunately, do little to support software freedom (see An Evolutionarily Stable Strategy). I will talk about these licenses in More limited licenses.
But first, I wish to talk about the way software is created — false dreams and true practices.
An argument against free software is that it removes the incentives needed for program development. It removes the inspiration that programmers need. This argument is based on a common but false theory of human action.
Some think that programmers work only for pay, rather than partially for pay. The theory is based on the false mental model that people work only for money; and that they are not motivated by anything else.
The theory contains some truth. Certainly, for many kinds of economic activity, pay is the most important motivator. No one works on an assembly line for pleasure. Similarly, those who do not work for pay, volunteers, cannot help all the poor and helpless. Those who claim otherwise are wrong. The burden is too heavy for volunteers to provide the food, the hospitalization, and the income needed. Payment is necessary.
Thus, those who focus on pay as a motivator have reason for their mental model. But it does not apply universally. Those who focus on the benefits of volunteering also have reason.
2300 years ago, Aristotle spoke of the need for an aristocracy. Without one, he said, civilization could not occur. Only those who did not work for material motivations would have time to run a government, to create art, and to write plays.
In Aristotle's day, a group that did not create material objects had to take them from others. Because of the lack of technological development, people, rather than machines, did the work. This is why Aristotle favored slavery, “until the shuttle”, as he said, could “weave by itself”3. Two millennia after Aristotle, inventors created automated textile machines; these machines could do the work that women, slaves, and other people had done before.
People need to eat to live. A minimal income is necessary. And, of course, people need to learn how to do things. Schooling is required. This costs time and money. So, to follow Aristotle, people who create must have some form of income. They need to be educated.
However, and this is the argument of those who favor volunteer work, in addition to working for paid income, which most economists define as the prime motivator, many people also work for internal reasons, for the pleasure of what they are doing, and for external reasons, to improve their reputation or status in the eyes of others, or because they are expected to work.
Quite obviously, the rich have worked for non-monetary gain, or for indirect monetary gain, for centuries. Some, of course, never work, but many do find that some sort of work is their most interesting long term occupation.
More recently, Abraham Maslow spoke of a hierarchy of needs,
Successful software creation depends on people who can satisfy their needs for survival and security, and who then work for internal or external reasons that are not directly monetary.
Modern technology makes this process, called `commons-based peer-production', more effective than ever before.
In his essay,Coase's Penguin,4 Yochai Benkler described the successful modern practice for “knowledge work” and named it commons-based peer-production.
The keys to understanding commons-based peer-production are that:
Moreover, commons-based peer-production solves management problems that otherwise dog forms of production based on markets or contracts.
In particular, through peer review, commons-based peer-production provides for `subsidiarity'. The process locates a decision as close as possible to where it is appropriate. Peer review stays within the commons-based peer-production organization.
From past experience with academics, novelists, artists, and aristocrats, we can understand the key organizational factors for successful commons-based peer-production:
In addition, we know that:
A “time and motion” expert can tell a person how most efficiently to assemble a widget, or to dig a ditch.
Indeed, a century ago, Frederick W. Taylor, an early “time and motion” expert, became famous for figuring out how to improve the efficiency of digging ditches by hand. Shovels existed in Aristotle's time; and people dug ditches. But a shovel's design, and the way people dug, were inefficient. More than 2000 years after Aristotle, Taylor figured out a more efficient way; the method was adopted by the Bethlehem Steel corporation and then by others.5
But programming is not ditch digging. Programming requires more thought and creativity. “Time and motion” are not enough.
Moreover, people who work on software projects vary greatly from one another. In a group of 11 programmers, one may do as much work as the other 10. Also, we know that it is difficult for managers to determine who is able to do more programming than another and the relative quality and difficulty of that programming. We know that it is difficult to determine who is motivated at any given time.
Because people differ so much from each other, project managers have a hard time deciding how to pay a fair amount to a person who programs part of a project. This is the case whether that person is in a corporate work force or working through a market.
A decade ago, Richard Greenblatt, a famous programmer and the founder of Lisp Machine Inc., tried to set up a just, proportional-pay scheme:6 his goal was to design an institution in which many people could cooperate on a project, and in which each would be paid for his contribution. However, no one could figure out how to pay each person justly. The problem continues.
One suggestion is to pay a person according the number of lines of code he or she writes: the problem is that cheats will write more lines; and, in any event, the best code is often well thought out, and short.
Another suggestion is to use contracts: that is to say, to set up a company that hires programmers and that also sets up a management structure to decide and inspire the programmers to work. This is a common technique and is the method that many people assume is the norm for the industry.
Unfortunately, the contract/contractor method is inefficient. Some software projects fail spectacularly. Others cost more than expected.
Moreover, the relationship between customer and vendor may be warped: often, with software, a customer learns what he or she wants over time. Either the customer pays more than planned, or the vendor absorbs the extra cost. Neither are efficient.
As Benkler says in his article,7
[Commons-based peer-production] is better ... at identifying and assigning human capital to information and cultural production processes. In this regard, peer-production has an advantage in what I call “information opportunity cost.” That is, it loses less information about who the best person for a given job might be ...
A person chooses where to work, which increases his or her motivation.
And others encourage that person to work where the programmer will be most helpful. Or, to be less diplomatic, others discourage the incompetent. (All successful projects must include ways to weed out low quality contributions.)
Without the costs and hassle of defining and enforcing property and contract rights, the costs of organization go down. To use economists' jargon, transaction costs are lower.
Because the goal is to satisfy oneself or others, education benefits. Instead of a customer who pays more than planned, or a vendor who must absorb unexpected costs, people can learn from each other, and help each other, which people like to do when it does not cost them. (Of course, not everyone wants or likes to learn or help others; but enough do.)
Moreover, as Benkler says,8
Peer-production has an advantage ... because it allows larger groups of individuals to scour larger groups of resources in search of materials, projects, collaborations, and combinations than do firms or individuals who function in markets. This is because property and contract impose transaction costs to limit the access of people to each other, to resources and to projects ...
The art of government is to design the rules and institutions of an economy so that they work well. The rules and institutions must support programmers and others.
In particular, while some programmers do not mind when others take their work from them and do not provide any help or recompense in return, other programmers, the majority, interpret such actions as theft, whether or not it is legal. Theft discourages these programmers. They want `freedom from' theft.
Hence, a government must provide courts and inexpensive mechanisms to enforce an anti-theft license, such as the GNU General Public License. Otherwise, a government will see fewer programs developed in its country.
In addition, a government must keep down the costs of information inputs to programmers. Otherwise, as in any occupation, higher costs will reduce output.
Finally, a government must never hinder cooperation, else it raises transaction costs and destroys the efficiency of its software industry.
These three requirements tell a statesman what is needed:
People may work because they have to make a living, but if they feel `ripped off', they do not do a good job. After all, the virtue of a slave is to rob his owner and to rebel against an unjust and forced labor. (A slave can do this most safely by acting stupid and forgetful, hence slaves' infamous reputation among their masters.) On the other hand, the virtue of a citizen is to reduce the profits of crime, to avoid helping a thief.
If a person may look at code, but fears that by doing so, he or she will be sued in later life for taking an idea from it, or fears that his or her company will be sued, then he or she will not study. Or if the programmer does study such code, he or she will find — as happened in the U. S. in the early 1990s — that some potential employers will not offer a job, because they fear being sued if they hire the applicant.
Incidentally, the right to study means the code must be available in a humanly readable form — otherwise, as a practical matter, it is no good.
And finally, since the goal from a government's point of view is to inspire more and better software, a statesman will realize that
Unless forced, programmers will not intentionally make software worse. On the contrary, they will try to make software better. Similarly, no end-user will select a worse program. If proposed changes look good, chances are that others will accept them, but they will do this only if they are permitted to receive them. If modifications are banned, or their redistribution is banned, everyone loses.
This means that both by law, and by its own purchasing and funding decisions, a government must favor free software. Otherwise, it defeats itself.
Put another way, to become more successful, a society must reduce its costs, either of transformation or of transaction or of both.
Douglass North looks at economics and economic history among many countries, over centuries. As he points out9
The total costs of production consist of the resource inputs of land, labor, and capital involved both in transformation of the physical attributes of a good (size, weight, color, location, chemical composition, and so forth) and in transacting — defining, protecting and enforcing the property rights to goods (the right to use, the right to derive income from the use of, the right to exclude, and the right to exchange). ... The costliness of information is the key to the costs of transacting ...
In short, to reduce the cost of transactions, the institutions of society must lower the cost of information. Otherwise, the society generates inefficiencies.
The wise citizen converts the general notions of the previous chapter into specific laws, licenses, and other procedures that people can follow.
The necessary specific legal rights are those to use, copy, redistribute, study, and modify software. These rights generate freedom.
It is important to ensure all five of these rights. While you and other people will benefit a little if you have two or three of these rights, rather than none of them, you and everyone else should have all five rights. Without them, you lose the social and technical benefits — you lose them even if you are not a programmer.
It is also important to ensure that copyright holders fulfill their duty to permit others' access to distributed modifications.
In the short run, even a programmer will benefit a little from restricted, proprietary software: the software can run a computer; that is why people use it. But in the long run, a programmer is hurt because he or she is held back. And others are hurt because programmers are forced to fail.
Proprietary software creates a restricted zone; no one outside that zone can learn from such software. No one can improve it. A programmer can learn only that the program solves certain problems; and that it possesses a specific user interface; he or she cannot learn more. Restricted software makes a programmer a dependent who cannot learn and cannot advance.
Worse, such software creates dependency in everyone else, too. Non-programmers cannot use fixes and improvements that a programmer is forbidden to make.
Note that it is fairly straightforward to copy and distribute software that is hard to study and modify. This is often done with products that are restricted, even though such actions are banned. In countries such as Brazil and Malaysia, for example, you can purchase CDs with Microsoft Office on them for far less than the Microsoft corporation charges. However, the current governments are trying to reduce the use of such software, which is illegal. (Free software can, of course, be obtained and used legally by everyone.)
A programmer needs to be able to do more than copy and redistribute software.
For success, a programmer needs to be able to study and modify software. If you are not a programmer, you need to have the legal right to hire people to do this, and to use the software they develop. Or, simply, you need the legal right to choose the software you want, which may be studied and modified by someone else.
The only way to ensure success is a proper legal and institutional framework that protects rights, yours and those of everyone else.
Freedom for software is not a technical or business issue: what makes software free rather than imprisoned is the legal and institutional framework in which people work.
Regardless whether you are an `end user', a developer, a businessman, a teacher, or a civil servant, you must deal with people who are strangers, people with whom you have no connections. This means that you must, if necessary, be able to resort to law to settle a dispute between you and a stranger. Usually, you can avoid such extremes, but not always. Most people are honest and moral, but not everyone.
You need a legal and institutional framework to protect and preserve your rights. If you cannot protect your freedom, people will take it from you.
Without law, there are no practical sanctions. Without law, you must depend on your family, clan, friends, or a criminal gang. For small groups, such help succeeds, but not when you deal over great distances with strangers.
Moreover, the agents of the law must be reliable, quick, and honest. If the police or the courts are unjust, slow, or corrupt, people, businesses, and governmental organizations will avoid them. People will `hunker down'; they will do less than they might, because action is too dangerous.
Please understand: I do not myself like courts or lawyers. What I am trying to say is that they are a necessary last resort. Whenever possible, most people avoid courts and lawyers.
For the law to work successfully, we need a reliable, quick, and honest legal system. No other way of settling disputes provides justice.
What do I mean by a reliable, quick, and honest legal system? I mean an independent and un-self-interested court system.
How can you protect your freedom, and others' duty towards you? The answer is to employ a government. The job of the government is to protect you from those who would try to injure and take from you, and to constrain you from hurting others.
Governments work through laws, which are public statements that tell everyone what the government's police and courts permit and what they do not permit. Governments also work through bounties. Bounties pay for some actions and do not pay for others. Bounties may be direct, but often they are implemented as differential tax benefits or as government purchases.
Laws enable certain practices, and try to disable others. Bounties encourage certain practices.
The GNU General Public License is a way to employ copyright law to enable certain practices, and to disable others. The GNU GPL is a specially drafted copyright license. It is a legal tool. It is a license for a piece of software, for code.
In the following discussion, I speak to “you” as if you are a programmer and copyright holder both. Of course, you may be one or the other or neither. You may be an “end user”, someone who uses software that others write. Regardless of who you are, the software industry needs this legal tool, this license, since people both outside and within the industry benefit from it.
The GNU General Public License gives you rights to use, copy, redistribute, study, and modify software. It forbids you to forbid. It also forbids others from preventing you from acting.
In addition, the GNU General Public License imposes on you an obligation, a duty that others expect you to follow, one that a government may enforce through its police and courts. Your duty requires you, after you have published a modification to someone else's code, to give to others the same rights that you received when you accepted that code, so that others may use those fixes and extensions.
The GNU GPL was invented by the GNU Project to protect and preserve free software. (Richard Stallman started the GNU Project in 1984. It led to GNU/Linux.)
An aside: since the GNU General Public License gives you more rights than the usual copyright license, it is sometimes called a `copyleft'.
This neologism depends on the multiple meanings of the word `right'. The word `copyright' uses the word `right' but,
On the other hand,
Before discussing your duty, let me first go through the list of rights that come with free software: your rights to use, copy, redistribute, study, and modify the software.
First, the right to use software.
Even if you possess a computer, and have software that runs on it, you may be forbidden to do so. Sometimes people say, “In that case, I will run the software without permission.” There are two problems with this.
The first is that as a country becomes more successful, the methods of policing improve.
Schools and universities will check students' software. Companies will not run forbidden software because their managers fear that a disgruntled employee will tell the copyright owner. They fear that their company will have to pay a penalty. Indeed, the company that supplies me with electricity hired a `license compliance manager' to make sure that the company did not run software in a forbidden manner.
The second problem is that forbidden software is often available only in a binary format. Binary software provides you only with the ability to run a computer. You cannot study, learn, or modify the program. You become dependent.
The right to copy.
Not many people own a factory that enables them to copy a car. Indeed, to copy a car is so difficult that we use a different word, we speak of `manufacturing' a car. And there are not many car manufacturers in the world.
Ask yourself, do you own a car factory?
But everyone who possesses a computer owns a software factory, a device for manufacturing software, that is to say, for making new copies. Because copying software is so easy, we do not use the word `manufacturing'; we usually do not even think of it as a kind of manufacturing, but it is.
Ask yourself, do you possess a computer?
If you do, you can readily manufacture an entity that is as complex as a car. The entity will be a software package, not a material object; that is because of the way our technology has advanced over the past few centuries. It is now relatively cheap to manufacture complex informational objects, but still expensive to manufacture complex material objects. (Perhaps the course of technology could have been different; perhaps not. I do not know. All I know is that over the past half century, the cost of manufacturing a complex informational object has dropped dramatically.)
In effect, everyone who owns a computer has become the owner of a factory. In the 19th century, such ownership was rare. Now it is commonplace.
In the political language of the 19th century, the right to copy software is the right to use your property, your own means of production.
The third of these legal rights is the right to redistribute. This right enables you or others to start a business, to choose with whom you do business, to help a friend, to share.
Without the right to redistribute, the market for software will be neither competitive nor free. Without it, the price for software may be inefficiently high. And without it, governments, police, and courts must either be despised, for failing to enforce laws against redistribution, or must spend taxpayers' money to enforce those laws.
Without the right to redistribute, a country will gain less.
The right to redistribute means that you, who own a computer, a software factory, have the right to make copies of a program and provide them to others. You can charge for these copies, or give them away. Others may do the same.
Redistributed code must include source code. Redistributed binary code lets people run a computer, but prevents you or others from doing anything else. Remember, binary code traps you in dependence. As a practical matter, you and others can learn from source code, but not from binary code.
Next, the right to study. This right enables programmers to learn.
This right is of little direct interest to people who are not programmers. It is like the right of a doctor to study medicine or a lawyer to read legal text books. Unless you are in the profession, you probably wish to avoid such study.
The right to study means that people in places like Mexico, or Germany, or Thailand, can study the same code as people in Japan or the United States. It means that these people are not prevented from learning how others succeeded.
Bear in mind that many programmers work under restrictions that forbid them from seeing others' code. All they see are the programs of their immediate colleagues and the toy programs of school text books. They are forbidden from studying the programs of their more distant colleagues, those who work in different organizations.
Nearly a thousand years ago, Bernard of Chartres said that the best way to see ahead and to advance is to sit on the shoulders of a giant.10 But programmers who are unable to see others' code do not sit on the shoulders of anyone; they are thrown into the mud. The right to study is the right to look ahead, the right to advance.
Moreover, the right to study means that the software itself must be made available in a manner that humans can read.
Software often comes in two forms, one readable only by computers and the other readable only by people. The form that a computer can read is what the computer runs. This form is called a binary or executable. The form that a human can read is called source code. It is what a human programmer creates, and is translated by another computer program into the binary or executable form.
Actually, a programmer can read binary, but with difficulty; it is seldom worth the effort. And some programming languages use the same text for both the humanly readable and the executable code. Either way, readily readable code is best for humans. People will study readable code.
The right to modify is the right to fix a problem or enhance a program. This right enables software to grow better.
For most people, this means your right or your organization's right to hire someone to do the job for you, in much the same way you hire an auto mechanic to fix a car or truck or hire a carpenter to work in your home. If you are a programmer, this means your right to do the work yourself, if you wish. If you are not a programmer, and do not wish to hire anyone, then this means your right to choose the program that best does what you want.
Modification is helpful. Application developers cannot think of all the ways others will use their software. Developers cannot foresee the new burdens that will be put on their code. They cannot anticipate all the local conditions, whether someone in Kenya will use a program first written in Finland.
As Douglass C. North said, in a more general statement,11
In a world of uncertainty, no one knows the correct answer to the problems we confront and no one therefore can, in effect, maximize profits. The society that permits the maximum generation of trials will be most likely to solve problems through time ...
Put another way, the society that permits more modifications will be more likely to survive over time.
Under the GNU General Public License, when you create and distribute new code that fixes or extends older code, then you gain a duty: if you redistribute, you must redistribute the sources for your new code under the same terms as the older code. This means that people who use your new version of the older code retain the same rights and freedoms that they had when they used the older code.
No one loses the benefits of collaboration.
It means that if you fix my code, and you publish that fix, I have the right to use your fix. It also means that if I fix your code, and publish the fix, you have the right to use my fix.
Most computer programs have licenses. But some licenses do not impose an obligation to redistribute fixes or extensions.
These other licenses, such as a modified or unmodified BSD license, permit a person or company to take software that is itself free, and for them to fix a bug or make an improvement, and then restrict who may use that fix or improvement.
The United States government created the original BSD license. In effect, it became a way to subsidize partially monopolistic companies, since each received code that was paid for by the United States taxpayer. (The code was written at the University of California, Berkeley, under a program mostly funded by the U. S. military.)
The original Netscape Public License was like this as well. You could look at their original source code, but if you contributed modifications or improvements, AOL (now Time Warner), the company that purchased Netscape, had the legal right to take your work and prevent you from using any fixes to it or improvements to it that they made. They could legally prevent you from using software with your own code in it!
While a good many people went along with this license, and they called it `free software', many others refused to cooperate with Netscape. I myself think that this is one reason the new Netscape browser was so delayed: Netscape lost the cooperation of the people they needed at the beginning, the people who are the best in the world, who refused to help them.
I mention all this because the obligation is as important as the rights. For success, a company must contribute to the community as well as take from it.
And while good will is important, and community concern is important, it is only through the law can we ensure that everyone acts upon their duty.
There are three parts to computer security: the system's design, the way people use it, and the old fivesome: burglary, bribery, blackmail, bamboozlement, and belief.
The technical parts of design are understood and implemented. With GNU Privacy Guard, for example, you can send email that cannot be decrypted.
However, crooks and spies do not attempt the impossible. Technical success means only that they change their focus to studying how people use their machines and to burglary, bribery, blackmail, or bamboozlement, and to finding people whose beliefs they can employ.
For example, to overcome inefficiencies caused by security measures, people sometimes tell colleagues their pass phrases. This is a workaround. The alternative is to instigate a redesign to make the software both more secure and more efficient. But people do not do this unless the action is simple. They tend to do what is simplest in the short run, which is to be insecure.
Worse, often times, neither they nor their managers look upon the workaround as a symptom of a poorly designed, insecure work place. Crooks and spies, of course, seize the opportunity. They listen in elevators and look through windows. They find pass phrases and enter the local network.
Another technique is bamboozlement. Bamboozlement is a suckers' game. In the past, for example, some businesses provided convenient `help desks' for their employees. If you worked for such a business, and forgot your password, you could telephone the help desk, tell the service agent your name, employee ID, and date of hire, and the service agent would reset your password and tell it to you. You could return to work immediately.
This convenient help method presumed that no criminal or spy will go to the trouble of discovering an employees' name, ID, and date of hire, and then impersonating that employee. To some degree, the presumption is valid. Most of the time, the method works. Most people are never impersonated.
Moreover, the method keeps out `riff-raff'. With such a barrier, a criminal or spy will act only if the potential treasure lures strongly. But being on a network, the potential treasure may be much bigger than you imagine. This is often forgot.
The relevant treasure may not be what an employee has or has immediate access to; for a criminal or spy, the employee may simply be an entry or transport point. For example, someone in St. Petersburg, Russia, obtained the sources for much of Microsoft's major software; that person pretended to be an employee; but the employee was not the target, the sources were the target.
Alternatively, the target treasure might be the records of a meeting about take-over bids. Millions and billions are spent on take-overs; secret knowledge can bring a fortune. For a military spy, the target might be personal information about a large number of an opponents' citizens. Civilian businesses often collect such information to inform their marketing. But the information can be used in other ways by an enemy military.
Only in sports do competitors play fairly. In war certainly, and in business often enough, competitors are unfair. They do not `play by the rules'. This means that a country, or business, or other social institution, must design itself to defend against the worst as well as against `riff-raff'.
As for defense: the first rule of system design is clear, and old fashioned: `never put all your eggs in one basket'. For example, never permit all your information to be collected in one place, or to be accessible by any one method or group of methods.
The reason is simple: if your and others' information can be accessed in one place, or accessed in a multitude of different places by one method or group of methods, then well-funded, well-educated, sophisticated bad guys will try.
(It goes without saying that with well defended valuables, the programmers never work with the system or systems that hold the data, the data administrators check on each other, and the users can never access more than a few records each day. Only an `adversary' military would have the reason and could afford the cost — perhaps in the hundred of millions of dollars — required to fund a theft. It would be difficult.
(Inexpensive theft is less and less likely. When computers that contained medical information on more than a million United States soldiers were stolen in 2002, all presumed that thieves had taken them only to sell the hardware. None thought that crooks knew enough to sell the data to an adversay for vastly more than they could sell the stolen machinery. At that time, the presumption was correct, as far as we know.)
People often make decisions in terms of their personal experience, or their friends' experiences; but such experiences tend to be local. You will know, directly or indirectly, about local thieves. Not so many people have experience with crackers hired by a mafia in St. Petersburg, Russia, or in New York, USA. But with the Internet, your information is as close to someone far from you as to someone close by.
Moreover, as the military says, `a point of trust is a place of insecurity'. A point of trust is where someone, or a group of people, may be burgled, bribed, blackmailed, or bamboozled. Or where someone can hold secret and contrary beliefs. Crooks and spies do not go to places that do not matter (except to confuse followers, or for vacation); they focus on key points. And if they do not want to attempt to overcome effective encryption technologies, they employ the `old fivesome'; they use old methods on new people.
If you want your country well defended, and if you want to feel secure personally, then you must insist that neither a government nor a private company nor any other organization collect your information in one place, or permit information in several places be accessed by an `interconnect' method or group of methods. In Chicago, for example, jewelry salesmen took to informing the police where they were going, for protection. But a crook got access to that information, and used it for robberies. By telling the police where they were going, the jewelers were telling the crook where to rob them.
That is the beginning: follow the principle of `don't put all your eggs in one basket', where, electronically, `one basket' may also encompass many different physical repositories, brought together electronically.
One complication is that a machine that sends and receives email must be on the Net; otherwise, its purpose is lost. Consequently, such a machine, and its software, must be engineered so that nothing carried in an email message can cause harm. For example, its software should not respond to viruses. An otherwise convenient `macro' feature is a fault, not a virtue. You should avoid an email program, such as Microsoft Outlook, that implements such a danger.
Traditionally, governments have thought to increase their and their citizen's security by centralizing information. Police and other agencies then access and use this information. Unfortunately, this is the wrong approach. The more successful a government or private business is at collecting information and providing access to it, the more that access is worth to a crook or spy.
A central information repository — or a distributed one that appears `central' only because of electronic linking — is like a single, central fortress; once infiltrated, corrupted, or captured, the fortress falls. When a fortress contains information, capture may mean `copy'; there may be no visible indication that anything is wrong. The legitimate users may carry on happily and blindly.
Everyone one knows that a single physical target is a prime target. No one but a fool builds a central information repository as a single physical fortress. Instead, an information repository is spread out physically over many different locations, and each requires a different method to access. This is a trivial but good habit.
Nonetheless, from the point of view of an electronic attacker, such a repository is still a single valuable target. Security comes only by disconnecting segments of the repository from each other, so there are several repositories, and by disconnecting them from networks.
Instead of one hundred thousand people having access to information on which an enemy might be willing to spend one hundred million dollars (as suggested by some recent U. S. government proposals), only one hundred people should have such access. We know that security will fail when 100,000 people are involved; we also know that sometimes, security will be successful when secrets are limited to one hundred people.
Unfortunately, not only do these kinds of defenses keep out enemies, they hinder friends. This action increases the cost of legitimate access to the information repositories. Segmentation is expensive. Segmentation raises the cost of information inputs to those who try to help.
This extra cost means that governments, businesses, and other organizations must rethink how they do their work. For example, rather than collect all kinds of information about air travelers — who their documentation claims they are, their previous travel patterns, their friends, associates, and neighbors in the same network, town, or street — a security agency must work differently. It should decide that the kind of information it sought in the past is too expensive in the modern world. The security agency should expect failures, because it could not collect the requisite information, because it could not successfully analyze it in time, or because it was corrupted. Instead, it should act differently. For example, the security agency should push for stronger cockpit doors. These will hinder hijackers in a passenger compartment who try to enter a cockpit. And the agency should strive to inspire passengers to defend themselves if attacked.
Clearly governments can and have kept some secrets well. My point is that such endeavors are expensive. Moreover, they become more expensive as they become more useful to the `good guys'.
Companies often collect many pieces of personal information, each small and seemingly irrelevant, such as how much bread a buyer last purchased. A business may forget that this information, with appropriate processing, can also be useful to a military or commercial enemy. Moreover, as I said before, since information can be copied readily, such information may be collected and used by a business, and at the same time captured and used by an enemy. A business, or its host government, may not recognize the subversion.
Instead of collecting such information, a company should focus on making better use of the aggregated information that comes from its sales and which is anonymous. This is safer for all.
Of course, the change is difficult. People do not like to disrupt their lives. They do not want to change jobs. But we are endangered by the kinds of policing and the kinds of information gathering that was used in the past. Successful security means that those activities be abandoned.
Moreover, these activities must be banned. In so far as a private company can increase its sales by analyzing and applying personal information that it collects, it will do so. Otherwise, those who follow the practice will over time succeed over those who do not. The practice must be outlawed. Only by jointly accepting their need to defend freedom, will everyone succeed. Otherwise, the defenders will lose to crooks and to free riders.
Why is free software a successful technology? It is successful because freedom brings benefits.
To software, freedom brings:
To customers and businesses, freedom brings:
To society, freedom brings
Because of the ways people respond to a world of freedom, it brings: security, reliability, and efficiency to software.
In the spring of the year 2000, a large number of people who used proprietary software from Microsoft were hurt by a virus called the `I Love You' virus or `Love Bug'. The vendor had created a system that is foolishly vulnerable.
You can, of course, make free software equally vulnerable, just as you can open the door to any house or business and invite thieves in. But none of the free software distributions that I know are so vulnerable. This is because people want to avoid harm and are able to insist that their vendors protect them. Of course, the free software producers do not always succeed, but on the whole, they have done well.
On the contrary, a proprietary vendor may not care about security, or may come to care later than makes sense. According to Info World,12 the senior vice president in charge of Microsoft's Windows development team said,
We really haven't done everything we could to protect our customers ... Our products just aren't engineered for security.
This ill design may have made sense in the latter 1970s, when Microsoft first acquired the `Quick and Dirty Operating System' that it turned into DOS and the initial Microsoft Windows environments. After all, at that time, microcomputers were standalone machines, like typewriters; they were not connected to a network. Security was not an issue. However, secure design has been important since the 1980s, when many people began to connect to the Internet, which grew in size from that of a small town to that of a city, and then grew larger than any city on the planet.
I do not have much experience with systems that crash, excepting when hardware fails, or I am testing experimental software, or when my sister's husband is working on the electricity upstairs and turns off all the electricity.
Programs are complex entities. They have thousands or millions of components. Because the components themselves are mathematical objects, that is to say, numbers and symbols, the components will not and cannot break, any more than the number 3 can break. But the components can be combined wrongly, or the programmer can insert the wrong components, or leave them out. Such bugs cause havoc.
An advantage of free software is that many people — three, four, ten, sometimes more, sometimes hundreds — look at a piece of code. And as the somewhat awkward saying goes
Many eyes make all bugs shallow.
That is to say, one of the many people looking at the code will notice the problem. And it will get fixed. Everyone wants and is rewarded for good, working code. The user does not want trouble; the programmer does not want a shameful reputation. She wants a good reputation.
(Of course, if you are not programming or not hiring someone to program for you, then no one may fix a bug that bothers you. Freedom enables you to make the effort or pay the price, if you so choose; it does not guarantee that another will do the job for you.)
In contrast, as I wrote earlier, a proprietary company that sells updates will have a financial incentive to leave at least some bugs in its code. This is so its customers will have an incentive to buy an upgrade.
I find it odd that anyone would purchase overpriced, buggy code, but they do. They either do not know about alternatives or they see their actions as less difficult than switching.
Or they may not understand that quality software exists. For example, I sometimes see people reboot their computer for no obvious reason, that is to say, for no obvious reason if the software is sound. For example, I have heard that some people reboot their computer when they upgrade their a Web browser. This makes no sense at all.
As a practical matter, no one who uses a desktop machine and has a reliable electrical power supply should have to reboot more than twice a year, and perhaps not that often. The main reason to reboot, besides hardware troubles and electric power failures, is to install a change in the boot program itself.
If you are testing an experimental version of an application program, and if it does crash, you should not need to reboot. Moreover, your work should be saved for you automatically, or all but a few hundred characters of it should be saved, even if the electric power dies.
A notable feature of free software is that many applications run well on older, less capable machines. For example, not long ago I ran a window manager, graphical Web browser, and an image manipulation program on my sister's old `486' machine. These worked fine. Text editors, electronic mail, and spreadsheets require even fewer resources than those which use graphics.
This frugality means that people can use older equipment. It means that people can work effectively with newer, more capable equipment. At the same time, manufacturers are building modern, low-end computers that do as much as the older ones, and are not too expensive.
There is no need to acquire expensive hardware to run your software, unless you are doing the kind of job that you could not undertake a few years ago.
Similarly, frugality means that embedded systems can run a core of free software programs that are little different from, or even exactly the same as, those that run on bigger machines. Rather than diminish the quality of important programs, frugality enables designers to remove less important programs. (Of course, no one can run large programs on small machines, but for many purposes, small machines are large enough.)
To customers and businesses, free software brings frugality, a choice of vendors, and lower barriers to entry.
Computer programs can be written so that they are `bloated' or concise; that is to say, they can be written to require more or less code to do the same job. Often it is simpler or quicker for programmers to write bloated code thoughtlessly than write tight code.
However, no one wants to publish thoughtless work. Programmers seek a good reputation. Hence, software freedom discourages bloat, since free software is published. On the other hand, software restrictions keep software secret, or secret within a small group. Bloat is less discouraged.
Of course, these tendencies, one way or the other, do not mean that all free software is free of bloat, or that all proprietary software is spendthrift. These tendencies describe only a way of leaning.
Over time, however, the original writer and others will find it easier to understand, fix, and extend less bloated code; they will have a harder time with bloated code. The less bloated code will do better for the society. (Code can be too concise as well as too loose. When code is too concise, programmers — even the original author — have a hard time figuring out what it does, which means they have a hard time changing it. A key to good software is to write the appropriate degree of conciseness).
Moreover, over time, end-users will find that they pay less for hardware that runs less bloated code. This helps consumers.
In addition to the way programmers write code that they know others will study, free software brings with it frugal standards.
Standards are the way in which two programs, or two people, connect. One important standard is the form in which electronic mail is written and sent.
A while back, for example, I received an email message about “Access to Information and Communication for Sustainable Development”. The message was sent both to me and to correspondents in poor countries.
This `Access' message was written in .doc format. It took up more than four and a half times the resources needed to convey the contents. It could have been sent as a plain text message.
Next time you budget for a project, consider paying four and a half times its cost. Then consider whether you would fund it. Next time you pay at a restaurant, take out four and a half times the money ...
For me the resource use was not an issue because I do not pay by the minute for telecommunications, as many do. But I know that my correspondents around the world prefer that I take care in my communications that I do not waste their money or that of their supporting institutions.
Customarily, people who use free software write their messages in plain text. Not all do, of course, but it is a social custom, one that saves on resources.
Freedom means that you, as a customer, have a choice among those who would provide you with software and associated services. You are not in a `take it or leave it' situation. You can choose among your vendors.
Perhaps paradoxically, this choice is good for many vendors. Yes, it is easier for a customer to leave.
But this also means that a customer is not frightened of working with a small business that he or she fears may vanish in five or ten years. The customer can move on without trouble, and as a consequence, finds it less expensive and less risky to stay. This contrasts with comments I have heard, where a customer decides to avoid a business because moving from it would be expensive, and the customer fears that the business will disappear.
Also, if customers can readily leave, employees know that they come to the business because the customers like the solutions the business sells. Employees like this, because it tells them they are doing a good job. Owners sometimes like this, since they, too, want to know they are living morally.
Freedom means that you, as a businessman, have the legal right to start a business. You are not hindered by overly expensive licenses. You are not forbidden.
A quick digression here: restricted software often means you are forbidden to become a businessman or entrepreneur, you are forbidden to start a business. Miguel de Icaza, who started a major international project in Mexico, could never has started with restricted software. He was forbidden to use that software. Since free software is sold in a competitive market, its price is low.
I said earlier, Douglass C. North pointed out that13
... no one knows the correct answer to the problems we confront ... The society that permits the maximum generation of trials will be most likely to solve [them] ...
Moreover, as Clayton M. Christensen says14 the
... processes that are key to the success of established companies are the very processes that reject disruptive technologies ...
Some companies run themselves well enough that they can invest in a change that counters their current customers' wants, that reduces their profits, and that may not work anyhow. But not many are so good.
A society that intends to progress must provide for dud organizations' easy death. In the case of business organizations, the country must provide workable bankruptcy and buy-out laws. Other kinds of organization, such as non-profit hospitals, need a structure that enables, if necessary, their own easy `discontinuance'. Governments need to be able to replace themselves; losers must be willing to leave. (Elections serve this purpose when they permit the defeat and replacement of incumbents.)
At the same time, a society needs new organizations to work with the new opportunities. There is where it become important that businesses and other organizations can start legally and inexpensively. Without legality, an organization cannot readily grow beyond a limited size. Without low cost, those who would begin or promote new organizations will start or invest in fewer of them.