Chapter 6. 1979

In Chapter 3, UNIX V6, John Lions, and the ports of UNIX to the Interdata 7 and the Interdata 8 were mentioned. We're about to move on to V7. But first, a note about names and dates.

Names. By and large, Unix users refer to "Sixth Edition" and "V6" interchangeably. At Bell Labs, there was a continually changing version of Unix running. Only when Doug McIlroy caused the first "UNIX PROGRAMMER'S MANUAL" to be written, did there appear to be a fixed form. So, the manuals were listed by "Edition," and the system referred to was the "Version."

Dates. Every AT&T manual carried a date. This is the set.

  • First Edition - November 3, 1971

  • Second Edition - June 12, 1972

  • Third Edition - February 1973

  • Fourth Edition - November 1973

  • Fifth Edition - June 1974

  • Sixth Edition - May 1975

  • Seventh Edition - January 1979

  • Eighth Edition - February 1985

  • Ninth Edition - September 1986

  • Tenth Edition - October 1989

V7. The wonder of V6 was that it was under 10,000 lines of code. (But it had no full-screen editor, no windowing system, etc.) V7 was much larger. And it contained much more.

V7 accommodated large filesystems; it did not restrict the number of user accounts; it had improved reliability. Steve Johnson referred to V7 as "the first portable Unix. It also had a large number of new commands. Among these were:

COMMANDS: at, awk, calendar, cb, cd, cpio, cu, deroff, expr, f77, find, lex, lint, m4, make, refer, sed, tail, tar, touch, uucp, uux


SUBROUTINES: malloc, stdio, string

GAMES: backgammon

awk (=Aho-Weinberger-Kernighan; a pattern scanning and processing language; gawk [GNU AWK] is the most employed version), lint (Johnson, a C program verifier), make (Feldman, a utility to simplify the maintenance of other programs), and uucp (Lesk) would have been enough, but there was much more. The V7 manual had grown to over 400 pages, with two 400-page supplementary volumes. V7 contained a full Kernighan-Ritchie C compiler; a far more sophisticated shell (sh), the Bourne shell; Dick Haight's find, cpio and expr; and a large number of include files. Dated "January 1979," the title page of the Seventh Edition UNIX PROGRAMMER'S MANUAL bore neither Dennis' nor Ken's name. It was headed: UNIXTM TIME-SHARING SYSTEM.

Along with all this, V7 came with a major drawback: its performance was poorer than most V6 systems, especially those that had been "tuned." The users went to work.

Bill Joy (at Berkeley) changed the size of the data blocks on the VAX 11/780. (Jeff Schriebman ported that to the PDP-11/70 in April 1980, having gone to UniSoft from Berkeley.) In December 1979, Ed Gould moved the buffers out of kernel address space. Joy changed the stdio library on the VAX and Tom Ferrin (at UCSF) ported those changes to the PDP-11. Tom London (in Holmdel, NJ) improved the movement of output characters from user space to kernel space. John Lions (at UNSW in Australia) proposed a new procedure for directory pathnames. UNSW also provided new code for process table matches. Bruce Borden (at the RAND Corporation) provided the symorder program. Ferrin also rewrote parts of copyseg() and clearseg(). (The entire set of improvements was made available to the community on a PDP-11 distribution: 2.8.1BSD -- it was announced by Ferrin at the USENIX Conference in January 1982 in Santa Monica, CA.

The users had enhanced V7's performance dramatically.

But I've gone too far ahead.

USENIX. Ron Baecker of the University of Toronto hosted the USENIX Association meeting in Toronto, June 20-23. There were about 400 attendees.

Al Arms, an AT&T lawyer, announced the new licensing terms for V7. In addition to a fee schedule that increased the costs of the various licenses, the academic/research license no longer automatically permitted classroom use. As Greg Rose (who was one of John Lions' students at UNSW and is now with Qualcomm) told me:

It seems that in so many stages of Unix's evolution, an action that AT&T took in order to stifle something actually caused the opposite to happen.

Supressing Lions' commentary led to wholesale Xeroxing. Here it led to something truly unforeseen.

Andrew S. Tanenbaum of the Vrije Universiteit in Amsterdam had been using V6 in his classes on operating systems. It now appeared that he would not be able to employ V7. "It was the new licensing restrictions," he told me.

When AT&T released Version 7, it began to realize that UNIX was a valuable commercial product, so it issued Version 7 with a license that prohibited the source code from being studied in courses, in order to avoid endangering its status as a trade secret. Many universities complied by simply dropping the study of UNIX, and teaching only theory. [Operating Systems (1987), p. 13]

Andy was not to be deterred: he created an operating system like Unix for use on Intel's new x86 architecture: Minix. 1

MIT. In 1974, Robert Greenblatt at the MIT AI Lab began the Lisp machine project. His first machine was called CONS (1975). 2 This was improved into a version called CADR (1977). 3 CADR was the direct ancestor of both Lisp Machines, Inc., of which Greenblatt was the founder and president, and Symbolics.

And Symbolics, in several ways, forced Richard Stallman to form the Free Software Foundation and the GNU Project. I'll discuss these in Chapter 8.

Berkeley. Though I will go into detail concerning the Computing Systems Research Group (CSRG) at Berkeley in the next chapter, I think it important to note here that 3BSD, the first Berkeley release for the VAX, came out at the end of 1979. But this was not based on V7, but on 32V. Berkeley utilities and modifications from 2BSD (including the C shell) had been added, as well as a virtual memory system done by a number of Berkeley graduate students, including Bill Joy.

It was an exciting year.

32V. Before going on to Berkeley, I should say something about 32V, the UNIX port to the VAX.

Nearly four years passed between V6 and V7. But, as I noted, things didn't stand still at the Labs. In fact, what we think of as V7 was available internally nearly a year prior to the publication of Seventh Edition.

Things hadn't remained static at DEC, either, and the first VAX (Virtual Address eXtension), a 32-bit computer, was pre-announced in 1977 and went on sale in 1978. Dennis, Ken and Steve Johnson felt alienated by DEC, for a variety of reasons. And Dennis and Steve were working on the port to the Interdata 8. So when DEC offered them a VAX, they just said "no." DEC then turned to Bell Labs in Holmdel. I spoke to Charlie Roberts, who was to manage the project.

DEC came to us in Holmdel. We were clearly the second-string. Tom London and John Reiser were interested and so was Ken Swanson, and we got the VAX in early '78. I didn't do any of the technical work. In fact, I devoted a lot of energy and time to getting the management to let us do it. It wasn't research you see. However, they let us take the time. And in about three months my small group ported Version 7 to the VAX. We got the machine in January; they had it running in April; and by August it really worked. By then folks knew what we were doing. I had had calls from about six universities -- Brown, UCLA, Berkeley, Waterloo. I can't recall the others. So I went to Roy Lipton and Al Arms in Patents and Licensing about getting it out. After a lot of back-and-forth, they decided that we could give it to one university for research purposes and that Al would set up a "special research agreement" with that institution.
I had met [Bob] Fabry at a couple of conferences and I had been out in Berkeley and given a paper and talked to [Domenico] Ferrari as well as Emmanuel Blum and Bill Joy. So, with the blessings of BTL area 11 management, we sent 32V to Berkeley. It was in October or November 1978.

With that background, let's go cross country to Berkeley.

1 I'll return to Minix in Chapter 9. But it's important to note that some universities went along with AT&T. The first of these was Carnegie Mellon. Clem Cole told me that he and Dan Klein had gone on a hunger strike until CMU purchased a "full" $20,000 license.

2 This was a pun on the list construction operator in Lisp.

3 In Lisp, cadr returns the second element in a list.