A History of the GNU Software Project and the Free Software Foundation





Table of Contents

Chapter 1: Introduction and Rationale
Chapter 2: Background
Chapter 3: Something GNU
Chapter 4: GNU Matures
Chapter 5: Linux and GNU
Chapter 6: Conclusions and Recommendations for Future Study
Appendix A: Initial Announcement of the GNU Project
Appendix B: The GNU General Public License (GPL)




Chapter 1:
Introduction and Rationale

Introduction and Rationale

We live in a computerized world. Every day, hundreds of computers touch our lives, from the digital wristwatches that tell us the time to the mainframes that tell us the value of a dollar. No matter who you are, your life is affected by computers.

The use of computers has been a rather recent development in the history of humanity. Nearly all of computer technology was created in the past 50 years. Historians have barely begun to record this period of recent history. What little there is records the development of computer hardware, the actual devices that we call computers. Computer software has been neglected thus far.

This is odd, since computer software directly affects consumers of the technology much more than hardware. Its development has been at least as rapid and dramatic as that of its physical counterpart. The two share a time period for the most part; for as long as there have been computers there has been software to run them.

This paper seeks to document the origin and development of a major software project. Besides producing programs, however, this project produced an entire new methodology for their production. Both aspects of the project and their ramifications in the computer world will be covered. This software project is called GNU.

The GNU project has in the past, and continues in the present, to change the way people think about software. It is a project that promises to continue advancing software technology into the future, as well as influencing all other producers of software. Because of its significance to the field of computer science, the GNU project is an appropriate subject for this historical study.





Chapter 2:
Background

This story begins at the Massachusetts Institute of Technology (MIT), in the Artificial Intelligence (AI) Lab. This Lab, formed by Marvin Minsky and John McCarty in 1959, has been, and continues to be, on the forefront of technology. The Lab was one of the first major user of computer systems, and was staffed by some of the brightest graduate and undergraduate students of MIT, as well as professors.

In the 60's, the primary computers used by the Lab were Digital PDP-10's (Programmed Data Processor model 10). The staff of the Lab had created their own operating system for this computer, called the Incompatible Time-sharing System (ITS). This operating system was written entirely in the assembler language for the PDP-10, meaning that the operating system could not be used on any other computers.

The ITS source code was available to anyone who cared to have it. Computer science was new, the setting was academic, and there was no economic advantage in keeping the source code private. So it was shared freely, and developed further by anyone who wanted to help out.

This is the setting in which Richard M. Stallman found himself when he started working at the Lab in 1971. On the subject of the procedure of sharing software and the associated source code, he explained, "Whenever people from another university or a company wanted to port and use a program, we gladly let them. If you saw someone using an unfamiliar and interesting program, you could always ask to see the source code, so that you could read it, change it, or cannibalize parts of it to make a new program." (Stallman 53) This practice made for the quick collaborative development of software for the Lab.

Bad times beset the Lab in 1981 when a company spun off from the Lab, taking with it many of the staff members. Newer PDP-10's were different from the originals in some respects, enough to make many of the ITS programs obsolete. Without much of the staff, it was impractical to develop all new software for the new PDP-10 the Lab acquired in 1982. The administration decided to use Digital's timesharing system, removing ITS from circulation.

Digital's operating system was proprietary. Source code was not given to users of the system. The hackers at the AI Lab could no longer work freely to develop their operating system. Richard Stallman, as well as others, took this as a bad thing.

In his eyes, the proprietary system was unacceptable. It removed all control from the users, and gave it all to the manufacturer. In the past, if someone needed an improvement, feature, or bug fix for a program, they could do something about it themself, or have someone else help them. Now, if a user needed these things their only recourse was to make a request of the manufacturer. Manufacturers were concerned about making money. Fixes and improvements to their products were infrequent, and when they were released, it was usually as a new version, which was usually an additional fee to acquire.

Aside from technical issues, however, Stallman opposed the social results of the proprietary system. It separated users and discouraged the sharing of software. His saw software not as a physical product, like a car that is owned and used by one person, but as the dialog of the community of users, owned by no single entity. Without access to the source code, the communication of the community was disrupted.

Today, most software that end users see is proprietary. Whatever the reason, this has caused a large population of users to develop some assumptions about the nature of software. Stallman treats these assumptions well. (Stallman 54)

One assumption is that software companies have an unquestionable natural right to own software and thus have power over all its users. (If this were a natural right, then no matter how much harm it does to the public, we could not object.) Interestingly, the U.S. Constitution and legal tradition reject this view; copyright is not a natural right, but an artificial government-imposed monopoly that limits the users' natural right to copy.

Another unstated assumption is that the only important thing about software is what jobs it allows you to do -- that we computer users should not care what kind of society we are allowed to have.

A third assumption is that we would have no usable software (or would never have a program to do this or that particular job) if we did not offer a company power over the users of the program. This assumption may have seemed plausible, before the free software movement demonstrated that we can make plenty of useful software without putting chains on it.

