The Daemon, the Gnu and the Penguin, Ch. 4 & 5 - by Peter H. Salus

by Pamela Jones
Groklaw

April 22 2005

Here are chapters 4 and 5 of Dr. Peter H. Salus's history, The Daemon, the Gnu and the Penguin.

If you missed earlier installments, here's the introduction [ http://www.groklaw.net/article.php?story=20050327184603969 ], and Chapter 1 [ http://www.groklaw.net/article.php?story=20050407114834583 ], and Chapters 2 & 3 [ http://www.groklaw.net/article.php?story=20050414215646742 ].

******************************

The Daemon, the Gnu and the Penguin

by Peter H. Salus

Chapter 4. A Tale of Two Editors

In Chapter 1, I mentioned CTSS and ITS. At that time, early in the 1960s, TECO (Tape Editor and COrrector; later, Text Editor ...) was the editor everyone used on the PDP-1 and, later, on the PDP-6. Not only was it widely used, but just about everyone modified it. (In RFC 681, quoted earlier, an editor "based on QED" is mentioned. QED was written by Butler Lampson, who wrote the QED text editor for the Berkeley Time-Sharing System on the SDS 940. It was character-oriented and based on TECO. Ken Thompson used this version of QED while a student at Berkeley, prior to going to Bell Labs in 1966.) Indirectly, TECO was the ancestor of vi; directly, it was the parent of Emacs (= Editing macros for TECO).

Interestingly, Bill Joy created vi in 1976 and Richard Stallman (together with Guy Steele and Dave Moon) created Emacs the same year. The original version was based on TECMAC and TMACS, two TECO editors. Stallman and Michael McMahon ported it to the Tenex [for the DEC-10] and TOPS-20 [for the DEC-20] operating systems. [James Gosling, the creator of Oak/Java, wrote the first Emacs for UNIX at Carnegie-Mellon in 1981. RMS began work on GNU EMACS in 1984.]

Joy's creation had a more complex origin.

The editor created by Ken Thompson in August 1969 was called ed. Ken had written a version of QED for CTSS on the IBM 7094 at MIT. He and Ritchie then wrote a version for the GE-635 at Bell Labs. The cut-down version of this for the PDP-7 was ed. While TECO was known for its complex syntax, ed must have been the most user-hostile editor ever created.

Across the Atlantic in London, George Coulouris at Queen Mary College (now Queen Mary and Wakefield College) had gotten UNIX v4 in late 1973. George explained to me how unhappy he had been with ed and how he created em (editor for mortals) so that QMC students could "exploit more effectively some vdu [visual display unit] that we had recently acquired..."

Then I spent the summer of 1976 as a visitor to the CS Department at Berkeley. I worked in a room full of teletype terminals using the departmental UNIX. I had brought em with me on DECtape and installed it there for my own use...

One day, sitting at the next terminal was this fairly frenzied hacker/Ph.D. Student [Bill Joy] who told me he was writing a Pascal compiler. I showed him em, and he said "that's nice, the systems support people might be interested in that." He took me and introduced me to them. They had a couple of PDP-11s ... supporting several rooms full of vdu terminals connected at 9600 baud, an environment in which em could really shine.

I explained that em was an extension of ed that gave key-stroke level interaction for editing within a single line, displaying the up-to-date line on the screen (a sort of single-line screen editor)...

The system support person [Jeff Schriebman] said something like: "That's very nice, but if we made it available to all of our users the overheads associated with running in raw mode would swamp the cpu."

I was rather depressed by this reaction, thinking "I guess I have been unrealistic in developing an editor that is so expensive to run..."

Nevertheless, Bill and the support people took a copy of my source to see if they would use it. I then went to the East Coast for a week or so. When I returned, I found that Bill had taken my code as a starting point and had got a long way towards what was to become ex and subsequently vi, and that the editor was installed on the service machines ...

