10. Freedom

Free For All. Go to the Table of Contents. Vist the Gifcom.

The notion embodied by the word "free" is one of the great marketing devices of all time. Cereal manufacturers know that kids will slog through bowls of sugar to get a free prize. Stores know that people will gladly give them their names and addresses if they stand a chanceĀ of winning something for free. Car ads love to emphasize the freedom a new car will give to someone.

Of course, Microsoft knows this fact as well. One of their big advertising campaigns stresses the freedom to create new documents, write long novels, fiddle with photographs, and just do whatever you want with a computer. "Where do you want to go today?" the Microsoft ads ask.

Microsoft also recognizes the pure power of giving away something for free. When Bill Gates saw Netscape's browser emerging as a great competitive threat, he first bought a competing version and then wrote his own version of a web browser. Microsoft gave their versions away for free. This bold move shut down the revenue stream of Netscape, which had to cut its price to zero in order to compete. Of course, Netscape didn't have revenues from an operating system to pay the rent. Netscape cried foul and eventually the Department of Justice brought a lawsuit to decide whether the free software from Microsoft was just a plot to keep more people paying big bucks for their not-so-free Windows OS. The fact that Microsoft is now threatened by a group of people who are giving away a free OS has plenty of irony.

The word "free" has a much more complicated and nuanced meaning within the free software movement. In fact, many people who give away their software don't even like the word "free" and prefer to use "open" to describe the process of sharing. In the case of free software, it's not just an ad campaign to make people feel good about buying a product. It's also not a slick marketing sleight of hand to focus people's attention on a free gift while the magician charges full price for a product. The word "free" is more about a way of life. The folks who write the code throw around the word in much the same way the Founding Fathers of the United States used it. To many of them, the free software revolution was also conceived in liberty and dedicated to certain principles like the fact that all men and women have certain inalienable rights to change, modify, and do whatever they please with their software in the pursuit of happiness.
Tossing about the word "free" is easy to do. Defining what it means takes much longer. The Declaration of Independence was written in 1776, but the colonial governments fought and struggled with creating a free government through the ratification of the current United States Constitution in 1787. The Bill of Rights came soon afterward, and the Supreme Court is still continually struggling with defining the boundaries of freedom described by the document. Much of the political history of the United States might be said to be an extended argument about the meaning of the words "free country."

The free software movement is no different. It's easy for one person to simply give their software away for free. It's much harder to attract and organize an army to take on Microsoft and dominate the world. That requires a proper definition of the word "free" so that everyone understands the rights and limitations behind the word. Everyone needs to be on the same page if the battle is to be won. Everyone needs to understand what is meant by "free software."

The history of the free software world is also filled with long, extended arguments defining the freedom that comes bundled with the source code. Many wonder if it is more about giving the user something for nothing, or if is it about empowering him. Does this freedom come with any responsibilities? What should they be? How is the freedom enforced? Is freeloading a proper part of the freedom?

In the early years of computers, there were no real arguments. Software was free because people just shared it with each other. Magazines like Creative Computing and BYTE published the source code to programs because that was an easy way to share information.

People would even type in the data themselves. Computers cost money, and getting them to run was part of the challenge. Sharing software was just part of being neighborly. If someone needed to borrow your plow, you lent it to them when you weren't using it.

This changed as corporations recognized that they could copyright software and start charging money for it. Most people loved this arrangement because the competition brought new packages and tools to market and people were more than willing to pay for them. How else are the programmers and the manual writers going to eat?

A few people thought this was a disaster. Richard Stallman watched the world change from his office in the artificial intelligence labs of MIT. Stallman is the ultimate hacker, if you use the word in the classical sense. In the beginning, the word only described someone who knows how to program well and loves to poke around in the insides of computers. It only took on its more malicious tone later as the media managed to group all of those with the ability to wrangle computers into the same dangerous camp. Hackers often use the term "cracker" to refer to these people.

