Tracing the Lines: From the Telephone to Unix
The telephone, invented by Alexander Graham Bell in 1876, sparked a revolution in communication. A year later, in 1877, he established the Bell Telephone Company. This marked the beginning of a fascinating journey, leading to the formation of the Volta Bureau in 1880. Guided by Bell, the Volta Bureau became a research hub, making strides in multiple scientific fields.
Why does a history of Unix start with the telephone's invention, you may ask? Because while Volta Bureau is not the Bell Labs we know today, its creation marks the inception of Bell Lab’s Lineage. That RnD spirit has been going strong for over 150 years. A royalty, levied on every telephone across the nation provided the budget for this RnD. Only 1% of this tax was allocated to the 463 West Street, NYC building we know so well, yet, as Brian Kernighan recounts, this amount was immense…
It wasn’t a budget it was a quota.
- Brian Kernighan
Starting in 1925, and still around 98 years later (albeit with a few name changes), Bell Labs has done some incredible things during its lifespan. Propelled by bright minds and generous funding, it invented or improved many of the things we appreciate today including.
Transistors
Solar Cells
The C Programming Language
Lasers
Fiber Optics
And yes, the topic of our story today, Unix.
Unix was born out of the ashes of the failed MULTiplexed Information and Computing Service project (Multics). Multics was a time-sharing operating system started in 1964 as a joint venture between MIT, General Electric, and Bell Labs. While MIT was responsible for the system's design, General Electric manufactured the hardware, and Bell Labs took care of the software. It suffered heavily from second system syndrome, and by 1969 it was clear that the scope of the project had grown too large, and many of the developers including Ken Thompson said they felt “uninspired” by the project.
When Bell Labs pulled out of the project, they also put an end to their work on operating systems. Ken Thompson, who wanted to continue working on operating systems now had nothing to do. So, with a lot of spare time on his hands he began programming a game called Space Travel on a spare PDP-7 he had found at the Lab.
The PDP-7 he was programming the game on had a hard disk that was 6 feet tall with a single platter for storage. After writing the game, Ken set his sights on this device. He decided to write a disk scheduling algorithm to maximize its throughput. He realized he needed some way to test the disk, and so began writing other programs that would utilize it. This led to his now famous quote about creating Unix.
At some point, I realized without knowing it up until that point, that I was three weeks from an operating system. With three programs. One a week, an editor I needed an editor to write code, I need an assembler to turn the code into language I could run, and I needed a little kernel, kind of overlay call it an operating system and luckily right at that moment my wife went on a three-week vacation to take my one-year-old roughly, to visit my in-laws who were in California disappeared [on vacation]. [by himself] All alone and one week, one week, one week, and we had Unix.
- Ken Thompson
Shortly after Unix's creation, it started gaining traction among Bell Labs' members. However, the Lab's management remained opposed to any operating system development. This proved challenging, as Ken wanted to get a PDP-10 so that he could port Unix to it, since the PDP-7 was very slow. But all attempts to get the PDP-10 were rejected, even though it was well within the operating budget. Luckily around this time, the patent office was looking to buy a machine to edit, store, and modify patents. They were looking into buying a computer from a company that specialized in this work.
Ken chose a new angle and proposed that acquiring a PDP-10 would save money and benefit another department. The request was approved and very soon a new PDP-10 was delivered to Bell Labs. He began porting Unix to it in secret almost immediately. While working on Unix was exciting, the team also needed to fulfill their obligations to the patent office. Joe Osanna, an electrical engineer and computer programmer at the Lab, modified his nroff (new roff) and troff (typesetter roff) program which allowed text and typesetting, so that it could be used to fulfill the requests of the patent office. The patent office was so pleased with the system they took the PDP-10 and bought the team a brand new PDP-11, the very machine pictured in the famous photo of Thompson and Dennis Ritchie working on Unix below.
[Of Douglas McIlroy] He's the smartest of all of us and the least remembered or written down
-Ken Thompson
As Ken continued to tinker with Unix, he kept adding more and more features. One feature he added was redirecting IO. This allowed him to implement a feature first described by Douglas McIlroy, his direct supervisor, back in 1968, in his paper titled Mass Produced Software Components. This paper described what would eventually become the piping process that is used today with shell programs. After whipping up the first Unix shell from scratch, and with few modifications to existing Unix programs, he had a working prototype. He immediately showed Dennis Ritchie, who was blown away by the possibilities of these small composable programs. They both set to work porting the rest of the Unix tools so that their outputs could be piped in and out of each other. This led to the birth of many of the common core utils used in command line programs today like ls, cp, grep, and awk.
Around 1971, Ken decided that Unix needed to be ported to a higher level language. Dennis Ritchie took on the task, evolving Ken’s B language into something more feature rich. It was first called New B (NB), but each time Ken tried to rewrite the kernel in New B he would run into a roadblock. He would then ask Dennis to add more features. Eventually after structures were invented, there were enough features that Ken could rewrite version 4 of the whole Unix kernel in it, after a new compiler was written for this new language, it was renamed to C, and the rest is history. This was a significant breakthrough, as, until then, kernels were written in Assembly. For perspective, as late as 1983, Microsoft was still programming MS-DOS v2.0 in Assembly. Unix was truly ahead of its time.
The early '70s also saw Unix breaking out of Bell Labs, spreading through many academic circles. The first Unix license was purchased by Donald B. Gillies at the University of Illinois Urbana–Champaign in 1975. That same year, Thompson took a sabbatical from Bell Labs to visit the University of California at Berkeley. While there, he assisted in installing version 6 of Unix. Bill Joy, a graduate student at the time, joined him and played a significant role in developing Unix and an implementation of Unix on Pascal. Joy also contributed to the creation of two renowned pieces of software that remain in use today: the vi text editor and the cshell. By 1977, Unix had been ported to its first non-PDP system, with version 6 introduced to the Interdata 7/32.
As time went on, Unix's popularity skyrocketed, and it saw many releases, both open-source and proprietary. Also in 1977, The C Programming Language book was published by Brian Kernighan and Dennis Ritchie. This would be many peoples first introduction to C, the language of the Unix kernel. It would also play an important role in the standardization effort of C, becoming one of the first books updated to contain the new standard with the publishing of its 2nd edition. In 1984, the Unix Programming Environment by Brian Kernighan and Rob Pike was published, providing a comprehensive introduction to the Unix operating system and its underlying philosophy, building on a now almost 15 year history of the operating system.
The growth and evolution of Unix continued through the 1980s and 1990s, driving fundamental changes across the computing world. The simplicity and elegance of its design principles, along with its powerful capabilities, led to its adoption by academic institutions and businesses alike. Universities found it to be an excellent tool for teaching computer science concepts, while businesses appreciated its robustness, scalability, and flexibility.
Meanwhile, Bell Labs continued its trailblazing journey, birthing more fascinating technologies. A significant one was Plan 9, a distributed operating system that pushed Unix's principles even further, introduced in the late 1980s. While it never broke into the mainstream, its remnants still exist today. But that story will have to wait another day :).
In the 1990s, the rise of the Internet saw a continued surge in Unix's popularity. Its robust networking features, honed over two decades of use in academia and enterprise settings, made it the ideal choice for the burgeoning World Wide Web. This surge would live on through its spiritual successor Linux, a Unix like operating system, that was created by Linus Torvalds. Linux adopted the philosophy and design principles of Unix but diverged in areas where it saw fit.
The impact of Unix on the world of computing cannot be understated. It introduced revolutionary ideas, like the everything is a file concept, the use of simple, reusable tools, the shell, and many others. It inspired countless other operating systems, including but not limited to Linux, BSD, and macOS. Even Windows, which followed a completely different philosophy and design, has been influenced by Unix and now includes a subsystem for Linux. On top of that Jeffery Snover, the creator of Powershell, drew inspiration from Unix and Linux when creating the tool.
The story of Unix is a testament to the power of a good idea and the influence of an innovative, collaborative environment like Bell Labs. From a side project on an abandoned PDP-7 to a technological phenomenon, Unix is a shining beacon in the history of computing. This tale, started with a telephone invention, resonates with the profound fact that, when it comes to technological advancement, the past fuels the future.
Call To Action 📣
If you made it this far thanks for reading! If you are new welcome! I like to talk about technology, niche programming languages, AI, and low-level coding. I’ve recently started a Twitter and would love for you to check it out. I also have a Mastodon if that is more your jam. If you liked the article, consider liking and subscribing. And if you haven’t why not check out another article of mine! Thank you for your valuable time.