1976! Created in 1969, ed had travelled east to Australia and west to Vienna. Coulouris had created em in London and brought it to Berkeley. Now the Berkeley editor, ex, would be available on the first UCB tape. But vi, which was available on 2BSD (1979), only made it into a BTL distribution with v8 (1985).

Even in 1976, international communication and access to source meant the distribution of new tools and new programs encouraged and enlivened the user community. Let's look at the landscape for a few minutes.

  1. In 1974, Bob Kahn and Vint Cerf published the first paper describing what was to become TCP/IP.
  2. In 1975, RFC 681 was published.
  3. In January 1976, there were 63 hosts on the ARPAnet, which was on the verge of becoming the Internet.
  4. And UNIX was available throughout the world -- but only on hardware that cost well over $10,000.

Chapter 5. UUCP and USENET

Also in 1976, Mike Lesk at AT&T developed UUCP (UNIX-to-UNIX copy). 1 V2 was implemented in 1977. 2

UUCP meant that information could be directed around the network (as it was). It also meant that one could establish a telephone connection and transmit information across that (relatively expensive) link. Two years later, three graduate students in North Carolina (Tom Truscott, Jim Ellis, and Steve Bellovin) took the next step.

Tom Truscott had an early interest in chess. While a student at Duke in 1974, he devised a chess program (Duchess) and played against Ken Thompson's Belle. Duchess lost on time. (In competitive chess, each side has a given time to make its next move; Duchess exceeded that time due to a core dump.) But Truscott competed in every ACM computer chess tournament from 1974 through 1980. He also attended the 1976 UNIX Users Group meeting at Harvard (1-2 April) and the 1978 meeting at Columbia (24-28 May), where he met Ken and others.3 In 1979, Truscott went to the Labs as a summer student and, on his return to Duke, arranged for a UUCP link. (He also attended the USENIX meeting in Toronto [20-23 June], to which we'll return in the next chapter.)

When he returned to Duke, he found that Jim Ellis had installed V7 on the Computer Science PDP 11/70. They employed the auto-dialer capacity to dial up two other Duke computers and one at the University of North Carolina. Ellis and Truscott then called a meeting to discuss their idea -- to have something like the mailing lists on the ARPAnet for computer sites that weren't on the ARPAnet. Steve Bellovin, then a graduate student at the University of North Carolina, attended and then wrote the first Netnews program -- three pages of shell script (later rewritten in C). The first implementation was between the Duke and UNC Computer Science departments; the Duke Medical Center Department of Physiology was added at the beginning of 1980. In January 1980, Ellis and Truscott went to Boulder, CO, and announced their Netnews design at the USENIX meeting (January 29 - February 1).

The first version of Netnews was fairly simple and efficient. It periodically checked the "last saved" time-stamp of each file in a specified directory, and then sent any file updated since the last check to another computer using UUCP across a modem connection.

Tom Truscott and Steve Daniel (also a graduate student at Duke) then rewrote the program to create what was called Netnews Version A. Since Netnews was designed for UNIX at a university, it was automatically categorized as public domain software under the conditions of the AT&T UNIX license, which greatly facilitated its subsequent use and adoption. This implementation appeared on the 1980 USENIX distribution tape, which was distributed at the Newark, DE, meeting (June 17-20). Duke University then invited other sites to join the network, which was made easier by the fact that the software was free, starting the first Usenet expansion -- to 15 sites. But one of those was Berkeley, which resulted in an explosive growth spurt.

That connection was the responsibility of Armando Stettner, then with DEC. Someone at the Delaware meeting complained about the inordinate cost of the long-distance telephone connections needed to get news to the West Coast. Armando spoke to Bill Shannon and they said that if they could get a news feed to decvax (in New Hampshire), they'd pick up the Berkeley phone bill. [Armando later supplied the first news feeds to Europe, Japan, and Australia, too.] The network soon spread to universities across North America, quickly establishing a critical mass of useful information, which made it even more popular.

