Tuesday, June 30, 2020

Bill Shannon RIP

Last Thursday my friend Bill Shannon lost a long battle with cancer. The Mercury News has his obituary. I thought to create a Wikipedia page for him as I did for my friend John Wharton. But, true to Bill's unassuming nature, he left almost no footprint on the Web. The lack of reliable sources attesting to his notability made such a page impossible. The brief account below the fold, compiled with invaluable assistance from many of his friends, will have to do instead. Comments with memories of Bill are welcome.

The image is Bill's card from the deck of playing cards the Usenix Association created for the 25th anniversary of the Unix operating system in 1994.

Bill started programming early, spending hours in the computer lab at his high school, and with a Boy Scout group that used computers at NASA's Lewis Research Center in Cleveland.

He graduated from Case Western with a Masters in Computer Engineering. His 1981 thesis involved a significant degree of difficulty: porting Unix V7 to the Harris/6, a 24-bit word addressed machine with a 18 bit address space and a 16 bit program counter. He used a compiler built by Sam Leffler for his companion thesis, and the shell ported by Rob Gingell.

He joined Digital Equipment's Unix Engineering Group with Armando Stettner. They worked on bringing up AT&T's UNIX/32V and 4BSD on Vaxen:
Shannon and Stettner worked on low-level CPU and device driver support initially on UNIX/32V but quickly moved to concentrate on working with the University of California, Berkeley's 4.0BSD. Berkeley's Bill Joy came to New Hampshire to work with Shannon and Stettner to wrap up a new BSD release, incorporating the UEG CPU support and drivers, and to do some last minute development and testing on other configurations available at DEC's facilities. As an aside, the three brought up a final test version on the main VAX used by the VMS development group. No comments were heard from the VMS developers whose terminals greeted them the next morning with a Unix login prompt... UEG's machine was the first to run the new Unix, labeled 4.5BSD.
Tim Bray was there:
The DEC Unix group was pretty small; it featured the talents of Armando Stettner and Bill Shannon. They ran this one big VAX that was really central in the UUCP what-came-before-the-Internet network, called decvax. Bill, a classically geeky redhead, held our hands and helped debug the customer's weird ioctl() calls and get the thing running,
decvax was really important and it was Bill and Armando's baby:
Name of site:

What the site is all about:
 Main system for the DEC Unix Engineering Group

Name of contact person at site:
 Bill Shannon

Electronic mail address of contact person:

U.S. Mail address of contact person:
 Bill Shannon
 Digital Equipment Corporation
 Continental Blvd.
 Merrimack, NH  03054
decvax was key to the explosion of UUCP networking and USENET news groups:
The explosion was the direct responsibility of Armando Stettner and Bill Shannon of Digital Equipment Corporation. Someone at the USENIX meeting complained about the telephone bills run up by transcontinental calls. Armando and Bill said that if they could get a feed to decvax in New Hampshire, they'd pick up the Berkeley phone bill. (Stettner subsequently covered the news feeds to Europe, Japan, and Australia.)
Courtesy of Karen Shannon
This all led to the classic New Hampshire "Live Free Or Die" UNIX license plate:
Shannon's New Hampshire "Live Free or Die" Unix license plate has become not only a geek icon, but a rallying cry for people who related to the source-code-sharing ideas that helped Unix spread.
While working at DEC he met Bill Joy, and was eager to become employee #11 at Sun Microsystems. He was a fixture there through its entire history, and was one of the survivors when it was acquired by Oracle.

Courtesy of Karen Shannon
When Bill and Karen moved to the Bay Area they discovered that the license plate UNIX was taken, so he upgraded to the blue California VMUNIX license plate that adorned his M-series BMWs.

Starting in 1982 Bill Shannon was largely responsible for transforming Bill Joy's special pre-release of  4.2BSD (called 4.1c) into the first version of SunOS. He also made significant contributions to the virtual memory code of 4.2. Shannon had a VAX/750 to run 4.1c on while porting it running to the Sun/1. The rumor is that Shannon asked for the VAX/780 he was used to but Joy said a /750 is all you get - I want you incentivized to get a Sun/1 running it faster than the /750 ASAP. I was an early user of Shannon's work when I joined Carnegie-Mellon's Andrew project.

