The MIT Artificial Intelligence Lab was in the 1960s and 1970s a major center for development of software. At this time when the hacker culture at the lab flourished, a undergraduate student named Richard Stallman started to work in 1970. He got a part time job at the lab, while at the same time he was studying mathematics at Harvard. Stallman did excellent achievements in his mathematics studies, and as a spare time activity he sought out computer labs asking for manuals and executing trial programs he made. This activity lead him to MIT.
The culture at MIT was stark contrast to the culture at Harvard. At Harvard access to computer terminals was given according to academic rank, and undergraduate students like Stallman often had to wait until midnight to get access to a terminal. At the same time terminals were sitting idle, locked inside professors offices. At the MIT AI lab they had a “first come, first served” policy. This policy owed much to a tightly knit group calling themselves “hackers”. The hackers spoke openly about changing the world through software, and viewed with disdain any obstacle that prevented them from fulfilling this noble goal. Chief among these obstacles were poor software, academic bureaucracy, and selfish behavior. This group of people even broke into professors offices to “liberate” locket in terminals (Williams 2002). This group of people, belonging to the ITS/PDP-10 strain of hackerdom, would have a profound impact on Stallman.
During the first decade Stallman was working at the AI lab the hacker culture had a strong standing. It was perfectly normal to share the source code of your work. As Stallman describes it:
We did not call our software “free software” because that term did not exist yet, but that what it was. 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.
Nearing the 80s things started to change as software increasingly became commercially interesting. Companies wanting to profit on software started to require programmers to sign None Disclosure Agreements (NDA). This prevented the programmer from sharing the code with others. Stallman experienced this when the AI lab got a new printer from Xerox. Because the printer suffered from paper jams Stallman wanted to change the code driving the printer. He wanted to make the printer send a message to everybody in the printing queue that a paper jam had occurred, so that it could be fixed. When he asked a professor at Carnegie Mellon, who previously had been working on the code for the Xerox printer, if he could get the source code Stallman where refused. This infuriated Stallman.
During the first years of the 80s a lot of things would happen to the hacker culture at the AI lab, so much that Stallman felt his “home”, the hacker culture he strongly identified with, was threatened. A lot of hackers at the lab were hired away to a start-up company named Symbolics. This company’s software was based on free software, but they would not share their improvements of the software. DEC also discontinued it’s PDP-10 line of computers. ITS where written in PDP-10 assembler, therefore ITS became obsolete. Because so many of the AI lab’s hackers were hired away, porting ITS was not an option.
All the controversy around the AI lab hackers being hired away, lead Stallman to believe his commune was gone. Not being able to get the source code for the Xerox printer Stallman had considered only a practical nuisance, but now he stared to believe that this was a moral issue. The right to share and modify a program was a question of freedom and a question of being a good neighbor. This he would later express in the following four freedoms:
It is worth pointing out that free do not mean “no price”, this freedoms do not prevent anybody from selling copies.
In January 1984 he left his job at MIT to start the GNU project. GNU is a recursive acronym meaning GNU’s Not Unix. He reasoned that in order to promote free software a free operating system had to be made. As he puts it (Stallman 1999):
With an operating system, you can do many things; without one, you cannot run the computer at all. With a free operating system, we could again have a community of cooperating hackers – and invite anyone to join. And anyone would be able to use a computer without starting out by conspiring to deprive his or her friends.
An operating system consist of many parts, a kernel, system libraries, a shell and tools. The operating system also needed to be made in a higher level language to make it portable.
After searching for some time after a free C compiler without much success he started on GNU Emacs. Emacs was an editor originally developed by Stallman and many other hackers at the AI lab. Emacs had forked in many different version, not all where free. Stallman initially started to borrow code from GOSMACS, a Lisp based Emacs. Lisp is a language originally developed at the AI Lab to assist in AI research, and became a favored language at the lab. The author of GOSMACS had sold the copyright to a company named UniPress. When UniPress threatened to enforce the copyright, Stallman decided to reverse engineer GOSMACS. In early 1985 GNU Emacs was beginning to become usable. Now the GNU project had some code to show, and request for GNU Emacs started to come inn. Stallman and a few colleagues started Free Software Foundation (FSF) to take care of the business side of the GNU Project shortly after the release of GNU Emacs. GNU Emacs is still very much alive to day, in fact I write my thesis using this editor.
The name Emacs is short for “editing macros”. Emacs originates from TECO, TECO is short for “Text Editor and COrrector”. TECO was cumbersome editor to use. You edited a document by typing series of editing instructions, making TECO a cross between an editor and a programming language. In the late seventies Stallman revised a feature in TECO called Control-R which switched TECO into a keystroke-by-keystroke mode (when you typed a G a G would be inserted into the buffer. Stallman revision made TECO execute a number of instructions stored in a file, a macro, when a two key combination was typed. The user could now make two key combinations execute some useful instructions of he’s own choosing. This feature inspired an explosion of innovation. After a couple of years the number of macros had become a problem, sitting down at an other user’s terminal it could take an hour to understand what the other user’s macros did. Guy Steele took it upon himself to solve this problem. Stallman and Steele started an effort of standardisation. This collection of macros was named Emacs.
The Copyright Act made in the U.S. in 1976 extended copyright to software programs. Companies and individuals could now copyright the “expression” of a software program but not the “actual processes or methods embodied in the program.” Stallman initially viewed this development with alarm, but proponents of copyright argued that (Williams 2002):
Using copyright as a flexible form of license, an author could give away certain rights in exchange for certain forms of behavior on the part of the user. For example, an author could give away the right to suppress unauthorized copies just so long as the end user agreed not to create a commercial offshoot.
This argument softened Stallman’s resistance to copyright. The copyright law could be seen as just another system waiting to be hacked. This eventually lead to the creation of the GNU General Public License (GPL). This license is designed to uphold the four freedoms previously mentioned. The license permit you to run, distribute, modify and distribute the modification as long as the modified version is also licensed under GPL. Seeing a sticker with the message “Copyleft (L), All Rights Reversed” he decided to call this scheme copyleft using a backward C as a symbol. The GPL is considered Stallman’s most important hack.
A lot of widely used and recognised software have been developed by the GNU project. The most important are the GNU Compiler Collection (GCC), formerly named GNU C Compiler, GNU Emacs, GNU Debugger (GDB) and a lot of other Unix tools. A lot of effort by GNU developers went into maintaining and implementing new features into this successful tools. By the early 90s GNU still lacked the most important piece of an operating system, the kernel. Stallman had been looking for a existing kernel to modify. The decision landed on using the Mach micro kernel. The kernel, named Hurd, should be implemented at a set of kernel server for the Mach micro kernel. This work would not commence until 1990, but this would take a long time to do, giving an opening to another kernel which we will see in the next section. In fact to day in 2006 there is still not a stable release of Hurd, but it exist.