Image of Ken Thompson and Dennis Ritchie at work in 1972. Before them, a DEC PDP-11, with a Teletype Model 33 attached

Introduction

Brief: a short description of the significance and extent of UNIX

UNIX (or Unix) is a system that was built in the 1960s in response to the ever extant need for a reliable Operating System. Problems of the day included timesharing. State-of-the-art computers often completely filled up rooms. They were expensive to build and perhaps even more expensive to maintain.

UNIX was created initially by Ken Thompson, and further developed by Dennis Ritchie and other people at AT&T's Computing Science Research Center of Bell Labs in New Jersey. Early on, they got to work on solving all kinds of general purpose compute problems. By now, many other people have contributed to the development of UNIX and Unix-like operating systems, and UNIX has spread all over the world and beyond.

A UNIX-style system can solve a problem not only on single-purpose device, but on networked groups of machines as well. UNIX facilitates the clustering of resources through many apis and utilities. Using the UNIX system, one can develop very sophisticated software that remains robust, fast, secure and portable. Remote access and distributed computing were further developed in the Plan 9 system. Plan 9 development continues into 2021, and many of its ideas have already been taken back into UNIX-like derivatives.

Get started

There are multiple ways to navigate this document:

  • Use the menu to select a topic
  • Keyboard: use left and right arrow keys
  • PC/Mobile: use edge panels labeled < and >

Unix has been ported to Git repository featuring multiple branches and accurately timestamped git commits. If you want to know more about the project and the archaeological effort to recreate Unix in git, see Dr. Spinellis's 2016 document "A Repository of Unix History and Evolution". A 2015 edition, titled "A Repository with 44 Years of Unix Evolution" is also available.

See also: pdp7 Unix by Warren Toomey

Visualization

Here is a run of the synthesized Unix repo through Gource, which helps us to imagine what the development of Unix might have looked like. The following run captures only the history from 1972 - 1985.

After 1980 the tree becomes quite complex. Crucially, the Bell System was broken up over 1982-1984, and the final release of research UNIX was the 10th edition in 1989.

If the embedded video fails to load, try YouTube.

One of the earliest complete versions of UNIX ran on the PDP-7.

This restoration includes assembler source for Ken Thompson's space travel game that is sometimes described as the impetus for UNIX.

Early history

Here are operating systems prior to 1970. Naturally, these are all predecessors of UNIX:

Primary sources

These are various technical papers and other writings about UNIX from its creators.

The UNIX Time-Sharing System

This document is the earliest known formal description of the UNIX system. It had a few revisions, and an early draft is available.

Timeline

Security

On the topic of security in the context of compilers, Reflections on Trusting Trust makes a firm conclusion.

Papers from other folks associated with the labs are available more specifically on the security model of UNIX.

Userspace

Most users find themselves in a ring known as the userspace. It exists at a level higher than the kernel, and is often where robust, interactive and bespoke applications are found.

Manuals

Much information about Unix is available through it's manuals. The manuals are sometimes included with the operating system. Other books on the subject are available.

Video productions

The following are video productions featuring subjects whom are directly involved in Unix, speaking on the topic of Unix itself.

Unix books

Books on Unix that are not manuals.

See also: courses and humor.

Secondary books

Bell Labs

Bell Telephone Laboratories (i.e., Bell Labs) was AT&T's research division created out of the Bell System. The headquarters at Murray Hill has since been transferred to Nokia.

Holmdel and related research divisions, along with their respective personnel and machines are described in the sources below.

People

See also:

Interviews

These are interviews with people who worked on Unix, speaking about Unix or the personal affect it had on their lives.

Retrospectives

Awards

Programming languages

UNIX featured use of multiple high-level programming languages. As development went on, more of the code was written in a high level programming language over time. You can view this evolution and witness C slowly take over in the source code video.

Although not an easy feat, UNIX eventually enjoyed portability in its implementation using mostly high level languages. Namely, the C programming language was eventually used to implement most of UNIX and it's various utilities, rather than an assembler language.

All UNIX users will encounter a shell language, as it is typically the main interface to the OS.

General

The code samples from Kernighan's talks tend to use C and AWK.

Influences

A number of ideas from people working outside of the Bell System had an influence on, or overlap with ideas from the developers of UNIX.

C

C is a programming language that was the primary language used in UNIX systems since the epoch.

Today, programmers use languages like C++, Rust and Go in addition to C. C still enjoys use on modern UNIX systems and in embedded settings.

C++

C++ is championed by Bjarne Stroustrup, who was another Bell Labs collaborator.

  • 1988: A Better C?
    • by Bjarne Stroustrup
    • for Byte Magazine

B

For completeness sake, there briefly existed a language called B which was later superseded by C. Here is some B literature:

S

S is a statistical language that was a precursor to R

Shell

