Advice from Doug Mcilroy

Attached by magnet to the wall of my office is a yellowed sheet of paper, evidently the tenth page of an internal Bell Labs memo by Doug McIlroy. Unfortunately, I don't have the rest of the note.

When this was written, in 1964, Bell Labs computing was for the most part done on IBM 7090 or 7094 equipment, mostly in batch mode, using an IBM 1401 to prepare tapes from card decks and print output, also transmitted by tape between the mainframe and the 1401. This kind of operation was typical of the age. Bell Labs was somewhat apart from the ordinary; the operating system was locally developed (BESYS), and there was a certain amount of advanced hardware attached. Some of this was in direct support of smooth batch operation, like gadgetry on the tape drives to crossbar the drives with their channels, and some was with display devices, like the PDP-7 computer used to control a Graphics II display system--this was the machine commandeered a bit later to build Unix on.

In the software area, besides BESYS itself, there was considerable language work, notably BLODI (essentially, early dataflow architecture) and Snobol (string processing). McIlroy's particular specialty at that stage was macro-processing, but he had and has broad interests.

1964 was also the time that the Multics project was at the point of beginning. Some of these thoughts either influenced the design of Multics or encouraged Bell Labs to take part in it. One in particular was important to us.

Here is the page-on-the-wall, retyped. A PDF scan (pretty big at 49K) scan of the original lets you see that it was produced on a typewriter (and also the damage over the years, and that the duplicated "when" phrase is historically accurate).

- 10 -

Summary--what's most important.

To put my strongest concerns into a nutshell:

1. We should have some ways of connecting programs like garden hose--screw in another segment when it becomes when it becomes necessary to massage data in another way. This is the way of IO also.

2. Our loader should be able to do link-loading and controlled establishment.

3. Our library filing scheme should allow for rather general indexing, responsibility, generations, data path switching.

4. It should be possible to get private system components (all routines are system components) for buggering around with.

M. D. McIlroy
October 11, 1964

What did Doug mean, and what came from the thoughts?

Point 1's garden hose connection analogy, though, is the one that ultimately whacked us on the head to best effect.