Stallman is a model of the hacker. He is strident, super intelligent, highly logical, and completely honest. Most corporations keep their hackers shut off in a back room because these traits seem to scare away customers and investors who just want sweet little lies in their ears. Stallman was never that kind of guy. He looked at the burgeoning corporate control of software and didn't like it one bit. His freedom was slowly being whittled away, and he wasn't the type to simply sit by and not say anything.

When Stallman left the AI lab in 1984, he didn't want to be controlled by its policies. Universities started adopting many of the same practices as the corporations in the 1980s, and Stallman couldn't be a special exception. If MIT was going to be paying him a salary, MIT would own his code and any patents that came from it. Even MIT, which is a much cooler place than most, couldn't accommodate him on staff. He didn't move far, however, because after he set up the Free Software Foundation, he kept an office at MIT, first unofficially and then officially. Once he wasn't "on the staff," the rules became different.

Stallman turned to consulting for money, but it was consulting with a twist. He would only work for companies that wouldn't put any restrictions on the software he created. This wasn't an easy sell. He was insisting that any work he did for Corporation X could also be shared with Corporations Y and Z, even if they were direct competitors.

This wasn't how things were done in the 1980s. That was the decade when companies figured out how to lock up the source code to a program by only distributing a machine-readable version. They hoped this would control their product and let them restrain people who might try to steal their ideas and their intellectual property. Stallman thought it was shutting down his ability to poke around inside the computer and fix it. This secrecy blocked him from sharing his thoughts and ideas with other programmers.
Most programmers looked at the scheme of charging for locked-up binary versions of a program as a necessary evil. Sure, they couldn't play around with the guts of Microsoft Windows, but it also meant that no one could play around with the guts of the programs they wrote. The scheme locked doors and compartmentalized the world, but it also gave the creator of programs more power. Most programmers thought having power over their own creation was pretty neat, even if others had more power. Being disarmed is okay if everyone else is disarmed and locked in a cage.

Stallman thought this was a disaster for the world and set out to convince the world that he was right. In 1984, he wrote the GNU Manifesto, which started his GNU project and laid out the conditions for his revolution. This document stood out a bit in the middle of the era of Ronald Reagan because it laid out Stallman's plan for creating a virtual commune where people would be free to use the software. It is one of the first cases when someone tried to set down a definition of the word "free" for software users. Sure, software and ideas were quite free long ago, but no one noticed until the freedom was gone.
He wrote,

I consider that the golden rule requires that if I like a program I must share it with other people who like it. Software sellers want to divide the users and conquer them, making each user agree not to share with others. I refuse to break solidarity with other users in this way.. .. So that I can continue to use computers without dishonor, I have decided to put together a sufficient body of free software so that I will be able to get along without any software that is not free.

The document is a wonderful glimpse at the nascent free software world because it is as much a recruiting document as a tirade directed at corporate business practices. When the American colonies split off from England, Thomas Paine spelled out the problems with the English in the first paragraph of his pamphlet "Common Sense." In his manifesto, Stallman didn't get started using words like "dishonor" until the sixth paragraph. The first several paragraphs spelled out the cool tools he had developed already: "an Emacs text editor with Lisp for writing editor commands, a source level debugger, a yacc-compatible parser generator, a linker, and around 35 utilities." Then he pointed to the work he wanted to complete soon: "A new portable optimizing C compiler has compiled itself and may be released this year. An initial kernel exists but many more features are needed to emulate Unix." He was saying, in effect, that he already had a few juicy peaches growing on the trees of his commune.

If this wasn't enough, he intended to do things a bit better than UNIX. His operating system was going to offer the latest, greatest ideas of computer science, circa 1984. "In particular, we plan to have longer file names, file version numbers, a crashproof file system, file name completion perhaps, terminal-independent display support, and perhaps eventually a Lisp-based window system through which several Lisp programs and ordinary Unix programs can share a screen." The only thing that was missing from every computer nerd's wish list was a secret submarine docking site in the basement grotto.

The fifth paragraph even explained to everyone that the name of the project would be the acronym GNU, which stood for "GNU's Not UNIX," and it should be pronounced with a hard G to make sure that no one would get it confused with the word "new." Stallman has always cared about words, the way they're used and the way they're pronounced.

