On the Early History and Impact of Unix
Tools to Build the Tools for a New Millenium
by Ronda Hauben
rh120@columbia.edu
(Part 3 of 5)

Open Source Code and the Early Development of Unix

Since the Unix programming environment was used by the researchers themselves, they came to learn its weaknesses and problems and were encouraged to make needed improvements. Contributing to the value of Unix during its early development, was the fact that the source code was open and available. It could be examined, improved, and customized. In an article "Can UNIX Survive Secret Source Code?", Mike Lesk, then a Bell Labs researcher, observes how only when computer source code is open and can be modified, will it be developed and vibrant. He gives the example of COMIT, the string processing language. At one point, its owners decided there would no longer be any modifications in the code, and so only distributed it in binary form. "You haven't heard of COMIT since," he notes. He describes how the same fate befell TRAC, a language close to FORTH. "Software is more attractive to hackers," Lesk maintains, "if it can be changed. As more and more UNIX suppliers restrict access to source code, fewer and fewer advanced research shops will be attracted to UNIX."(59)

Commenting on the importance of open source code in the early years of Unix development at Bell Labs, Thompson and Ritchie write, "Because all source programs were always available and easily modified on-line we were willing to revise and rewrite the system and its software when new ideas were invented, discovered, or suggested by others."(60)

Not only was the source code open and available to the Bell Labs researchers developing the system, but the Labs also made the sources available on tape at the request of academic colleagues. Robert Fabry of the University of California at Berkeley was able to get a tape of Version 4 Unix and that began the long and important role played by faculty and students at the University of California at Berkeley in the development of Unix.(61)

Source code tapes were made available to interested researchers in the academic and computer science community for a nominal fee. For example, when John Lions, a Professor of Computer Science at the University of New South Wales in Australia read a paper published by Thompson and Ritchie in mid 1974, he wrote them for a copy of the Unix tape. After signing a license agreement with the Labs, and a token payment of $110 Australian ($150 U.S.), the Unix Edition 5 tape and manuals arrived, "as a late Christmas present," in December, 1974, remembers John Lions.(62)

While Bell Labs made the tape and manuals available, they did so with no support. Berkley Tague explains the release was "`caveat emptor' - i.e. dollars on the table up front and no support promised."

Henry Spencer, a Unix pioneer from the University of Toronto in Canada, and one of the programmers of C News, describes how early users of Unix in the academic community had to provide their own support. He explains:

"It was very common at the time. This was in the days when UNIX was still treated by the Bell System as, `Oh, just something we happen to do for our own internal use. You can have a copy if you want, but if you got problems, don't bother us.' And the result was if you wanted UNIX support you did it yourself or it didn't happen."(63)

Lions agrees, "We needed help," he notes, "but we couldn't get any from outside sources so we ended up generating our own expertise."(64) Not only did those working on Unix implementation at the University of New South Wales have access to the code, but Lions explains how Ian Johnstone, the tutor working with him in his Operating Systems class, suggested making some of the code for the Unix kernel available to the students in his class. "I think it was in 1975," remembers Lions, that Ian Johnstone asked, "`Why don't we run off a few of the source files for the kernel and ask the students to take a look at them? Then we can ask them some questions; maybe it will be interesting'."(65) Lions took Johnstone's suggestion and made some of the Unix source code available to his class, but his students complained. They felt they needed to see the source code for the whole kernel in order to make sense out of any part.

Taking their suggestion, Lions decided to make a large part of the source code available to his class. "The following year," he recounts, "I prepared a booklet containing the source files for a version of Edition 6 UNIX that could then run on a PDP-11/40 system." Lions followed the book of source code with a book of "explanatory notes that was intended to introduce students to the code."(66) Lions explains that working on his book, "`A Commentary on the UNIX Operating System' was a real learning experience. By slowly and methodically surveying the whole kernel he notes, "I came to understand things that others had overlooked."(67)

When he read the manual and wasn't quite certain about his interpretation, Lions would read the code. Through this process, he was able to determine that the manual was "really quite accurate in its description of what a program actually does. In the Thompson/Ritchie era," he observes, "words were carefully chosen."(68) Lions writes, "In our opinion, it is highly beneficial for students to have the opportunity to study a working operating system in all its aspects."(69)

"Moreover," he adds, "it is undoubtedly good for students majoring in computer science to be confronted at least once in their careers with the task of reading and understanding a program of major dimensions."(70) Lions found that, "On the whole the authors of UNIX, Ken Thompson and Dennis Ritchie, have created a program of great strength, integrity and effectiveness," which he urged his students to "admire and seek to emulate."(71) Not only did students in Lions' class read and study the Unix source code and Lions' Commentary on the source code, but Lions describes how he sent more than 200 copies of his book to Bell Laboratories. Eventually, the Labs took over distribution of the book.

Tague relates how Lions' book of commentary and the Unix source code were used at AT&T "as part of the documentation package for those who wanted to understand or modify the UNIX(r) source code that the USG [Unix Support Group] shipped."(72) Even after Unix V6 had been replaced by Unix V7, Tague explains that Lions' Commentary continued to be useful as an introduction to Unix. Tague writes:

"It outlined the conceptual architecture, very clearly in the short form of the system before it had accreted all the minor changes and feature additions that disguised the original clarity of its structure. All new people were given a copy when they joined the USG. And I suspect most development groups did the same."(73)

Pioneers like Henry Spencer describe how important it was to those in the Unix community to have the source code. He notes how having the sources made it possible to identify and fix the bugs that they discovered, "There is something the UNIX community has always been fairly strong on," he explained during an interview, "admitting things you know don't work about the software." Even in the late 1970's and early 1980's, remembers Spencer, "practically every UNIX site had complete sources."(74)

One of the early functions of Usenet, the early online community of Unix systems begun in 1979, according to Spencer, was to provide cooperative software support for the Unix community. He elaborates:

Well, for one thing, Usenet predated a lot of company bbs's and the like. It was basically a cheap way to hear about things fast and this was at a time when practically every UNIX site had complete sources and so a bug report often came with a fix. It was a way of finding out what people had discovered and what fixes they'd worked out for it. Quickly and easily. And for that matter, if you ran into something that you couldn't solve yourself, putting out an inquiry to a bunch of fairly bright people who were fairly familiar with the code, often got a response, `O Yeah. We solved that one' or `You're right. There's a bug. Here's how to fix it' or sympathy even if no one had a fix for it."(75)

Another Unix pioneer, Dick Haight, corroborates the important role open source code played for those in the Unix community:

"That by the way, was one of the great things about UNIX in the early days: people actually shared each other's stuff. It's too bad that so many sites now have purposefully turned off the read privileges in order to keep their ideas from being stolen. Not only did we learn a lot in the old days from sharing material, but we also never had to worry about how things really worked because we always could go read the source. That's still the only thing that matters when the going gets tough."(76)

Unix was continually used and improved by its creators. A growing community of programmers, system administrators, and users, both at Bell Labs and at academic and research sites outside the Labs, also used, developed and debugged the code. The fact that the source code was open and available made this possible. The result was the creation of Unix as a powerful and flexible programming environment.

Though Unix was primarily designed to "help build research software," Bell Labs software developers soon found that, "what worked well in the programming laboratory also worked well on modest projects to develop minicomputer-based systems in support of telephone company operations."(77)

(to be continued)