Here Stallman alludes to the future, when he would follow the thinking described here to its natural conclusion. That conclusion is that software should be free. Not necessarily free in cost, but free of restrictions on use, source code, and redistribution. An often used expression is "Free as in speech, not as in beer." Perhaps Stallman was more eloquent when he said "Computer users should be free to modify programs to fit their needs, and free to share software, because helping other people is the basis of society." (54)





Chapter 3:
Something GNU

Richard Stallman made the difficult decision that rather than sell out to the big companies selling proprietary software, he would start an initiative to create free software, entirely from scratch, that could replace proprietary products. The first conceptual goal was to create a free operating system on which to run free software. The name of the current standard in operating systems, and probably one of the best and most used, was Unix. So Stallman decided that his operating system would be like Unix. Because Unix was a trademark, and because hackers have an occasionally strange sense of humor, Stallman named the project GNU, a recursive acronym for GNU's Not Unix.

On Tuesday, the 27th day of September in 1983, Richard Stallman posted a message to a forum on the fledgling Internet about his new project. This document explained the project at its outset and invited anyone who wanted to join in. The document is included in this paper as The Original GNU AnnouncementAppendix A.

The development of the GNU project did not exactly follow the original plan in the initial announcement. Stallman delayed beginning the project actively until the beginning of 1984. He quit working at the Lab and began working full time on the project. The MIT AI Lab, however, was graceful enough to invite him to continue using the Lab's facilities.

The first program in the queue was a compiler that would allow for subsequent programs to be developed using a free tool set. After working to adapt an existing compiler, Stallman found that it would not be adequate. He determined that he would have to write an entirely new compiler. Somewhat discouraged, he turned from the compiler to another important component program, a text editor.

This text editor is called GNU Emacs. It is based on a version for the PDP-10, and is still in use today, currently at version 21. The author used GNU Emacs to compose this document. By 1985, Emacs was good enough that people wanted to use it. This raised some important issues.

Before this time, Stallman had not been clear on the meaning of "free" in "free software." He had to clarify the price/speech issue, as he did not have a job needed to eat. So he decided that, even while people could access Emacs via the Internet, for $150 he would send the program on a tape to anyone who wanted it. People who bought the program were still free to make copies and distribute them however they pleased. Especially because the Internet was not yet widespread, this business model was relatively successful.

Successful or otherwise, this method of distribution was new and different. Stallman soon realized that his strategy needed legal backing if it was to accomplish its intended goal of freedom for users. Other "free" software of the time allowed not only for the free distribution of software, but for people to make changes to the software and make their version proprietary. This would rob the community of any freedom the GNU project could give them. So the GNU General Public License (GPL) was developed and attached to all software the GNU project generated.

The GNU GPL gave users many rights. These include the right to run the program for any purpose, the right to customize or improve the program through access to the source code, the right to redistribute copies gratis or for a fee, and the right to do the same with any modified versions of the program. The license also requires that any modified versions include the full modified source code, and that any work based upon a work under the GPL be licensed under the GPL as well. In this way, when a programmer gives users freedom by using the GPL, no one can take that freedom away down the road.

The GNU project was well on its way. Challenges and successes were on the horizon, and the GNU project would have to adapt. But the ball was rolling, with people joining the project and reveling in their freedom.





Chapter 4:
GNU Matures

Later in 1985, Stallman and the forming GNU team were in need of funding. They formed the Free Software Foundation (FSF). The FSF is a tax-exempt charity for free software development, an umbrella organization for the GNU project. They took over the business of selling copies of GNU software and therefore helping to support the people who worked on GNU. GNU software development continued at a steady pace.

In June of 1987, Richard Stallman released version 1.0 of the GNU C Compiler (GCC). This was the compiler that he had set out to create originally. It would prove the strength of the GPL and the development model it suggested. When GCC 1.0 was released, Michael Tiemann was waiting for it.

Even at 1.0, the GNU compiler was already faster than proprietary compilers. Tiemann said himself that in 1989, "GCC, GDB, and Emacs were so profoundly better than the proprietary alternatives, I could not help but think about how much money (not to mention economic benefit) there would be in replacing proprietary technology with technology that was not only better, but getting better faster." (Tiemann 73) The apparent problem for a business was the GPL, which allowed anyone to redistribute software however they wanted.

Michael Tiemann did not see this as a drawback. It simply meant that instead of being purely product-based, his business would be service-based. He envisioned his company as not just providing the software, but making sure the software did what the customer needed it to do. The GPL allowed any business that wanted to to do this. Cygnus Solutions had the advantage of being the first to see this opportunity.

Officially founded November 13, 1989 as "Cygnus Support," "Cygnus Solutions was the first, and according to a survey by Forbes magazine in August 1998, is by far the largest Open Source business today." (Tiemann 71) Cygnus, far from merely piggy-backing on the work of the GNU project, have become primary developers of this software. Their primary product, the GNUPro Developers Kit leads the market for embedded systems. Any because of the GPL, it is available to everyone for free on the Internet.

