Culture / Linux

Could Unix Happen Today? Brian Kernighan Looks Back … and Forward

11 Feb 2022 5:00am, by
Ken Thompson and Dennis Ritchie recognized - screenshot from Brian Kernighan keynote at 2022 Linux Conference Australia

As beloved Unix pioneer Brian Kernighan approaches his 80th birthday, he made a special appearance at this year’s Linux Conference Australia. At the traditional January event — held virtually for the second year in a row — Kernighan reminisced on the 1970s and “The early days of Unix at Bell Labs,” always careful to acknowledge the contributions of others, and of those developers who’d preceded him.

Kernighan also used the occasion to reflect on the lessons to be learned from the history of the Unix operating system, from the C programming language, and even from Microsoft’s foray into Unix — ultimately asking the poignant question of whether a Unix-like phenomenon could ever happen again.

And finally, Kernighan also looked to the future, and expressed a sincere hope that the talk might “perhaps teach us something about how software development can be done effectively, and perhaps how to manage people and processes to make them as productive as possible.”

Encouraging Research

Young Brian Kernighan had received his Ph.D. from Princeton in 1969, then worked at Bell Labs’ legendary Computing Science Research Center until 2000, according to a brief introduction to his talk from conference chair Miles Goodhew. Goodhew joked that Kernighan is now a Princeton computer science professor, “where he writes short programs and longer books.”

Kernighan began his talk by listing off some of the lab’s most important inventions — the transistor, laser fiber optics — and pointing out that the lab had at least eight Nobel prize winners. (Or as many as 12, “Depending on how you count them.”)

Screenshot from Brian Kernighan keynote at 2022 Linux Conference Australia shows his office at Bell Labs

Red dots show Building Two, where most of the Computing Science Research Center (including Kernighan) had their offices on the top (5th) floor. Lower dot: office for Kernighan’s 1967 internship. Upper dot: 1968-2000.

The Lab had an environment that was conducive to research. “People would gather in the corridors talking about ideas,” Kernighan once told an interviewer in 2018. “People would meet at lunch and talk about things like that.” And this ultimately led to developments that were useful but also unexpected. While the first versions of Unix were written in assembly language, by the fourth version Dennis Ritchie had developed the easier-to-read “higher level” language C — and had used it to code the entire operating system.

There’s a lesson to be learned here. Kernighan told his audience that Ritchie was drawing on his experiences with an earlier operating system named MULTICS, which had been co-developed by Bell Labs, General Electric, and the Massachusetts Institute of Technology.

Several important Unix characteristics — not just its hierarchical file system and programmable shell, but also the fact it was written in an easily readable “high-level” language — “arguably come from MULTICS. It’s not like Unix sprang out of nothing. MULTICS had an enormous number of good ideas, and showed the feasibility of some of those quite well, and those were simply adapted and streamlined in some ways and used in Unix as well.”

CTSS creator Fernando Corbato of MIT - Screenshot from Brian Kernighan keynote at 2022 Linux Conference Australia

On the other hand, Unix’s “pipes” feature — the ability to use output from one program as the input to another — appears to be unique to Unix, and ultimately led the operating system to a robust set of tools (along with Unix’s support for pattern matching with regular expressions). So credit where credit is due.

Doug McIlroy's famous Pipes memo - screenshot from Brian Kernighan keynote at 2022 Linux Conference Australia

One of Kernighan’s slides described Unix as “riding the curve of Moore’s law,” as he pointed out that an ongoing cycle of ever-cheaper hardware had also created a natural audience for the Unix operating system. So “technology improvements fueled an awful lot of this.”

Ultimately a critical factor in the popularity of Unix was its easy portability — and that was ultimately made possible by Ritchie’s high-level language. The C language led to what Kernighan remembers as “an explosion of applications,” including language-related tools like the compiler yacc and lex. Crucially, it was also used for Steve Johnson’s pcc for “portable C compiler,” which Kernighan remembers as the tool that “led to the portability of the operating system itself.” Because if a new system could run a C compiler, given that it could compile the Unix operating system.

Unix “was not planned. It was an accidental combination of a whole bunch of factors!”

And then beyond that, it was this portability of the operating system — and all of its useful tools — then led to its use in the emerging market for business workstations from companies like Sun Microsystems and MIPS (which went on to become SGI).

In fact, portability eventually led Unix all the way to the IBM PC in the early 1980s, Kernighan remembers, and even a young company called Microsoft had its own version of Unix, called Xenix. “And for a period in the 1980s,” Microsoft was the largest distributor of Unix operating systems.

“I keep thinking, what would the world have been like if Microsoft, instead of going off in DOS, had taken off with Unix? Who knows what would’ve happened?”

The Once and Future Unix

Kernighan’s next slide was titled “The rest is history,” citing claims that Linux is on 100% of the world’s top 500 supercomputers, 23 of the top 25 websites, 96.3% of the world’s top 1 million servers, and 90% of all cloud infrastructure.

But what’s arguably even more interesting is how it happened. Kernighan emphasized that looking back at the early days, Unix “was not planned. It was an accidental combination of a whole bunch of factors!”

At the top of his list of factors were “two exceptionally creative people,” Ken Thompson and Dennis Ritchie. Kernighan acknowledged specifically what he calls their “exceptionally good taste” as developers, finding “minimal” mechanisms which still cleanly accomplished a lot. (Kernighan later applauded their ability to “find the generalities.”)

He added that Bell Labs had also offered “a good supporting cast in a variety of ways,” crediting its management, which he remembered as “technically talented, and typically very very benign. It was not, ‘Here’s what you have to do, and every quarter tell us what you’ve done.’ It was more like, ‘Oh gee, you’re doing that? That sounds really interesting! Why don’t you keep doing it as long as it looks good.'”

Or, as Kernighan told one interviewer in 2018, “It was a wonderful place because there was an enormous number of really good people doing really interesting things and nobody telling you what to do…” As he looked back over at 50 years of Unix, Kernighan recalled Bell Labs as “particularly congenial for this kind of thing.” But he also remembered it as something he doesn’t see as much of today. “The environment itself was incredible, cooperative, collegial, and just a lot of fun.”

And this leads Kernighan to one of his last slides, asking: Could a Unix happen again?

The case for: “Well, first, obviously there are always good people…” And in addition, Kernighan added, “Dilbert cartoons notwithstanding, there are good managers.” He sees hardware today as “dirt cheap,” and there’s also lots of free open source software.

But Kernighan also sees also things working against the possibility of another Unix-like phenomenon. “There are not as many of these unfettered environments where people are simply set loose and told to go and do something that they want to do that might be interesting or useful. It’s hard to do that in industry, because things tend to be short-term. And it’s hard to do that in universities, because — money. But in principle, it could happen again — for something.”

And then Kernighan closed his talk with a beautiful quote from the late Dennis Ritchie, who’d said in 1984 that Unix wasn’t just about building a good environment for programming, “but a system around which a fellowship could form. We knew from experience that the essence of communal computing […] is not just to type programs into a terminal instead of a keypunch, but to encourage close communication.”

Kernighan summarized that hope as providing a community, “a warm and welcoming place to develop software,” remembering that in the early days of Unix people had “enjoyed their work, they enjoyed the people they worked with,” creating a kind of virtuous cycle that led to a productive environment for everybody.

“And so I think what we want to do today is that same kind of thing, where we have that sense of community, that we’re working together to try and do things that will in some way make the world better.”