Skip Navigation

January 2009, Technology

Teleology of Telecommunications Technology - UNIX by Accident

By Uday Bhaskar   Mon, Dec 15, 2008

Contrary to popular opinion, technology does not always follow a purposeful path of evolution. Spectacularly successful inventions have often been solutions in search of a problem. UNIX on the other hand is a case all by itself.

Teleology of Telecommunications Technology - UNIX by Accident

Contrary to popular opinion, technology does not always follow a purposeful path of evolution.  Spectacularly successful inventions have often been solutions in search of a problem.  Alexander Graham Bell had the modest goal of designing a hearing device to help his mother, and he ended up inventing the telephone.  Unsuccessful research into tracking and intercepting Soviet bomber aircraft called Semi- Automatic Ground Environment (SAGE) led to the invention of modems to connect remote computers.

Of all the industry's technological innovation stories, I am most fascinated by the origins of the UNIX Operating System.  Much of the modern day connected world would not have been possible without fundamental concepts that were first introduced by the perverse, innovative genius of Ken Thompson.  Mr. Thompson wanted to develop a video game on an abandoned PDP 7, and ended up inventing the UNIX Operating System.

Today's communications industry owes much of its technology to a series of fortuitous accidents. As in all fields of human endeavor, chance had a lot to do with its evolution.  One can only speculate how the world would have evolved had Bell not had a deaf mother, or had the Department of Defence not canceled the MULTICS project.

When the DOD shelved the MULTICS project in the late sixties, several engineers from Bell Labs who were working on it found themselves with a lot of time on their hands.  As Ken Thompson "hit the bench," to use the consulting parlance, he seized the opportunity to tinker around with one of the PDP 7s that Bell Labs had allocated to the project.

Like a true geek, Ken was fascinated by the latest toy in the Labs, the vt100 visual display units.   Contrary to the bulky teletypes that were being used at the time, the vt100s allowed him to type his commands and see the responses on a screen.  Ken was an expert assembly programmer, and he knew he could manipulate the image on the vt100 screen.  He was also an avid science fiction buff.  Thus was born what was arguably the world’s first video game.

Ken called his game “Space Travel,” and it involved simulated travel across the solar system.  By today’s standards this would probably be little better than a high school project, but in 1969 it was a technological watershed.  To be able to see spaceships traveling through a scale model of the planets and their moons, factoring in gravitational effects to give a realistic feel, with the user constrained to give inputs through nothing more exotic than a qwerty keyboard on a rudimentary terminal on a PDP 7, was no small achievement.

To manipulate all those celestial bodies with their varying masses and orbit sizes, and to dynamically compute the impact of user’s actions on the spaceship, required the ability to process large chunks of data in real-time.  As a corollary, it required very efficient use of the computer's scarce resources, including memory, disk space, input/output and, above all, keeping track of all the programs executing in the memory.  Being an assembly programmer, Ken developed routines for each of these tasks and pretty soon established a neat collection of tricks to impress his Bell Labs colleagues. These routines became popular, and others started using them for their own purposes.  Dennis Ritchie later helped him rewrite most of them in C, making them portable across computers, and Brian Kernighan half jokingly called these routines UNICS (as opposed to MULTICS).

These routines were written solely for the purpose of making Ken’s job of developing the Space Travel game easier.  But the concepts used were from the project that he was working on earlier – that is to say, the development of a multi-user interactive operating system, a.k.a. MULTICS.  So it was natural that eventually these routines took the form of an operating system, and thus the UNIX operating system was born.

Unlike the operating systems that preceded it, however, UNIX was not a monolithic piece of system software that stood between the computer and the application programs.  It was rather a collection of programs that each performed a limited function very efficiently, but designed to work together like building blocks in a Lego set - A kernel to manage processes, files, devices and memory allocation, a shell to interpret user commands and execute them, and a library of commands to perform a wide range of useful tasks, ranging from copying files to sending messages to other users.  Further, the shell came built-in with a scripting language that allowed easy creation of automated system admin tasks, which would then in turn become commands that can be executed by the shell.

Eventually, the "powers that be" in the Labs decided that Ken was having too much fun, and assigned him to a “productive” project.  Ken found a way to continue working on the development of UNIX.  He offered to develop software for the Bell Labs Patenting Department to support complex text processing.  If you have ever wondered why Unix has complicated text formatting utilities like nroff, troff, tbl, eqn, etc., well, now you know.