Cygnus differs from the GNU project in their reasoning and understanding of the development method that they use. While Stallman maintains that "free software" is good because of ethical reasons, Cygnus says that "open-source software" is good because of technical superiority alone. Free and open-source are fundamentally the same, releasing the source code and giving rights to the users. With either terminology, software is developed efficiently and users are free.

Cygnus survived, developed GCC to the point that it is now the industry standard for C language compilers, and is still successful today. Away from Cygnus, work continued on the rest of the GNU system. By now, the Free Software Foundation employed several people who worked on the GNU project.

Roland McGrath developed the GNU C Library, an important part of a programming environment. Brian Fox wrote the Bourne Again Shell (BASH), the most common environment for interacting with a computer. "By 1990, the GNU System was almost complete; the only major missing component was the kernel." (Stallman 64)

The kernel is an essential part of any operating system. The GNU team had decided to implement a micro-kernel. Micro-kernels are more advanced than monolithic kernels, promising better performance and features. They are also much more difficult to create. A team of GNU developers works on the GNU HURD to this day. So far, this kernel is usable. But another kernel appeared on the scene earlier, and has propelled the GNU project into a complete system. This kernel is called Linux.





Chapter 5:
Linux and GNU

Without a kernel, a totally free operating system was incomplete. Development of the HURD was slow at best. Then, incredibly suddenly, Linux appeared. Created by Linus Torvalds, this kernel has made running a totally free operating system possible. In 1991, Torvalds began wrote a kernel for his 386. He did not intend for it to become a high quality finished product. To him it was a hobby and a way to learn about the 386 CPU.

Torvalds posted information about his kernel to an Internet forum, and interest grew in his little project. Soon he was releasing development versions on the internet, licensed under the GNU GPL. People around the world started contributing to the project.

Before long, over a thousand people were actively working on Linux. This was different from the development model used by the GNU project, in which a small group of people worked on software projects. Eric S. Raymond wrote about this in his essay "The Cathedral and the Bazaar."

Linux overturned much of what I though I knew. I had been preaching the Unix gospel of small tools, rapid prototyping and evolutionary programming for years. But I also believed there was a certain critical complexity abouve which a more centralized, a priori approach was required. I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time.

Linus Torvalds's style of development -- release early and often, delegate everything you can, be open to the point of promiscuity -- came as a surprise. No quiet, reverent cathedral-building here -- rather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches (aptly symbolized by the Linux archive sites, which would take submissions from anyone) out of which a coherent and stable system could seemingly emerge only by a succession of miracles.

The fact that this bazaar style seemed to work, and work well, came as a distinct shock. As I learned my way around, I worked hard not just at individual projects, but also at trying to understand why the Linux world not only didn't fly apart in confusion, but seemed to go from strength to strength at a speed barely imaginable to cathedral-builders. (29)

Torvalds has continued to hold together the development of Linux heroicly, and today it rivals commercial operating systems in technical quality. The technique of massive collaboration on software projects has proven its merit in Linux, but has not yet been implemented by the GNU project. Systems composed of the Linux kernel and GNU software are in use today. The author is using one now.

Systems made of GNU software and the Linux kernel are sometimes referred to simply as "Linux." Stallman prefers "GNU/Linux" to give credit to his organization. Many different companies have formed around GNU/Linux, producing complete "distributions" of the operating system that are ready to use right out of the box.

The GNU HURD continues to be developed, but continues rather slowly. The Linux kernel beat the GNU project to the punch, and the GNU project has lost some prestige because of it. But a totally free (as in freedom) operating system now exists for users.





Chapter 6:
Conclusions and Recommendations for Future Study

The development of the GNU project is far from over. The GNU HURD promises a more advanced kernel with higher performance and enhanced features. The other GNU software continues to be developed into even better versions. The GNU project has already brought a lot to computer science, and will continue to do so in the future.

The GNU/Linux operating system is not yet popular on desktop computers. Microsoft holds a monopoly on this market, because to many end users, user-friendliness and corporate backing are more important than technical quality and maintaining their freedom. This is sure to change as the U.S. Department of Justice deals with Microsoft as a monopoly, and GNU/Linux improves its user interface to the point at which all users are comfortable with using it. GNU/Linux has already gained significant market share in the server market because of its high reliability, speed, and server capabilities.

So in the future, there is sure to be much more to put down about the GNU project, the related Free Software Foundation, and both the GNU HURD and Linux. A detailed history of specific software projects, such as GNU Emacs, would also add to our body of knowledge. Biographies could also be written about the lives of important people such as Richard Stallman or Linus Torvalds. A lot of change has taken place in the computer industry in recent years, and it is important to not forget to remember the past, as we move into the future.

homework I have done