In 1984, UNIX became the focus of Stallman's animus because its original developer, AT&T, was pushing to try to make some money back after paying so many people at Bell Labs to create it. Most people were somewhat conflicted by the fight. They understood that AT&T had paid good money and supported many researchers with the company's beneficence. The company gave money, time, and spare computers. Sure, it was a pain to pay AT&T for something and get only a long license drafted by teams of lawyers. Yes, it would be nice if we could poke around under the hood of UNIX without signing a non-disclosure agreement. It would be nice if we could be free to do whatever we want, but certainly someone who pays for something deserves the right to decide how it is used. We've all got to eat.

Stallman wasn't confused at all. Licenses like AT&T's would constrict his freedom to share with others. To make matters worse, the software companies wanted him to pay for the privilege of getting software without the source code.

Stallman explains that his feelings weren't focused on AT&T per se. Software companies were springing up all over the place, and most of them were locking up their source code with proprietary licenses. It was the 1980s thing to do, like listening to music by Duran Duran and Boy George.

"When I decided to write a free operating system, I did not have AT&T in mind at all, because I had never had any dealings with them. I had never used a UNIX system. They were just one of many companies doing the same discreditable thing," he told me recently. "I chose a Unix-like design just because I thought it was a good design for the job, not because I had any particular feelings about AT&T."

When he wrote the GNU Manifesto, he made it clear to the world that his project was more about choosing the right moral path than saving money. He wrote then that the GNU project means "much more than just saving everyone the price of a UNIX license. It means that much wasteful duplication of system programming effort will be avoided. This effort can go instead into advancing the state of the art."

This was a crucial point that kept Stallman from being dismissed as a quasi-communist crank who just wanted everyone to live happily on some nerd commune. The source code is a valuable tool for everyone because it is readable by humans, or at least humans who happen to be good at programming. Companies learned to keep source code proprietary, and it became almost a reflex. If people wanted to use it, they should pay to help defray the cost of creating it. This made sense to programmers who wanted to make a living or even get rich writing their own code. But it was awfully frustrating at times. Many programmers have pulled their hair out in grief when their work was stopped by some bug or undocumented feature buried deep in the proprietary, super-secret software made by Microsoft, IBM, Apple, or whomever. If they had the source code, they would be able to poke around and figure out what was really happening. Instead, they had to treat the software like a black box and keep probing it with test programs that might reveal the secrets hidden inside. Every programmer has had an experience like this, and every programmer knew that they could solve the problem much faster if they could only read the source code. They didn't want to steal anything, they just wanted to know what was going on so they could make their own code work.

Stallman's GNU project would be different, and he explained, "Complete system sources will be available to everyone. As a result, a user who needs changes in the system will always be free to make them himself, or hire any available programmer or company to make them for him. Users will no longer be at the mercy of one programmer or company which owns the sources and is in sole position to make changes."

He was quick to mention that people would be "free to hire any available programmer" to ensure that people understood he wasn't against taking money for writing software. That was okay and something he did frequently himself. He was against people controlling the source with arbitrarily complex legal barriers that made it impossible for him or anyone else to get something done.

When people first heard of his ideas, they became fixated on the word "free." These were the Reagan years. Saying that people should just give away their hard work was sounding mighty communist to everyone, and this was long before the Berlin Wall fell. Stallman reexamined the word "free" and all of its different meanings. He carefully considered all of the different connotations, examined the alternatives, and decided that "free" was still the best word. He began to try to explain the shades of meaning he was after. His revolution was about "free speech," not "free beer." This wasn't going to be a revolution in the sense that frequent flyer miles revolutionized air travel nor in the way that aluminum cans revolutionized beer drinking. No, this was going to be a revolution as Rousseau, Locke, and Paine used the word.
He later codified this into four main principles:

The freedom to run the program, for any purpose (freedom 0).[^6]
[6]: He numbered them starting at zero because that was what computer scientists did. Someone figured out that it was simpler to start numbering databases at zero because you didn't have to subtract 1 as often. The freedom to study how the program works, and adapt it to your needs (freedom 1).
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).