His work led to the immortal kernel panic() that Tim Bray encountered:
My only contact was once in 1988, standing in front of a Sun box at the University of Waterloo when it crashed, the console printing out Shannon says this can't happen.
Among Bill's contributions was C Style and Coding Standards for SunOS. The abstract provided an elegant justification for venturing into this often controversial area:
This document describes a set of coding standards and recommendations that are local standards for programs written in C for the SunOS product. The purpose of these standards is to facilitate sharing of each other’s code, as well as to enable construction of tools (e.g., editors, formatters) that, by incorporating knowledge of these standards, can help the programmer in the preparation of programs.
Bill was perhaps the central figure in the activities at Sun that evolved Sun UNIX to SunOS and onward. He was the anchor of the culture Sun developed that led to an extremely productive and creative period in which Sun emerged from start-up to industry leader. He was the primary author of few papers, but was an author/contributor to the work many of those papers described. At the summer 1987 Usenix conference this was captured best in his public acknowledgement by Howard Chartock as the "Sheriff of Kernel County", intended as a label of respect and admiration. He was a leading light of the group of SunOS Distinguished Engineers through the AT&T deal that, after years of struggle, merged it with System V to create Solaris. Bill then led the effort to re-target Java to be an application server environment as Java EE.

I have Scott McNealy's permission to quote what he wrote to Bill:
There are 235,000 former Sun folks and countless others who partnered with us in the amazing journey we had. There are a few who were there at the beginning and created the culture that was unique and special to the Valley and to Tech. You were a defining cog and driver of that culture. Your modest, soft spoken but determined voice for what was technically right, economically right, but more importantly what was humanly right was always there at just the right time and tone.

It is no exaggeration to say your influence on the Valley and Tech is oversized and under appreciated, though us Sun folks know what you have done for us all. And no one feels more gratitude for your contributions than me. Always in awe of your tech prowess and prolific work ethic. And your loyalty to all of us.

I am proud to say I worked for you. And learned from you.

Your efforts will live beyond us all. Sun culture has spread everywhere internationally. Our technology still drives the network computing landscape. And your work and impact will outlive all of us who worked at or with Sun.
An enduring mystery surrounds the identities of the perpetrators of Sun's notorious early April Fool's pranks, such as:
  • Eric Schmidt's office in pond (1985)
  • Volkswagen in Eric Schmidt's office (1986)
  • Bill Joy's brand new Ferrari in pond (1987)
  • Golf course in Scott McNealy & Bernie Lacroute's offices (1988)
But there are press reports placing Bill at the "scenes of the crimes".

When I joined Sun in September 1985 to work on window systems with James Gosling I was immediately inducted into the Thursday "windows lunch". Bill was a founding member of this group of engineers, which was initially devoted to complaining about (and trying to improve) Sun's vestigial early user interface.

'86 trip courtesy of Rob Gingell
In the early days, the "windows lunch" also organized an annual ski week at Vail. Part of the ritual was the drive from Denver to Vail and back in a pair of rented Lincoln Continentals. Somehow we believed they were the ideal vehicles to tackle snow and ice. These trips were a testament to Bill's driving skill.

More that a third of a century later five of us are still meeting for lunch every Thursday, no longer talking much about user interface systems, and now greatly missing Bill.

The subject line of Bill's farewell email declared:

 public static final void goodbye() { /**NORETURN*/ }

Update: 4th November 2021:
Porting Unix
Rob Gingell had been looking for this photograph, entitled Porting UNIX, for some time but recently Karen Shannon found it. Rob explains that it shows:
the movement of Bill and Sam Leffler's thesis work on UNIX/24V from a building at Case where the machines they were using were being decommissioned to another building which had machines they could use.

In addition to the DECwriter on the front of the handtruck, there was also a disk drive. Sam's carrying the disk packs for the drive, with Bill on one side of the DECwriter, me pushing the truck and bracing the disk drive from the back. Scott Witzke (a nephew of Don Knuth) is on the other side of the DECwriter and to the far back is Ken Hall.
It appears likely that the photographer was Mike Kukura.

