I was part of the free software movement for many years, but I didn't know it. When I was a graduate student, I released the source code to a project. In 1991, that was the sort of thing to do in universities. Publishing the source code to a project was part of publishing a paper about it. And the academy put publishing pretty high on its list.
My first big release came in May 1991 when I circulated a program that let people hide secret messages as innocuous text. My program turned any message into some cute play-by-play from a baseball game, like "No contact in Mudsville! It's a fastball with wings. No wood on that one. He's uncorking what looks like a spitball. Whooooosh! Strike! He's out of there." The secret message was encoded in the choices of phrases. "He's out of there" meant something different from "He pops it up to Orville Baskethands." The program enabled information to mutate into other forms, just like the shapeshifting monsters from The X-Files. I sent out an announcement to the influential newsgroup comp.risks and soon hundreds of people were asking for free copies of the software.
I created this program because Senator Joe Biden introduced a bill into the Senate that would require the manufacturers of all computer networks to provide a way for the police to get copies of any message. The Federal Bureau of Investigation, among others, was afraid that they would have trouble obtaining evidence if people were able to encode data. My software illustrated how hard it would be to stop the flow of information.
The best, and perhaps most surprising, part of the whole bloom of email came when a fellow I had never met, D. Jason Penney, converted the program from the fading Pascal into the more popular C. He did this on his own and sent the new, converted software back to me. When I asked him whether I could distribute his version, he said that it was my program. He was just helping out.
I never thought much more about that project until I started to write this book. While two or three people a month would write asking for copies of the software, it never turned into more than a bit of research into the foundations of secret codes and a bit of a mathematical parlor trick. It was more an academic exercise than a prototype of something that could rival Microsoft and make me rich.
In the past, I thought the project never developed into more than a cute toy because there was no market for it. The product wasn't readily useful for businesses, and no one starts a company without the hope that millions of folks desperately need a product. Projects needed programmers and programmers cost money. I just assumed that other free software projects would fall into the same chasm of lack of funding.
Now, after investigating the free software world, I am convinced that my project was a small success. Penney's contribution was not just a strange aberration but a relatively common event on the Internet. People are quite willing to take a piece of software that interests them, modify it to suit their needs, and then contribute it back to the world. Sure, most people only have a few hours a week to work on such projects, but they add up. Penney's work made my software easier to use for many C programmers, thus spreading it further.
In fact, I may have been subconsciously belittling the project. It took only three or four days of my time and a bit more of Penney's, but it was a complete version of a powerful encryption system that worked well. Yes, there was no money flowing, but that may have made it more of a success. Penney probably wouldn't have given me his C version if he knew I was going to sell it. He probably would have demanded a share. Lawyers would have gotten involved. The whole project would have been gummed up with contracts, release dates, distribution licenses, and other hassles that just weren't worth it for a neat way to hide messages. Sure, money is good, but money also brings hassles.
In the 1980s and 1990s, programmers in universities still shared heavily with the world. The notion of sharing source code with the world owes a great deal to the academic tradition of publishing results so others can read them, think about them, critique them, and ultimately extend them. Many of the government granting agencies like the National Science Foundation and the Defense Advanced Research Projects Agency fostered this sharing by explicitly requiring that people with grants release the source code to the world with no restrictions. Much of the Internet was created by people who gave out these kinds of contracts and insisted upon shared standards that weren't proprietary. This tradition has fallen on harder times as universities became more obsessed with the profits associated with patents and contract research, but the idea is so powerful that it's hard to displace.
The free software movement in particular owes a great deal to the Massachusetts Institute of Technology. Richard Stallman, the man who is credited with starting the movement, began working in MIT's computer labs in the 1970s. He gets credit for sparking the revolution because he wrote the GNU Manifesto in 1984. The document spelled out why it's essential to share the source code to a program with others. Stallman took the matter to heart because he also practiced what he wrote about and contributed several great programs, including a text editor with thousands of features.
Of course, Stallman doesn't take credit for coming up with the idea of sharing source code. He remembers his early years at MIT quite fondly and speaks of how people would share their source code and software without restrictions. The computers were new, complicated, and temperamental. Cooperation was the only way that anyone could accomplish anything. That's why IBM shared the source code to the operating systems on their mainframes though the early part of the 1960s.
This tradition started to fade by the early 1980s as the microcomputer revolution began. Companies realized that most people just wanted software that worked. They didn't need the source code and all the instructions that only programmers could read. So companies quickly learned that they could keep the source code to themselves and keep their customers relatively happy while locking out competitors. They were kings who built a wall to keep out the intruders.
The GNU Manifesto emerged as the most radical reaction to the trend toward locking up the source code. While many people looked at the GNU Manifesto with confusion, others became partial converts. They began donating code that they had written. Some tossed random utility programs into the soup, some offered games, and some sent in sophisticated packages that ran printers, networks, or even networks of printers. A few even became complete disciples and started writing code full-time for the GNU project. This growth was largely ignored by the world, which became entranced with the growth of Microsoft. More and more programmers, however, were spending more time mingling with the GNU project, and it was taking hold.
In the early 1980s, an operating system known as UNIX had grown to be very popular in universities and laboratories. AT&T designed and built it at Bell Labs throughout the 1970s. In the beginning, the company shared the source code with researchers and computer scientists in universities, in part because the company was a monopoly that was only allowed to sell telephone service. UNIX was just an experiment that the company started to help run the next generation of telephone switches, which were already turning into specialized computers.
In the beginning, the project was just an academic exercise, but all of the research and sharing helped create a nice operating system with a wide audience. UNIX turned out to be pretty good. When the phone company started splitting up in 1984, the folks at AT&T wondered how they could turn a profit from what was a substantial investment in time and money. They started by asking people who used UNIX at the universities to sign non-disclosure agreements.
Stallman looked at this as mind control and the death of a great tradition. Many others at the universities were more pragmatic. AT&T had given plenty of money and resources to the university. Wasn't it fair for the university to give something back?
Stallman looked at this a bit differently. Yes, AT&T was being nice when they gave grants to the university, but weren't masters always kind when they gave bowls of gruel to their slaves? The binary version AT&T started distributing to the world was just gruel for Stallman. The high priests and lucky few got to read the source code. They got to eat the steak and lobster spread. Stallman saw this central, controlling, corporate force as the enemy, and he began naming his work GNU, which was a recursive acronym that stood for "GNU's Not UNIX." The GNU project aimed to produce a complete working operating system that was going to do everything that UNIX did for none of the moral, emotional, or ethical cost. Users would be able to read the source code to Stallman's OS and modify it without signing a tough non-disclosure agreement drafted by teams of lawyers. They would be able to play with their software in complete freedom. Stallman notes that he never aimed to produce an operating system that didn't cost anything. The world may be entranced with the notion of a price tag of zero, but for Stallman, that was just a side effect of the unrestricted sharing.
Creating a stand-alone system that would do everything with free software was his dream, but it was a long way from fruition, and Stallman was smart enough to start off with a manageable project. He began by producing a text editor known as GNU Emacs. The program was a big hit because it was highly customizable. Some people just used the program to edit papers, but others programmed it to accomplish fancier tasks such as reading their e-mail and generating automatic responses. One programmer was told by management that he had to include plenty of comments in his source code, so he programmed GNU Emacs to insert them automatically. One professor created a version of GNU Emacs that would automatically insert random praise into requests to his secretary. 2 Practically everything in Emacs could be changed or customized. If you didn't like hitting the delete key to fix a mistyped character, then you could arrange for the 6 key to do the same thing. This might make it hard to type numbers, but the user was free to mess up his life as much as he wanted.
It took Microsoft years to catch up with Stallman's solution, and even then they implemented it in a dangerous way. They let people create little custom programs for modifying documents, but they forgot to prevent malicious code from crying havoc. Today, Microsoft Word allows little programs named macro viruses to roam around the planet. Open up a Word document, and a virus might be lurking.
In the 1980s, the free software world devoted itself to projects like this. GNU Emacs became a big hit in the academic world where system administrators could install it for free and not worry about counting students or negotiating licenses. Also, smart minds were better able to appreciate the cool flexibility Stallman had engineered into the system. Clever folks wasted time by adding filters to the text editor that would scan their text and translate it into, like, Valley Girl talk or more urban jive.
The GNU project grew by accepting contributions from many folks across the country. Some were fairly sophisticated, eye-catching programs like GNU Chess, a program that was quite competitive and as good as all but the best packages. Most were simple tools for handling many of the day-to-day chores for running a computer system. System administrators, students, and programmers from around the country would often take on small jobs because they felt compelled to fix something. When they were done, a few would kick the source code over to the GNU project.
Stallman's biggest programming project for GNU during the 1980s was writing the GNU C compiler (GCC). This program was an important tool that converted the C source code written by humans into the machine code understood by computers. The GCC package was an important cornerstone for the GNU project in several ways. First, it was one of the best compilers around. Second, it could easily move from machine to machine. Stallman personally ported it to several different big platforms like Intel's x86 line of processors. Third, the package was free, which in the case of GNU software meant that anyone was free to use and modify the software.
The GCC provided an important harmonizing effect to the GNU project. Someone could write his program on a machine built by Digital, compile it with GCC, and be fairly certain that it would run on all other machines with GCC. That allowed the GNU software to migrate freely throughout the world, from machine to machine, from Sun to Apollo to DEC to Intel.
The GCC's license also attracted many developers and curious engineers. Anyone could use the source code for their projects, and many did. Over time, the compiler moved from machine to machine as users converted it. Sometimes a chip company engineer would rework the compiler to make it work on a new chip. Sometimes a user would do it for a project. Sometimes a student would do it when insomnia struck. Somehow, it moved from machine to machine, and it carried all of the other GNU software with it.
The next great leap forward came in the early 1990s as people began to realize that a completely free operating system was a serious possibility. Stallman had always dreamed of replacing UNIX with something that was just as good and accompanied by the source code, but it was a large task. It was the reason he started the GNU project. Slowly but surely, the GNU project was assembling the parts to make it work. There were hundreds of small utilities and bigger tools donated to the GNU project, and those little bits were starting to add up.
The free software movement also owes a great deal to Berkeley, or more precisely to a small group in the Department of Computer Science at the University of California at Berkeley. The group of hardcore hackers, which included professors, research associates, graduate students, and a few undergraduates, had developed a version of UNIX known as BSD (Berkeley Software Distribution). AT&T shared their version of UNIX with Berkeley, and the programmers at Berkeley fixed, extended, and enhanced the software. These extensions formed the core of BSD. Their work was part experimental and part practical, but the results were widely embraced. Sun Microsystems, one of Silicon Valley's UNIX workstation companies, used a version on its machines through the early 1990s when they created a new version known as Solaris by folding in some of AT&T's System V. Many feel that BSD and its approach remain the foundation of the OS.
The big problem was that the team built their version on top of source code from AT&T. The folks at Berkeley and their hundreds, if not thousands, of friends, colleagues, and students who contributed to the project gave their source code away, but AT&T did not. This gave AT&T control over anyone who wanted to use BSD, and the company was far from ready to join the free software movement. Millions of dollars were spent on the research developing UNIX. The company wanted to make some money back.
The team at Berkeley fought back, and Keith Bostic, one of the core team, began organizing people together to write the source code that could replace these bits. By the beginning of the 1990s, he had cajoled enough of his friends to accomplish it. In June 1991, the group produced "Networking Release 2," a version that included almost all of a complete working version of UNIX. All you needed to do was add six files to have a complete operating system.
AT&T was not happy. It had created a separate division known as the UNIX Systems Laboratory and wanted to make a profit. Free source code from Berkeley was tough competition. So the UNIX Systems Laboratory sued.
This lawsuit marked the end of universities' preeminent role in the development of free software. Suddenly, the lawsuit focused everyone's attention and made them realize that taking money from corporations came into conflict with sharing software source code. Richard Stallman left MIT in 1984 when he understood that a university's need for money would eventually trump his belief in total sharing of source code. Stallman was just a staff member who kept the computers running. He wasn't a tenured professor who could officially do anything. So he started the Free Software Foundation and never looked back. MIT helped him at the beginning by loaning him space, but it was clear that the relationship was near the end. Universities needed money to function. Professors at many institutions had quotas specifying how much grant money they needed to raise. Stallman wasn't bringing in cash by giving away his software.
Meanwhile, on the other coast, the lawsuit tied up Berkeley and the BSD project for several years, and the project lost valuable energy and time by devoting them to the legal fight. In the meantime, several other completely free software projects started springing up around the globe. These began in basements and depended on machines that the programmer owned. One of these projects was started by Linus Torvalds and would eventually grow to become Linux, the unstoppable engine of hype and glory. He didn't have the money of the Berkeley computer science department, and he didn't have the latest machines that corporations gave them. But he had freedom and the pile of source code that came from unaffiliated, free projects like GNU that refused to compromise and cut intellectual corners. Although Torvalds might not have realized it at the time, freedom turned out to be most valuable of all.
2. "Where are those reports I asked you to copy? You're doing a great job. Thanks for all the help," on one day. "Are you ever going to copy those reports? You're doing a great job. Thanks for all the help," on the next.
Eric von Hippel
Erik S. Raymond