Remembering Roger Faulkner: UNIX Champion
As the year ends, it’s traditional to look back on what’s changed, and one of the things I’ll always remember is the fondness and respect that swelled up when the world lost UNIX pioneer Roger Faulkner at age 76.
In a USENIX memorial, Joyent Chief Technology Officer Bryan Cantrill remembered his former co-worker at Sun Microsystems as “the godfather of post-AT&T UNIX,” adding that “Over his four decades in the UNIX kernel, Faulkner served not only as keeper of the Bell Labs flame but also as the inspiration of an entire generation of kernel engineers.”
Cantrill noted that Faulkner’s “true love” was /proc, which is the API for Unix’s process model (implemented today as a virtual file system on Linux deployments):
“Roger believed that terrible things were sometimes required to create beautiful abstractions, and his trailblazing work on /proc embodies this burden: the innards may be delicate and nasty (‘vile,’ as Roger might say in his distinguished Carolinian accent) — but the resulting abstractions are breathtaking in their power, scope and robustness.”
Valerie Fenwick, now a software development manager at Oracle and another former co-worker at Sun, collected other memories that were shared about Faulkner online. She even linked to a memorable comment Faulkner left in some C code, shared by programmer Peter Memishian, who remembered it as an example of how Faulkner “wasn’t afraid to speak his mind when necessary.”
* This is a horrible kludge. It is vile. It is swill.
* If your code has to call this function then your code is the same.
In mid-December, at the first Systems We Love conference, software engineer Adam Leventhal remembered Faulkner as “a great systems engineer,” saying he’d worked with him on /proc at Sun Microsystems. Leventhal was introducing the conference’s first talk — about the /proc filesystem — which was given by Joyent software engineer Ryan Zezeski. Zezeski listed out some of the heroes from the early days, that glorious bygone of UNIX, “the old-school” people from “the Live Free or Die” era of “the all-capitals UNIX”.
Zezeski told the long-ago story of how Faulkner worked with many of the greats (including Ken Thompson and Dennis Ritchie) in “the Attic” — the hallowed area of Bell Labs’ “Building 2” in Holmdel, N.J., where Unix first came to life. Unix eventually moved to the Unix Systems Laboratory spin-off in the 1980s, finally arriving at Sun Microsystems in 1990.
In the early days of Unix, you could only trace child processes — and the child process had to opt-in to the tracing. The API was awkward to use, and signal tracing was also continuous, which really hurt performance, according to Zezeski. Faulkner and fellow /proc creator Ron Gomes began building on the work of T.J. Killian, who had created the proc file system for Unix version 8 in the mid-1980s to replace the ptrace system call used for process tracing.
“Roger Faulkner and Ron Gomes ported V8 /proc to SVR4, and published a paper called ‘The Process File System and Process Model in UNIX System V’ at USENIX in January 1991…” reads the official history on Wikipedia’s page for procfs. “Between 1995 and 1996, Roger Faulkner created the procfs-2 interface for Solaris-2.6 that offers a structured /proc filesystem with sub-directories.”
Live Free or Die
But behind the achievement was a man who was very much admired and appreciated. “Most people have never heard of Roger,” Zezeski told the crowd, “but he was very much a part of the ‘Live Free or Die’ spirit, both in terms of the way he behaved and the way he held himself, and the contributions he made to Unix.”
Faulkner’s legendary outspokenness also crept into some of the memorials. Valerie Fenwick wrote, “He was an amazing colleague with a wry sense of humor and will be missed. Most folks remember him as that really smart guy that was tough on the outside and sweet, gentle and kind on the inside.”
“Roger did not care how senior the engineer (or management) was — he would not let them get away with things that would hurt UNIX or Solaris. He was also always willing to answer questions, do a code review, or help debug an interesting kernel dump. I learned a great deal from him — how to be a good engineer, how to do an excellent root cause analysis, how to know when a bug is really, truly fixed.” — Valerie Fenwick
And there was another inspiring memory shared by kernel developer Sherry Q. Moore, who wrote on Facebook about the things she’d learned from Faulkner.
- You can be brilliant and kind.
- “If you don’t have time to do it right, when will you have time to do it over?”
- You can be creative and productive for as long as you want.
- “When you are about to do a putback, if your heart is not pounding, palms not sweating, you shouldn’t be doing this (be a kernel engineer) anymore.”
Falkner’s official obituary suggests the details of a rich and colorful life: “He was born to Ruby and Roger Faulkner on April 8, 1940, and was raised on a small farm in Asheville, North Carolina…” It reports that after receiving a Ph.D. in Physics at Princeton, Roger “fell in love with computers and never looked back.”
Traces of Faulkner’s sense of humor seem to have found their way even into this official announcement. It remembers him as a “kind, gentle, and generous man (and yes, sometimes gruff), who was a genius computer geek, and a master popcorn popper and paper airplane maker extraordinaire.”
And for his memorial service, the notice reminded attendees that “Roger once hung up a sign that read ‘Nobody trusts a well-dressed engineer.’
“So, please dress casually.”
In memorials, Faulkner was almost always described himself as simply “a computer programmer” — and his co-workers say that he truly relished that role. “I was lucky enough to meet Roger when I worked at Bell Labs, also in the UNIX group,” remembered one former co-worker. “I always thought he had the best work hours, starting later in the day and working well into the night.
“Rest easy, Roger. ”
When the folks at USENIX heard that Faulkner had died over the 4th of July weekend, they scanned Roger’s original 1991 paper describing /proc, written with Ron Gomes, and made it available online. “Roger’s voice is clear and distinctive in this paper,” Bryan Cantrill wrote. “He is on a self-described ‘mission from God to create the one true debugger,’ and his focus and zeal are infectious.
“There is no truer way to remember Roger than to read (or re-read) this work; may it serve to inspire a new generation in the same way that Roger inspired so many of us who had the privilege to know him.”
RIP Roger Faulkner: creator of the One and True /proc, slayer of the M-to-N threading model — and the godfather of post-AT&T Unix
— Bryan Cantrill (@bcantrill) July 5, 2016
And Zezeski’s talk had ended by describing the passion Faulkner had felt for both Unix and Solaris. “He didn’t want anyone to harm it. He wouldn’t let management ruin it. He wanted to keep it in control of the engineers and make sure it didn’t get ruined… And he was always willing to help people who wanted to help Unix….
“He may not be with us anymore, but I think his code and stories keep his spirit very much alive.”