The Shell, a type of command language, is an interface to the operating system and a means for the user to control the kernel. Multiple shells have seen use since early UNIX days, and still more shells are being developed today.

Shell languages often mix structured programming constructs with bespoke commands like cd command, which every shell MUST implement since chdir can only affect the working directory of the running process itself.

AWK

awk is a line-by-line processing programming language with constructs for pattern matching, regular expressions and common processing idioms.

Regular expressions

Regular expressions can be viewed a limited kind of programming language. They are often used for pattern matching, text replacement and general text transformation tasks.

Regular expression engines tend to be very bespoke and non-portable. Throughout the history of UNIX, a shared library for regular expressions remained elusive.

Nevertheless, regular expressions are implemented in multiple programming languages and various tools. Sometimes, this leads to inconsistencies, which are well documented in the sources below.

Other resources

Go

Go is a new programming language designed by many people, some of whom are the UNIX author(s). It is sponsored and developed at Google.

Talks

Compilers

UNIX had various tools for compiling programs and building compilers themselves. Here is some literature:

Unix is where many things started, and there is much to be understood in a study of Unix alone. However, there were many developments outside the scope of, but closely related to Unix in some way.

In particular, branches closer to the epoch (1970) are of great interest.

Timeline

Minix was created by Andrew S. Tenenbaum, who was known to department 1127.

It was relicensed to BSD in 2000.

Some time near or after 2015, nearly all Intel chips include Minix as part of IME.

Plan 9

From Wikipedia:

Plan 9 replaced Unix as Bell Labs's primary platform for operating systems research.

Hardware

Much of the equipment that Unix originally ran on has been decommissioned (i.e., put out of use). Some original systems are still in use, especially in cases where architectural successors exist (e.g., on the IBM S/370 line).

It is possible now to run Ancient UNIX editions via a number of emulation software.

Emulators

Here are emulators for various systems that Unix was developed or used on.

Emulation milestones

Models

See the DEC Documentation Archive for manuals and information about peripherals.

Misc

Orgs

1993: The Unix Heritage Society (TUHS)

Founded in 1993, The Unix Heritage Society is the best active UNIX preservation community.

It has many resources for the UNIX student:

TUHS was orginally formed as "the PDP-11 Unix Preservation Society"

Others

Courses

These are traditional academic courses available online on the subject of Unix.

See books for some of the available texts.

Alternative courses

Humor

Notes

In the primary sources section, most of the documents are from the UNIX creators. Some of the referenced material is not strictly from UNIX authors. This distinction is made clear by hyperlinking every author for the relevant document, so that the reader can check for themselves who is from Bell Labs, some university or just another bloke from the world.

About this project

It has been 50 years since the 1970 epoch. The Unix epoch is a common baseline for global timekeeping found in many systems.

Many have seen monolithic IBM machines in media such as Stanley Kubrick's 2001: A Space Odyssey, but most have not encountered the term "mainframe" in their entire life. A datacenter or any kind of cloud-connected resource is conceptually equivalent to the "mainframe." In general, compute resources may be plenty, but need to be shared amongst many users. The solution to this problem turns out time and time again, to be Unix.

Today, Unix is deployed ubiquitously around the world. All the major branches of Apple's iOS and MacOS, as well as Linux and Android are designed and integrated around the semantics of the unix system. This includes other operating systems derived of Unix such as Solaris (illumos), AIX and every BSD. BSD variants include FreeBSD and NetBSD which are used for example, in computers that do network routing.

Terminal emulators are a thing. Some wonder what are terminals and why do we emulate them. Are these equivalent to a "console"? Technical jargon gets used a lot across the computing business, but this can often obscure meaning and create confusion.

In short, this reference exists as a guide to present the subject in a clear manner that is well suited for study.

A lot of ground work was also done by The Unix Heritage Society, and this document refers to many of its resources. Be sure to see the TUHS Wiki for more information.

About the linker

Avindra Goolcharan was created in 1991, the year of the first public Linux kernel release. Since 1997, Avindra resides in the state of New Jersey, which is the location of many of these stories. Before the turn of the millennium, the family got a computer for the first time. It ran Microsoft Windows 98 SE, and was later upgraded to Windows XP and a Pentium 4 chip.

In the early 2000s, Ubuntu emerged. At the time, Ubuntu physically delivered free CD-ROMs to users who needed them, which made it simultaneously practical, easy and affordable for people to adopt Linux, including Avindra. To him, the default Gnome interface was a breath of fresh air to the Mac and Windows systems that schools and businesses seem to prefer.

By 2008, the author started writing original computer programs and scripts. Around 2015, Avindra started using the openSUSE Linux distribution, and can be found contributing patches as an openSUSE member.

About UNIX

UNIX is a registered trademark of The Open Group

http://www.unix.org/trademark.html