50 years of the UNIX Operating System. Myths, legends and quirky stories.
Jan 21, 2020 15:21 · 8276 words · 39 minute read
OK, let’s start by saying “Happy Birthday UNIX!” it looks silly, but indeed we are at a birthday party so it makes sense to say “Happy Birthday”. But who is the “Birthday Boy”, exactly? imagine you have been invited to a birthday party - my kids are usually invited to theirs classmates’ parties - you get there, and you don’t know whose party is it. Literally you don’t know who is the “Birthday Boy!”. I assume here you all now who is the “Birthday Boy”, right? Well, that’s not so simple since saying “Happy Birthday UNIX” is not that clear, since “UNIX” has different meanings, and we will review here some of them. UNIX is an operating system developed at the AT&T Bell Labs where AT&T was the US national telephone company.
01:11 - UNIX was developed at the AT&T Bell Labs between 1969 and 1992. Initially, it only worked on Digital (DEC) computers mainly the DEC PDP-11. Then, it was ported to many other architectures and then relicensed to universities and retailers, which could make their own changes and resell the resulting system with their own brand. But the development of that operating system stopped in 1992, when Bell Labs released the last version, that is “UNIX System V” release 4.2 Hence, that operating system does not exist any more.
01:58 - Many of the architectures on which it worked are extinct. I think not many of you have ever heard of Interdata maybe some of you has heard about Alpha, RISC, Power PC, Motorola 68000 or SPARC, but for most of you these names mean nothing. These computers do not exist any more. For some of those architectures you can still buy legacy support So we are not talking of this “UNIX”, which was around for about 23 years, not 50… UNIX is also a registered trademark by AT&T When AT&T dismantled the support for the UNIX operating system the UNIX trademark was first sold to Novell, then passed to the “X-Open” consortium, then to the “Santa Cruz Operation”, and finally to “The Open Group”. but effectively “The Open Group” sells certificates that state that your system is compatible with the “Single UNIX Specification” and only if you are prepared to pay an amount of money in the region of thousands of dollars.
03:25 - None of the certified UNIX systems still around is currently under development the only exception being Mac OS from Apple. the other ones are effectively almost extinct and receive exclusively legacy-level support for already existing installations. But UNIX is not just about money “UNIX” is also a defined set of system calls i.e., we call Unix a more-or-less standard set of of system calls (functions) that provide a standard interface to access the hardware resources of your computer such as memory, hard disks, and input/output devices that you connect to your computer it is a set of system calls - or functions - which share the common principle that “everything is a file”, meaning that any kind of information is transmitted as a stream of bytes, without a superimposed logical organisation. the operating system does not know what your file contains, and does not give a toss by design.
04:55 - the main issue is that the set of those system calls is far from being “standard”. 50 years ago, the set contained about 15 system calls, in the first release of UNIX there were 35, while in modern Unix systems the set of system calls grew to a few hundreds: Linux has more than 350 while FreeBSD has about 420. Hence, speaking of Unix as a set of system calls that have been around for 50 years are are still used today as in 1969 is probably as wrong as considering UNIX only the trademark or the original system developed by AT&T UNIX is a philosophy UNIX is a philosophy of how computing should be done, a philosophy based on just a few simple principles: the first one is the so-called “KISS” or “Keep It Simple, Stupid” then write programs that do one thing and do it well write small programs, and make it possible for programs to interact with other programs through the concepts of “filter” and “pipe”, that we will see in a moment. use text for input and output so make sure that your programs can read simple text as input and write simple text as output. …and this is a very important concept: prioritise portability over efficiency hence, make a program portable before making it efficient.
Then there is another important concept 06:43 - that unfortunately is discarded in most approaches to software engineering and consists into getting working prototypes before optimising a program avoiding premature optimisation, which is know to have killed many good programs Then, if you don’t have anything good to say, just shut up, a “golden rule” that should be followed by all proper UNIX programs. If there is anything in UNIX that has remained constant in the last 50 years, it’s probably this set of principles on which the system is based, and this set of principles is the focus of this talk. We will see how these principles originated how this system of unwritten rules came to existence to create an operating system which, in a way or another, has survived for 50 years. Just think that 50 years ago there was practically no microprocessor-based computer. The first ones were just starting being produced back then, so we are not talking of one or two or three geological eras but probably of six or seven eras ago.
Nevertheless, 08:06 - this set of rules has remained more or less identical over time. So we will talk about UNIX, of the history, myths and legends of this operating system. In particular, we will focus more accurately on the first ten/fifteen years of UNIX history and we will be a bit quicker later on. One important thing to consider that in the UNIX environment time is measured in seconds since the 1st January 1970 at midnight, so we will measure time in the same way. From now on, all the dates will be referred to the beginning of the “UNIX Epoch”, which is indeed the way in which time is represented in almost all the current operating systems this is the reason why no UNIX operating system was affected by the so-called “millennium bug”, but maybe the audience is a bit too young to remember it… …
ok, 100 million seconds before the start of the “UNIX era” 09:13 - around 1967, MIT, AT&T and General Electrics decided to put resources in the creation of a time-sharing system …do you know that is a time-sharing system? well, it’s a system where all the users and the programs accessing the resources of a machine have the impression that the machine is at their exclusive disposal this concept is totally trivial today and nowadays there is no need to specify that a system is a time-sharing system. But back then it was not that trivial the normal way in which you used a computer consisted in punching a batch of punch-cards, putting them in a reader waiting for your program to be executed by the machine, and maybe come back the day after to get the results. So at no time the users had the impression that all the resources were at their disposal: they knew that their “job” would have run between 1:00am and 2:00am, while other users were waiting for it to finish. Nowadays programs normally interact on the same processor share the same resources at the same time, but back then it was not normal at all.
So these three big-names joint forces to create a big system 10:44 - that I represented as a triceratops here, which they called MULTICS, for “Multiplexed Information And Computing Service”, which was indeed a time-sharing operating system. They put in an enormous amount of money to create this system, which was expected to run on large computers provided by General Electrics. These were machines with more than 2 megabytes of RAM…There is an interesting comparison to make with the amount of memory used by the initial versions of UNIX… At that time the MULTICS project basically failed in achieving its objectives although MULTICS continued to be used and developed until the late 90s.
11:29 - All of a sudden, AT&T withdrew its support to the MULTICS project since it was costing them much more than expected and the project as a whole was not delivering the expected results. They said to MIT and GE “You carry on, we lost our interest”. The history of MULTICS is another very interesting chapter of computer history… Anyway, in 1969 the Bell Labs researchers that had been working on MULTICS were left without a project to work on, and without a time-sharing operating system to use one of those guys was Ken Thompson who is probably one of the most talented hackers we have seen in the last 50 years. You will understand why in a minute. So Ken Thompson and two more guys, Dennis Ritchie and Rudd Canaday, who were all part of the MULTICS project, liked a lot the idea of having a time-sharing system, they had got somehow used to MULTICS, although it was far from usable in many respects, and they wanted to recreate the same multi-user and time-sharing environment that they had just glimpsed in MULTICS.
When AT&T pulled the plug to MULTICS 12:50 - they sat down and started discussing a prototype of a hierarchical filesystem. This is another concept that looks absolutely trivial today, a system where files are organised in a tree where the “root” is the starting point of your file system and all the other files are associated to a path in the tree, well in practice you can also have loops in there, but the idea of a hierarchical filesystem effectively started in MULTICS. So the three guys thought of implementing a hierarchical filesystem, which was one of the big things back then. So Ken put together an implementation of the filesystem, on a “poorly used PDP-7”, a computer that was already obsolete at that time. The PDP-7 is a computer produced by Digital Equipment Corporations since 1963.
By 1969 this computer was already old 13:50 - however, there was a PDP-7 that nobody else was using at Bell Labs and Ken used it to implement his hierarchical filesystem in a relatively short amount of time. He reported “all of a sudden I realised that I was three weeks away from a complete time-sharing operating system” It is clear now what kind of hacker is Ken Thompson: being able to understand that the filesystem he had was already one fourth of an operating system, and that it would have needed three weeks to finish it. Luckily (for us) Ken had had a kid a few months earlier, and his wife decided to bring the baby to visit Ken’s parents in California, and to spend a month on the West Coast, between July and August 1969 Well, Ken Thompson used that time to do what he wanted to: in three weeks, while his wife was away to the West Coast, he wrote an assembler on the first week, an editor on the second week, and a shell with an exec loop on the third week. In just three weeks, in what I think was a real “mythical man-month”, a proper month of work by a single person gave birth to the first version of UNIX. So around September 1969 the “UNICS” system was born. note: U. N. I. C. S.
- 15:27 - which stands for “Uniplexed Information and Computing Service” almost the same acronym as in MULTICS, but with an evident pun that replaces “mult-” with a “un-” This is an original picture, here reported as ASCII art, of Ken Thompson and Dennis Ritchie who, around the start of the UNIX epoch, are working at the UNIX system. We are at the beginning of 1970, and they immediately realise that the PDP-7 is not the right platform for their project: it has a small amount of RAM, scarce resources, and it is relatively hard to run. It turns out that Digital Equipment Corporation had just launched a new computer, which was called PDP-11, and Ken and Dennis understood that it might have been good for them…there was only a tiny problem: AT&T had no intention at all to spend a single dollar more in operating systems research, really, no intention at all. The great idea was to promise AT&T that they would have used the PDP-11 to create a text-processing system AT&T and Bell Labs needed a text-processing system, since their patent office which produced around 400 patent applications per year, really needed a professional system to create and manage those applications.
So as soon as they said 17:23 - to administration “We want to create a text-processing system”, they immediately found the quarter million dollars needed to buy a PDP-11 and gave it to what would have become the “UNIX Group” which was indeed the AT&T research group 1127 In the four years between 1970 and 1974 many great things happen. While Ken and Dennis were working at UNIX - we will talk about that in a minute - they realise well, Ken in particular realises that programming in assembly was problematic, although for him personally assembly was not at all an issue as he was able to do things in assembly things that others could only dream of however he understands that assembly poses a limit to development. Ken had started working at a low-level language called “B”, and in 1972 Dennis Ritchie start experimenting with a new language derived from “B”, which he calls “C”, you know, since after “b” you have “c”… This language will be used for UNIX and will grow together with UNIX it will be used to re-implement UNIX in a language different from the assembly. UNIX was the first operating system to be…
well not the first operating system 18:51 - to be completely implemented in a high-level language, but it was the first operating system to be implemented in a high- level language that could be ported to an architecture that was not its original one. This is something absolutely normal today, but it was literally revolutionary back then, when operating systems were developed by the hardware producer and sold together with the computer UNIX broke this taboo, and in a fantastically successful way, since indeed the PDP-11 will become the most popular mini-computer in research centres between the end of the 1970s and the beginning of the 1980s, together with the VAX. And UNIX will become the most used operating system on these computers and “C” will become the most popular programming language on these systems. the three of them will constitute the backbone of the primordial Internet nothing happens by chance…in the span of just three years Bell Labs gave birth to three ideas: high-level languages for system programming, the UNIX operating system, and portability which will be fundamental for the development of Internet.
20:01 - Now a question for you, another important concept: what is the single character of your keyboard that would make the largest amount of damage in a UNIX system, or better, what is the character of your keyboard that, if it not existed, would cause UNIX to die badly?…think about it! do you have any idea? just raise your hand…do not be afraid of proposing one come on! anyone? so if [this character] did not exist, the UNIX operating system could not work, probably would not even be able to boot… so? …no, it’s not ENTER! So, the most important character in UNIX is “pipe”, if you did not have “pipe” most of your computers running Linux, FreeBSD, Mac OS, etc. would not even boot properly. Why is this vertical bar so important? It is important because it represents a very important concept which was invented by another guru of computer science and UNIX ten years before in 1964, Doug McIlroy, who was the manager of the group of people who developed UNIX, talks of a system to interconnect processes, programs exactly like garden hose in a garden - he says literally” “we should have some ways of coupling programs like garden hose - screw in another segment” so put another segment when you need to massage the data in a different way…” ….
it was 1964, 60 years, well, 56 years ago 22:05 - Doug McIlroy is still around and very active on the mailing list of The UNIX Heritage Society (we will talk about it later)…well, Doug starts insistently asking that the pipe-hose system is implemented in UNIX, and Ken eventually decides to implement pipes overnight, not exactly as McIlroy had devised them, since he wanted a complete graph among all the processes in the system, well no, Ken understands that the most important thing is allowing the output of a program to be used as input of another program. In just one night, well they say it was indeed just one hour of work, Ken implemented the pipe system call in the kernel and you can believe he did it in one hour! well, if you look at the code you can believe it, and in one night added the pipe mechanism to the shell this is a report by Brian Kernighan, who was there when this happened and contributed to the early development of UNIX and he says that Ken added the pipe system call and the pipe mechanism to the shell, and immediately realised that the result was literally “mind-blowing”, something absolutely powerful, which allowed to put together programs that had been developed to do different things. So Ken Thompson and Dennis Ritchie sit at their console and in one day re-write or adapt all the tools available in UNIX at that time to that they can use pipes. In order to use a pipe, a program must write on output only proper output no useless progress messages (“if not needed, just shut up”), and must also be able to handle input and output in text format.
Well, in just one night 24:08 - the modify as needed the 40 or 50 utility programs ….they modify these 50 tools and start playing with pipes and do some marvellous things, as for instance using a pipe to get the current date, transform it in English text, and let a speech synthesizer speak it aloud, using existing tools and without writing a single line of C code. …without writing a single line of C code. Up to 1973 the UNIX project known exclusively to a small number of researchers at Bell Labs, nobody outside knows about it, and in 1973 Doug McIlroy and Joe Ossana “encourage” Ken and Dennis to write a paper for what will become one of the most important conference in operating system research, and to send it to the ACM Symposium on Operating Systems Principles well, they send this paper in 1973 this is the version published in the “Communications of the ACM” in 1974 and this is the incipit of the paper, well now it does not say anything special, but in 1974 if you start with “a general-purpose, multi-user, interactive operating system for the Digital Equipment Corporation PDP-11⁄40 and 11⁄45 computers” you are saying something absolutely ground-breaking, since everybody was working to create general-purpose, multi-user and interactive operating systems, literally everybody. so all of a sudden you see this paper from Bell Labs that says: we did it, it’s available, it works we support already 25 concurrent users….if you think that MULTICS only five years before could allow not more than 4 or 5 concurrent users…
26:19 - five years before, on a machine that was ways more powerful than a PDP-11 Ken happens to be a very humble person he came back from the talk saying “well, it was not a success… …maybe I didn’t do a good job…” There were about 2200 people in the audience that day and the talk had indeed been a terrific success as Ken got out of that room, everybody wanted to try UNIX obviously most of the attendants were researchers and professors coming from US universities, and all of them called Bell Labs the day after, asking for a copy of UNIX. Now we must remember something Bell Labs was not allowed to create products which had anything to do with computers although computer science was being invented then! And this was for a decree that had prohibited AT&T from entering the computer market so Bell Labs could not legally sell products that had anything to do with computers Bell Labs could only work on the national telephone system But lawyers at Bell Labs put together a simple licensing system that allowed universities to receive UNIX by paying a small amount of money - 150 dollars which could just cover handling and shipment costs for a few thousands dollars you could also obtain the full source code of the system, the full source code! This is the first time that an operating system is distributed with all its sources, even if after a payment, this is something that did not exist back then, and what happened was that you received if you were at one of those universities, you received a nine-track tape with a label that read “Love, Ken”. Yes, Ken Thompson had literally copied that tape from the system running at Bell Labs and had sent it. And this was how about 100 US universities got UNIX within 6 months from Ken’s talk.
28:44 - Among these universities there was obviously the University of California at Berkeley, in 1974 This was the support policy of Bell Labs regarding UNIX. 4 points: ONE: don’t say it to anybody, we are giving you some material that you will use only for research, this is NOT a product. TWO, there is no support, if you want you can buy the sources and solve the issues on your own. THREE: there are no bug fixes. FOUR: payment in advance So this was the Bell Labs support policy in 1974. Nevertheless, almost all the US universities and some European ones were more than happy to have a working time-sharing multi-user multi-tasking, interactive operating system, since up to that moment there was no other operating system which had all these properties, and which ran on a computer that was more-or-less cheap, the PDP-11.
29:48 - Well, by “cheap” we mean that 1974 a PDP-11 would cost around 100 thousand dollars a sum of money that was within reach of a medium-sized department. This is a quote, in my opinion the most important quote by Dennis Ritchie and says ““What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form”. This is the essential difference between UNIX and the other operating systems developed between the mid-1970s and the late 1990s. the UNIX developers were not working for a contract, they did not have any customer to make happy. they had no deadline, no pre-arranged specs, no restrictions in terms of time, money, resources…none of them.
30:52 - They just focused on creating a system that worked for them and that they were happy to use. So the developers were the users of this system, but very early the users themselves became developers, since the sources were available if you have an issue with a program, you could have a look at the source if you found a bug, you look for the problem in the source code and then you can fix the problem and rebuild the program on the same machine where you were working on This was a revolutionary concept. This had not happened before for any operating system, and they do that between 1970 and 1974. This view is in stark disagreement with the AT&T UNIX support policy which said “no advertisement, no support, no bug-fixes, payment in advance”. How to solve this dilemma? Well, users always find a way, and the solution was to create a fellowship of UNIX users, that initially was called “UNIX User Group” But AT&T was jealous of the UNIX trademark and forbid them to use that name.
Thus the “fellowship” was renamed into “USENIX” 32:17 - USENIX is exactly what the same says: a group of users about Unix it was born as a mailing list, so you sent your mail address of your department, and you would receive a printed fascicle every month, with all the news about the UNIX world this was a fanzine before the fanzines, meaning that it was entirely on paper and thanks to this system UNIX started distributing also patches submitted by other users. Quite often, those patches were not created by simple UNIX users, but they came directly from the UNIX development team at Bell Labs, who let them “appear” on USENIX. There is a very nice story about this, and we will see it in a moment. So between UNIX version 6 and UNIX version 7 Ken and Dennis found several bugs in the kernel, so that put together a tape with 50 patches, and then “lost it” on the road just outside Bell Labs. The story goes that “somebody” received a phone call where the person at the other side said that a tape with 50 patches for UNIX was available if they went there and there and such and such time. No one knows who put the tape there.
33:42 - Obviously, the tape was put together but the hackers at AT&T. You don’t get upset if I say “hacker”, right? Sure, “hacker” is the right term, “hacker” is good. The next five years….no worries, now we go faster… between 1969 and 1974 five versions of UNIX are “produced”, well we need quotes here since this is a bit fictious, so five versions of UNIX. Well, this is not true: no single release of UNIX was produced in that time. What happened was that the developers continued working on the live system, kept changing things, and at a certain point they decide to “print” the manual of the running system.
34:28 - Well, the manual receives a version number: version 1, version 2, version 3, and so on. The first version of the manual was printed in 1971 and this is what we call “UNIX version 1”. The second version of the manual was printed in 1972, and the system at that point is called “UNIX version 2” but indeed as Ken Thompson repeatedly said, “the rest of the world reasoned in terms of UNIX versions, but for us UNIX was just a continuum”, so for them there was no release, the release they used was the system currently running on their machine, which had received all the changes, improvements, and bug fixes. Between 1974 - the date of the CACM paper - and 1979 there are only two UNIX releases namely, “UNIX v6” and “UNIX v7”. These are probably the two most important releases of UNIX ever produced, and we will now understand why.
35:31 - UNIX V7 is the most important release since it is indeed the grandparent of all the modern Unix systems. If you sit at a UNIX V7 console you can probably do the very same things, or almost the same things, - with the same commands - that you could use on the console of a modern Unix-like system. UNIX V7 had around 70 commands, there are commands of all types, some of them are missing in the list but effectively UNIX V7 is the grandparent of all the UNIX and Unix- like systems we have today. We will see in a moment that this release of the operating system was not developed any more just by Dennis Ritchie and Ken Thompson, quite the opposite! The two of them had worked alone at the first releases but many early users quickly became developers, and there are so many of them who in the end became quite famous the first three are Alfred Aho, Peter Weinberger, and Brian Kernighan below their names I reported some of the tools to which they contributed if you put together the first letters of their surnames you obtain AWK, that is the programming language that invented around 1977. These are only some of the things they contributed to develop, since indeed the culture at that time was that the last person to change a program was effectively considered “the owner” of that program so if you had fixed a bug in the shell, well you had become the “owner” of the shell and if you had broken something in the process you were expected to fix it until someone else would become the “owner” of the shell by modifying the code and so on, so all these people indeed put their hands in many parts of the UNIX operating system.
37:25 - Here we have another bunch of people who had a strong influence on the early releases of UNIX They are Joe Ossana, who was the manager of the 1127 research group, and was the one who encouraged the developers, together with Doug McIlroy, obviously Joe Ossana died in 1978 after a heart stroke, but before dying he create “troff”, which is the same software you use today to read a “man page”. Every time you type “man” you are indeed using code based on the algorithms developed by Joe Ossana. Today you will most probably use a re- implementation but he was the inventor of “troff”. Stu Feldman is another of the casual developers at AT&T, the one who invented “make” in 1975. Then Doug McIlroy, who among other things invented and wrote “diff”, “join”, “sort”,…
38:44 - and many other UNIX programs Lee McMahon who invented “sed”, the stream editor which has a very interesting story…but we can’t talk of everything…and then there are other types like Steve Bourne - have you ever heard of Bourne? Yes, as in “bash”, but “bash” is not his creature, “bash” is the “Bourne Again SHell” - the shell written by Bourne became the default shell in UNIX V7 and replaced the shell by Dennis Ritchie [KEN THOMPSON] that was the one previously available Steve Johnson created a variety of tools that nowadays have mostly disappeared mainly for the creation of compilers, like “yacc”, “lint”, he worked at “lex” and more stuff he also wrote the “Portable C Compiler” which was shipped with UNIX V7 the portable C compiler is still developed today, on top of the same code-base from 1976. Another important character was Lorinda Cherry, who is one of the (unfortunately) few women who contributed to the development of UNIX, together with Nina… …I don’t remember the surname, sorry [McDonald]!… Lorinda Cherry mainly worked on tolls for the creation and management of text, as for instance “equation” she also worked on “table” and more stuff, and she also collaborated to “bc” and “dc” “dc” stands for “desktop calculator” and is a reverse Polish notation calculator, I guess few of you know of its existence but “dc” is actually present in all the modern UNIX, these commands exist in most of the modern installations and then we have Mike Lesk who wrote “lex”, “table”, “uucp” which is the protocol used for Usenet, but that’s another story. UNIX V6 travelled around the world, V5 and V6 are the first versions that travel around the world.
They obviously arrive in US and Canada, 40:58 - and almost immediately also in Europe. The first UNIX installation in Europe dates back to 1974 at the Catholic University of Amsterdam, while the second one was at the then Queen Mary College London, and the third one was probably the one in Edinburgh. [UNIX V6] arrives also in Japan and in Australia, at a time when arriving to Australia meant physically bringing a 9-track tape there, i.e., somebody brought a tape in a suitcase to Australia and it arrives at two places: the University of New South Wales in Sidney, and the University of New South Wales at Wollongong, which will became independent from Sidney Why is this stuff at all important? Well, because from Australia came a book which will become fundamental. In 1977 John Lions writes “The Commentary on the UNIX operating system”. This book is composed of two parts.
42:01 - The first part contains the source code of UNIX: the entire source code, about 12 thousand lines of code while the second part is a commentary that explains what each single line of code does. A WONDERFUL book…. which Lions wanted to use as a teaching tool to teach operating systems to his students. The book was an immediate success the problem was that…oh, before speaking of the problem… a phrase of that book that make it into history is a comment found in the source code of UNIX in a section of the source responsible for the switching of two processes and there Dennis writes: if the new process was swapped out swapped out of memory then “set stack level…whatever” and at the end he says “ok, you are not expected to understand this” which might really sound as a challenge but was intended as “this will not be on the exam paper”, this is so deep and so dependent on how the PDP-11 works that even if you don’t understand it, you’ll be fine although the code was available below, what he meant was: if you don’t know what you are doing, just don’t touch the code below otherwise you will break the system.
43:51 - Between V6 and V7 the AT&T licencing terms change it is not any more possible to openly discuss the UNIX source code and the “Commentary on the UNIX operating system” becomes illegal overnight. Well, the users found a workaround, and that book became the most widely photocopied book in the history of computer science. A second-generation copy or a third-generation copy of this book is considered a very rare specimen today. so everybody kept photocopying the Lions book until at the end of 2006, almost 35 years later, AT&T decided to allow a reprint so nowadays you can also buy it online, but back then the only way to have it was a photocopy. Take into account that many universities kept running UNIX V6 because they had all the source code of the system without needing to accept the new licensing terms, so for many years until the mid 1980s many universities kept running UNIX V6 as developed in 1975, because the source code was available and they could do whatever they wanted with it these years up to 1979 are summarised in an excellent way in a famous quote of Doug McIlroy, who was one of the managers of the UNIX group, who says “This is the UNIX philosophy: write programs that do one thing and do it well, write programs that work well together, write programs that accept text streams, as this is a universal interface” These three principles brought us to UNIX V7, and allowed UNIX to land on the computers of all the research centres of the world by the end of 1980.
45:54 - well, at this point the development of the UNIX operating system by the initial group of developers ends here, and all the development and support activity is handed over to another group, the “UNIX Support Laboratory” which is managed by other AT&T employees and does other things the hackers who had put UNIX together will continue to develop UNIX V7 and there will be internal version named V8, V9, and V10 that dates back to 1992 - we are still talking of versions of the manuals - but these systems will never be distributed outside Bell Labs. The licencing terms have changed and many other things are changing, and AT&T has decided to transform [UNIX] into a product So UNIX V7 is the last version of “research UNIX” available outside Bell Labs Between 1980 and 1984 a bunch of hippies takes the scene a wonderful bunch of hippies who in a way or another continues the development of UNIX and that’s a bunch of mad people, mainly undergraduate and postgraduate students, at the University of California at Berkeley. UC Berkeley received UNIX version 4 in 1974, and the students there start playing with it, meaning that they start programming, changing, breaking things… and two students in particular, Bill Joy and Chuck Haley, write a Pascal compiler for the new system back then everybody was sure that Pascal was “The language of the Future”, and luckily they were wrong …sorry, but they were wrong for many reasons…anyway they wrote a Pascal compiler, and many universities used Pascal to teach programming to their students.
48:03 - Bill Joy also wrote the editor “ex”, which is an extension of the editor “ed” the original editor written by Ken Thompson. There is an interesting story about “ex” because apparently “ex” does not come directly from “ed” but comes from “em”, developed at Queen Many. So the US universities needed a Pascal compiler, and Bill Joy took his Pascal compiler, bundled it with “ex” and created a distribution to be sent to universities, which did not have restrictions as AT&T code, since that was new code. And as such, was property of the UC Berkeley. So between V5 and V6 Bill Joy creates the so-called BSD or “Berkeley System Distribution” 1, which is released in 1978, and will be followed by the “Berkeley System Distribution” 2 between 1979 and 1980 in 1980 Berkeley buys the new and revolutionary computer from Digital Equipment Corporation: the VAX 11⁄780.
49:14 - The VAX was mostly retro-compatible with the PDP-11 The main difference is that the VAX had a memory management UNIX, which was not available on the PDP-11 and UNIX had not been written to use a memory management unit, it was a system based on “swap”, so at Berkeley they change the kernel to make it run on the VAX and use its MMU. From this point on, Berkeley UNIX will star diverging from the initial code based on UNIX V5 and V6 There will be other versions up to BSD 4.2 in 1993. These BSD systems could be distributed exclusively to research centred who already had an AT&T Licence since they contained AT&T code, modified by the hackers at Berkeley a very important year, and we are almost done, is 1983. A lot of things happen in 1983 The first one is that BSD 4.2 is release, This is considered well actually, that was the first UNIX operating system with native support for the TCP/IP protocol stack ever heard of TCP/IP? Internet as we know it today was moving its first steps in 1983 Berkeley signs an agreement with DARPA to develop the TCP/IP protocol stack on UNIX This is a fundamental step, because all the universities which had BSD 4.
2, automatically also had a TCP/IP stack 51:01 - and could connect to ARPANET, well, let’s say the “late ARPANET”, which was already becoming Internet. Another important fact in 1983 is the release of “UNIX System V”. In 1982 AT&T is “set free” from all the legal constraints it had before, and is allowed to compete in the computer market, and it decides to transform UNIX into a produce, and calls it “UNIX System V” or “UNIX System Five” “UNIX System V” is a closed product, the licenses the binary license costs four times as much as the one for UNIX V7 the source code license has a price tag in the region of 20,000 / 30,000 dollars so UNIX has indeed become a product on itself And this changes a lot of things, this move threatened to kill UNIX forever. In 1983 another project is born: the GNU project, mainly due to Richard Stallman, whose objective is that of reproducing a UNIX operating system which would be free from AT&T code, and could be distributed freely Stallman starts from an assembler, then a compiler, and then all the system tools as I said the following five years are a death threat for UNIX AT&T becomes very aggressive in the UNIX market they want to standardise all the versions of UNIX available at that time and wants to do that in its own way meaning, not with a shared and agreed standard, but with a standard set by AT&T so UNIX goes to war, but it is a war between UNIX and UNIX, not a war of UNIX against something else this is only a fraction of all the UNIX systems all the UNIX systems ever built, most of those were born between 1979 and the end of the 1980s this is the number of distinct UNIX systems that you had in the market at that time, each reseller who got the UNIX sources put his own brand on it and made a new product and introduced some incompatible behaviour, so you had 400 or 500 varieties of UNIX some of them are much more modern, but it was just to show what how big the UNIX business was towards the mid 1980s a question for you: do you know which of these UNIX sold the largest number of licenses? you will not believe it XENIX XENIX was a UNIX based on System V created by Microsoft and sold the largest number of licenses because was a UNIX able to run on 286 and 386 computers so as soon as those computers were available the easiest way to run UNIX on them was to run XENIX, or some other of those clones but XENIX effectively sold an enormous number of licences in terms of actual money, it was not the most profitable because other producers made much more money than Microsoft by selling UNIX, but Microsoft was the largest licenser by the end of the 1980s. Nobody would have told that, also because later on Microsoft consistently undermined anything that did not come from Microsoft.
54:53 - anyway, this is the story in 1987 another UNIX-like system is born MINIX created by Andrew Tannenbaum at the University of Amsterdam it is not a system that works in the same way as UNIX because it is based on a microkernel but it provides the same system call interface and for this reason it is considered UNIX-like because you could port a program written for UNIX, rebuild it for MINIX, and it would have worked without problems well almost…but practically without problems. What happens is that MINIX is distributed together with the Tannenbaum’s book on operating systems with the full source code. The only issue is that MINIX can only be used for teaching purposes. …another important fact of these five years is the release of BSD Net/1 Back at Berkeley, they did not stop removing AT&T code, and continued until they realised that the majority of the code of the Berkeley System Distribution did not contain any code from AT&T Keith Bostic e Kirk McKusick decide to start a crusade to rewrite UNIX and to free to free BSD completely. To make sure that all the code was under the licence of the University of California, and did not contain any original AT&T code they realise that they are not far from having a free system and they start announcing at the USENIX conferences - they used to be every six months - they announced which percentage of BSD was free from AT&T code they started at 30%, then got to 70%, until one day they declared that BSD was 100% free of AT&T code they cut the tape and released BSD Net/1.
56:57 - now the last 5 years in detail, and then the remaining 25 in August 1991, on the Usenet group comp.os.minix this message appears. It is from a computer science student ad the university of Helsinki and it says “you know what? Last April I started working on a MINIX clone…it works… I have ported the compiler and the shell… it would be nice…if you want to play with it it’s free and available and it has no MINIX code, it is not portable and it will probably never be, it will not support anything more that AT hard disks, because this is what I have…” Within 6 months from the announcement, about 100 people around the world join the development of Linux and, I like to think, that the development of a free operating system starts again started from the point where the hackers of Bell Labs had left in 1979 in a totally different manner. These people are not in the same place their offices aren’t close, they don’t have the same resources, they are on the Internet scattered….
they are not all at Berkeley, they are all over the world, and they manage to work together 58:37 - through Usenet, and they manage to create an operating system that was absolutely outstanding for that times. Meanwhile, in 1991 BSD Net/2 is released the story is a bit convoluted here: as soon as Berkeley said that they were free from AT&T code, AT&T sued them immediately saying that they had infringed the AT&T copyright there, and there, and there… The story is really quite complicated, and at the end they found that among about 5,000 files in BSD Net/2 only 11 had traces of AT&T code. So again, over 5,000 files in…yes..BSD Net/1… only 11 files, while instead AT&T had incorporated a lot of BSD code, removing the Berkeley copyright statement as if the code came from AT&T… the lawsuit was settled out of courts, and they agreed that whatever BSD had at that point could be distributed, and this is what they did and in 1992, from BSD Net/1 and BSD Net/2, the so-called “386BSD” was born, also called “Jolix”, because it was developed by Lynne Jolitz and Bill Jolitz.
00:00 - apparently they had to re-write only 10 files. So an entire operating system written in C for a VAX needed only changes in 10 files to be ported to 386 so powerful was the abstraction provided by the C language. In the space of just a few months they got an operating system that worked on 386 the main issue was that Bill and Lynn Jolitz were quite slow at developing, and the community of users, which had become again a community of developers, decided to fork out and created NetBSD first and FreeBSD afterwards, which were born in the same year, just a few months apart a few months later, in 1994, OpenBSD is born as a fork of NetBSD. the community of users became community of developers, and became responsible for the code, and continued walking along the footprints of the hackers at AT&T Bell labs…now the last 25 years… it is not easy to objectively tell the story of the last 25 years we should probably wait for 25 years more…we will get there…
what is UNIX today? 01:19 - UNIX, in all its incarnations, is the most widely used operating system on smartphones and tablets 97% of smartphones and tablets run a UNIX-like kernel, both Android or iOS are UNIX-like 98% of the public Internet servers run UNIX operating systems run on Unix-like operating systems. It is believed - but there are no data about that - that almost 100% of infrastructure servers, we talk of routers here on the Internet, actually run a UNIX operating system, anyway not less than 95% All the mainframes run on Unix-like systems, or on systems derived from UNIX even z/OS derives from UNIX all the super-computers in the top 500 run UNIX operating systems, indeed since 2014 all of them are Linux operating systems. more than 35% of the embedded systems run a UNIX operating system, and unfortunately only 12% of the desktops, if we include Mac OS. UNIX today: obviously Linux and all its distributions, BSD with clones and forks, and then some other UNIX which are mostly available only for support… Solaris dies a few years ago, killed quite effectively by Oracle, HP-UX has been abandoned, MINIX continues being developed by Tannenbaum and others, Open Indiana is a fork of Open Solaris GNU/HURD is the incomplete operating system by default and will probably remain incomplete for the next 50 years …not yet finished! it will never be finished…
03:14 - This is a quote by Dennis Ritchie dating back to 1999, which is for all of those who say “well, we don’t really know if FreeBSD or Linux are indeed UNIX or not” the creator of UNIX says “I think that the Linux phenomenon is quite delightful, because it draws so strongly on the basis the Unix provided.” so for him Linux and the free BSD systems were genetically UNIX, because for him being “UNIX” meant to provide a certain kind of system interface and to follow a given set of principles. Strictly speaking, not even the BSD are genetically UNIX since their code is devoid of any reference to AT&T code the quote I prefer above all is by Harry Spencer - who was one of the fathers/uncles of USENET - who says “Those who do not understand Unix are condemned to reinvent it, poorly” …and that’s all, thanks! :-) [clapping] .