In under a year, Usenet grew to 100 sites and over 25 articles per day (the original protocol had been optimized for 1-2 messages per day). Mike Lesk had never contemplated such uses of uucp. Truscott, Ellis and Bellovin had never imagined such popularity. The system collapsed.

In 1982, Netnews Version B was developed by Mark Horton (a graduate student at Berkeley) and Matt Glickman (a high school student) to increase efficiency so that USENET could cope with the increasing loads on the growing network. Horton continued to maintain the system till 1984, when Rick Adams at the Center for Seismic Studies took over maintenance of Version B, releasing 2.10.2. There were 135 news groups at the end of March. Version 2.11 of Netnews was released in late 1986.

In 1989, Netnews Version C was developed by Henry Spencer and Geoff Collyer at the University of Toronto again increasing efficiency.

By the late 1980s there were 20,000 newsgroups. Looking at what was current became nearly impossible. The remedy was "searching." As Mike O'Dell put it: "The Internet is now a rich fabric of resources and capabilities, and it is no longer possible to simply know all the places where interesting stuff is available. We now need tools with which to discover and navigate this world-wide treasure trove" (Computing Systems 5.4 [Fall 1992] p. 373).

Searching in a Distributed Environment

By the beginning of 1992, there were a number of "resource discovery systems" (much of this section is drawn from the special issue of Computing Systems cited above).

The earliest of these were search engines which pointed at specific, dedicated servers: whois, which responded to queries about people, network numbers and domains across the Internet; and X.500 (ISO DIS 9594-1 [1988]), a distributed directory look-up service.

The next tool was archie, developed by Alan Emtage and Peter Deutsch when they were at McGill University in Montreal. archie maintained a directory of materials available on about 1100 UNIX archives accessible by anonymous FTP. In 1992 it contained about 2.6 million files with 150 gigabytes of information.

Gopher (from the University of Minnesota's "Golden Gophers") provided a simple menu-driven interface to data searching.

Prospero (Neuman, 1992) was an "enabling technology," allowing users to create their own views of information in a distributed file system.

WAIS, wide-area information service, developed by Brewster Kahle and colleagues at Thinking Machines, was a network of over 70 servers world-wide, offering access to over 300 databases by natural language keyword search.

There were also knowbots (developed at the CNRI) and Netfind and a host of others.

But the "winner" was the World Wide Web (WWW), invented by Tim Berners-Lee at CERN, and first published in Electronic Networking in Spring 1992. We will return to the Web in about a dozen years.


1Lesk earned a Ph.D. in Chemical Physics and worked in the UNIX group, where he wrote tbl, refer, lex, and UUCP. He went on to Bellcore; was head of a Division at the National Science Foundation (1998-2002); and is currently Professor of Library and Information Science at Rutgers University.

2 UUCP has a rich history; see Chapter 15 of Casting the Net.

3 This was the meeting at which the name was changed to USENIX, spurred by a letter from an AT&T lawyer stating that Western Electric had not granted permission to use "UNIX" in "UNIX User Group."


Dr. Salus is the author of "A Quarter Century of UNIX" [ http://www.amazon.com/exec/obidos/tg/detail/-/0201547775/103-4901303-9037417?v=glance ] and several other books [ http://www.computerbooks01.com/search/books/AuthorSearch/Peter+H.+Salus/1/ ], including "HPL: Little Languages and Tools", "Big Book of Ipv6 Addressing Rfcs", "Handbook of Programming Languages (HPL): Imperative Programming Languages", "Casting the Net: From ARPANET to INTERNET and Beyond", and "The Handbook of Programming Languages (HPL): Functional, Concurrent and Logic Programming Languages". There is an interview with him, audio and video,"codebytes: A History of UNIX and UNIX Licences" [ http://technetcast.ddj.com/tnc_play_stream.html?stream_id=583 ] which was done in 2001 at a USENIX conference. Dr. Salus has served as Executive Director of the USENIX Association.

10:54 PM EDT

Copyright 2005 http://www.groklaw.net - http://creativecommons.org/licenses/by-nc-nd/3.0/