UNIX became ready for prime-time when the Labs decided to freely distribute licenses along with source code to universities around the world.  Soon, many universities began contributing enhancements of their own to UNIX.  The releases from The University of California at Berkeley in particular were very popular.  Known as Berkeley Software Dispatch (BSD) versions, they were quickly adopted by many commercial vendors, and before long UNIX became the de facto standard for the fast evolving workstation market.  Sun Microsystems, Hewlett Packard, DEC, and IBM each came out with their own versions, as did some independent vendors like Santa Cruz Operations (SCO) who provided versions that could be ported to any hardware.  Microsoft, with their XENIX, was a late adopter.

Meanwhile, the birthplace of UNIX was going through significant change of its own. As part of the Modified Final Judgment in 1984, AT&T split itself into the RBOCs and the long distance company that retained the original name. The Bell Labs became a part of a new subsidiary called AT&T Computer Systems (ACS), which later became Lucent Technologies. ACS sold UNIX to Novell in 1991, who in turn sold it to Santa Cruz Operations (SCO) in 1995.

Around the same time, prof. Andrew Tannenbaum developed the MINIX operating system, which was modeled on open source UNIX.  He distributed the source code freely to the readers of his book “Operating Systems: Design and Implementation.”  One of the readers of this book, a man from Helsinki named Linus Torvalds, adapted MINIX and developed the hugely popular open source LINUX operating system—largely based on UNIX.

UNIX has developed a cult following over the years, and loyal UNIX aficionados continue to thrive in online communities like the UNIX Heritage Society (http://www.tuhs.org/).  UNIX is also well known for the thorough documentation that comes with the software, with the typically cryptic UNIX command man (which of course is short for manual). 

Perhaps the most enduring legacy of UNIX will be the uniquely geeky humor that is an integral part of the core of UNIX. One can find humor almost in any corner of the UNIX world (well, it's humorous if you're a geek like me).  UNIX, to my knowledge, is the only computing environment with a built-in fortune cookie generator (with an adult version in some implementations).  As examples, here are a few interesting UNIX commands, and the expected output from them –

$cat “a can of tuna”
cat: cannot open a can of tuna

$if I had a ( for every $ that the Congess spent on bailouts, what would I have?
Too many (‘s

$make love
Make: don’t know how to make love. Stop.

$man: why did you get a divorce?
man: too many arguments

$nice man woman
no manual entry for woman

So what started as a toolkit for the geeks at Bell Labs has taken on a life of its own, and has evolved into a versatile and powerful operating system.  It pioneered concepts that fundamentally changed the way users interacted with computers and with each other while connected to the computer, ultimately leading to the internet and the World Wide Web.

Today’s teenagers might be shocked to learn that email and instant messaging started out as UNIX commands more than thirty years ago.  Many core constructs of the internet owe their existence to the principles established by the Bell Labs geeks, including the concept of hierarchical namespaces, device-file equivalence, building block approach using pipes, redirection, etc.  UNIX was perhaps the first computing environment in which everything was treated as simple byte streams instead of having complex file formats and “record based” file systems.  As mundane as this detail sounds, this is the principle that makes such critical technologies as Telnet, FTP, SMTP, TCP/IP, HTTP and SIP possible.  Believe it or not.

Until Next Time.  Stop.     

By Uday Bhaskar

Uday Bhaskar

Mr. Uday Bhaskar Nandivada is an enterprise architect and an authority on emerging trends in communications technology and a leading evangelist of TeleManagement Forum’s New Generation Operational Support Systems (NGOSS). He has over twenty three years of experience in architecting and implementing complex enterprise level solutions for a wide range of industries and business models. For the last nine years he has been working exclusively with telecommunications, media and entertainment service providers, providing strategic advisory services to Tier one carriers around the globe including AT&T, Sprint, Comcast, Directv, Telstra, Sprint, Telkom South Africa, FarEastern Telecom, etc. 

He is currently the Global Technology Solutions Lead with Amdocs Consulting, in which capacity he has led the development and successful launch of five holistic world-class technology solutions to address critical business needs of the world’s leading telecommunications and media providers.  Prior to joining Amdocs, Mr. Nandivada was a part of the Cable & Media Leadership team for Capgemini Inc., where he successfully led the implementation of several complex OSS/BSS Integration projects for more than ten major service providers. Earlier, he was a solution architect for AT&T’s Texas Local Factory. He may be reached at uday_n@sbcglobal.net.

Please login to post your comments.