Terminals and the invention of Unix
Standardisation and ASCII
In order to make the telegraph then teletypes work, something was needed: a standard. Morse then Baudot were a standard of encoding. But you would also need to standardize on the technical level: what is the duration of a bit? How much current is needed to flip a 0 to a 1?
There was this understanding that we cannot communicate if we don’t agree on an international standard.
Nearly at the same time that FORTRAN was invented, computer became fast enough that you could plug a teletype terminal in it and directly type your command instead of punching cards. Vaccuum tubes were replaced by a new invention from Bell Labs: the transistor.
Screen had not been imagined yet so output of commands were directly printed on paper. It could be slow so you had to type each letter slowly enough for the computer to understand.
As Baudot proved to be too limited, every computer manufacturer started to invent its own coding. Standardization commitees like ISO and, for US, ANSI, debated. In early 60’s, they ended up with ASCII, a 7 bits tables including letters and terminal commands.
As computer often operate on 8 bits, the first bit of any ASCII caracter is 0 when the computer is operating on 8 bits. At the time, there was no standards of Kb so memory was about "words" (which could have different lengths on different systems).
Using cathodic rays, the first screens started to appear. But they were expensive and slow which means that they didn’t immediately replace the hard copy terminal. Also, they had a finite number of lines so it was not possible to read long outputs on them.
With the advent of miniaturization, terminals will slowly gain more and more features while still text-only oriented. They will get memory to store the commands and send it atomicaly to the mainframe instead of letter by letter. They will allow scrolling back to read the text. They will become very small computer by themselves.
It should be noted how fast it went. In 20 years, computers went from not existing at all to being ubiquitous in every big institution.
The idea behind MULTICS
The problem with terminals was that humans were slow. When the human was typing, the computer was waiting, idle. A huge machine costing the price of a big house was doing nothing most of the time.
For that reason, batch computing with punched cards remained popular for decades. You were "programming at home" with your punch cards, then bringing them to the computer operator and you could retrieve the output of your program the next day or two or three days later, depending on the size of the queue. Students quickly took the habit of using computers during night, as "serious work" happened during the day.
In 1964, multiple institutions (university, big companies and the famous Bell Labs) joined forces to creat MULTICS. The idea behind MULTICS was that you would be able to connect multiple terminals to the same computer. The computer would quickly and seemlesly switch from one terminal request to another. That way, computing power would not be wasted while allowing interactive use of a computer. Effectively, with modern eyes, we understand now that they were trying to invent multi-processes computing.
Due to the number of parties involved, the project was highly complex from an administrative point of views. Lot of meetings, lot of red tape. In 1969, Bell Lab left the project and two of its main programmers were left with nothing to do : Dennis Ritchie and Ken Thompson.
Birth of UNIX
In summer 1969, Ken Thompson’s wife just had a baby and decided to travel to her family, leaving her husband alone for one month.
What would a man do with one month alone and nothing to do at work? Answer is obvious: write an operating system.
Using all the ideas he has developed during the MULTICS project, Thompson sat down and decided to use one week to program the shell, one week for the filesystem, one week for the compilator (to be verified).
As a joke, he called his project UNICS. Everything was written in assembly.
Many computer paradigms were invented at that point: files, programm run from files, hierachical filesystem, program to do basic tasks that were before part of a monolithic and opaque operating system (copy, delete, move, …), text and binary files. This would later result in pipe and shell programming.
In 1972, Dennis Ritchie expanded the B language that Thompson had invented and called it "C". Ritchie and Thompson took the challenge of rewriting their UNIX in C. It became the first operating system to run on different computers!
The fact that the operating system itself was a lot of small programs allowed people to collaborate. They would share ideas, give their own version, take code from each other. Doug McIlroy invented the pipe in the shell and, suddenly, UNIX became a powerful beast that no other system could beat.
But it was not that popular! Serious people wanted to use the system with which the computer was sold. So, in Bell Labs and university, people started installing UNIX on the computer every night to play with it then reinstall the normal operating system every morning.
Connecting computers
At the same time, research was ongoing on how to make computer communicate with each other. As people knew how to connect a terminal to a computer, it was alread possible to connect a terminal to a remote computer through a phone-line using a "modem" (remember: Bell Labs was part of AT&T whose main goal was to sell phone lines).
It was thus relatively simple to connect two computers together. You "only" need to call the remove computer operator, agree verbally on what computers will do (remember: they need to speak the same language) then the two people involved would put both their phone on the modem.
Quickly, comuputers would get their own phone number so an operator was not needed.
Young "hackers" of that time would even randomly call numbers until they recognize the sound of a modem. They would then connect their own computer and try to get access only to explore and learn new stuff (passwords were not always present or easy to guess).
This is the whole plot of War Games, when a teenager gain access to a military computer controlling nukes but think it is a game.
Dennis Ritchie would help people install UNIX that way. They would connect him on the computer running UNIX and he would solve bug by writing new code.
ARPANET
Computers were connected one to one. But, at the same time UNIX was invented came the idea of allowing computers to be connected to multiple others at the same time and to serve as relay.
Hence was born the concept of "packet switching" where you didn’t need to be connected directly to the computer you wanted to talk to: as long there was a path to it, you could find a way.
This network of computers was initially called "ARPANET".
Historians believe that when UNIX was first presented publicaly in 1972 at a conference, at least half of the people using ARPANET were in the room. Which heavily links the history of UNIX and INTERNET. Internet as we know it would appears in 1982, with the TCP/IP protocol that would extend ARPANET.
We talk about INTERNET but we still have to wait 20 years befare the Web will be invented. Don’t mix up INTERNET and Web.
There were strict rules about using the ARPANET. You could not use it for professional reason. In 1978, the computer vendor DEC sent a message to every connected computer (it was still possible at the time) to advertize its product. This was widely successful but also widely condemned, with people arguing that if everybody was advertising its stuff, the ARPANET would quickly be full of vikings chanting the SPAM song. This was a popular reference to a monthy pythons sketch.
The great collaboration
Through ARPANET, people from institutions such as Bell Labs and universities started to collaborate. It is important to remember that there were no such thing as "software version".
UNIX versions were not really the number of the software but the version number of the manual!
It was understood that the manual could be shared but that each software was, anyway, adapted by its users. People were litteraly modifying the code to make it works, sharing piece of code, functions or even whole binaries.
To make it easy, people started to bundle software together. In 1978, Bill Joy from Berkeley put together the Berkeley Software Distribution. Bill Joy would also implement ex, an editor to replace ed. Ex had a visual mode called "vi".
This collaboration was seen as normal until, at the end of the seventies, Bell Labs lawyers woke up and started to forbid the use of the name UNIX as being a trademark of Bell Labs.
The "UNIX users group" was thus renamed "Usenix". John Lion’s commentary on Unix source code was forbidden and thus photocopied by thousand of students.
Collaboration still happened. Dennis Richie told the story of a friend at an university that wanted the latest UNIX software. Dennis told him "I had it on tape in a bag that I took during my lunch break. I forgot my bag near your office. Could you please ensure that the bag is safe with all the tapes containing the source code?"
Recommended Reads
- L’histoire du logiciel : entre collaboration et confiscation des libertés (ploum.net)
- The Daemon, the Gnu and the Penguin, Peter Salus
- UNIX: A history and a Memoir, Brian Kenighan
- Efficient Linux at the Command Line, Daniel J. Barrett