Update 10th June 2022:

Karen Shannon discovered Bill's amazing collection of buttons. This is just a sample.


Unknown said...

Back in about 1986 AT&T was developing a Unix workstation and they brought a prototype into a conference room in Hardware Engineering on the first floor of Building 1. The AT&T guys couldn't even log in, and someone said "Get Bill Shannon, maybe he can log in." Bill comes in, sits down, and successfully logs in as 'shannon'. The AT&T guys jaws hit the floor. Bill pokes around the file system for only a few minutes, and the system crashes. The AT&T guys say ruefully, "That's why we need you."

-Jim Ludemann

Unknown said...

Ouch. Oddly, I happened to be talking tonight with some old hacker pals, and one mentioned that he had just read about Bill's passing. Armando and Bill were a dynamic duo.

Andy Tannenbaum *!trb (not the Minix one)

Unknown said...

Look at what I stumbled upon on the man page for GNU indent, a program that formats C source code:

"The ‘-bs’ option ensures that there is a space between the keyword sizeof and its argument. In some versions, this is known as the ‘Bill_Shannon’ option."

Good to know his relationship with this specific choice of style. Very interesting person. RIP.

[1] https://linux.die.net/man/1/indent

Doug Merritt said...

I just belatedly stumbled over this sad news.

Bill was a great guy, both personally and professionally; it pains me that I will not be able to get to know him better as I had always wished.

His (various) work made the world a better place, which is famous but not as famous as he and it deserve.

I still have a copy of his (in-)famous UNIX license plate, via Armando -- my favorite humorous collectible.

A copy of his May 30 2020 farewell message ( "Subject: public static final void goodbye() { /**NORETURN*/ }* ) can be found in the TUHS archives (appropriately: The Unix Heritage Society):


He ends that with the wonderful sentiment "I love you all and can't imagine a world without all of us in it."

It would be nice to see this memorialized somewhere on top of being archived.

Reza's tribute to Bill:

Mercury News obituary:

-- Doug Merritt

Steve Pate said...

Very sad to read about this.

I'm writing a book about Linux filesystems. In the introduction I'm covering my own history with UNIX/Linux and was writing about a time when I was at SCO, I invited Bill, Linus Torvalds, Michel Gien (Chorus Systemes) and one person from Mach whose name escapes me, to SCO Forum to do a panel on the future of operating systems. I think it was 1995. We had a great session. Bill was such a nice person and spoke well. It was also the first time Linus had been to the US.

I was writing about mmap() and dug up the old SunOS paper. I'd forgotten that Bill co-authored this paper.

I think his car plates certainly started something. My old friend Paul had ENOMEM and my good friend Kelvin has ENOGAS on his Tesla. Well done Bill!

Steve Pate

Acceptable said...

Your post says "Starting in 1982 Bill Shannon was largely responsible for transforming Bill Joy's special pre-release of 4.2BSD (called 4.1c) into the first version of SunOS."

4.1c.1 BSD on the CSRG ISO is full of "#ifdef sun" and "#ifdef mc68000" and "#ifdef M68K"

There is also code for three system calls:
unmount(2) system call àla SunOS
swapoff(2) system call àla SunOS
swapon(2) system call àla SunOS -- instead of vswapon(2)

All of that was removed just before 4.2 BSD was released.

The SCCS comments still remain and SCCS has the removed code in it.

SCCS commit comments:
“add SUN device definitions”
“add d_mmap (from 68k)”
“add keyboard and mouse ioctls (for sun)”
“bugs in #ifndef vax stuff (from 68k)”
“combine with 68k”
“combine with sun”
“first version with 68k stuff”
“first version with 68k”
“fixes between d's and c's from 68k experience”
“fixes from 68k for NOPAGING”
“fixes from 68k, still messy w.r.t. tlb in ptexpand”
“fixes from 68k”
“split into machine dependents in ../vax ../sun”

The CSRG ISO also has files that are not committed to version control, e.g. "files.sun".