Correction to: “Set the WABAC machine…”

Henry Spencer, upon reading my previous post, had this to say by email:

I won’t argue with Eric about the significance of that little event, but I do have to interject a few corrections about the historical details.

For this, I’ve got a couple of advantages over him. First, being somewhat of a packrat, I still have my notes from conferences 30+ years ago! (Not in digital form, alas.) And second, being the one who saved most of what we have of Usenet’s early days, I also have some relevant old Usenet postings to consult.

The precise date was 19 January 1984, in the second morning session of the Uniforum conference (a joint meeting of the Usenix Association and the /usr/group trade association). Kathleen Hemenway of Bell Labs gave a talk on work she and Helene Armitage had done: “A proposed syntax standard for UNIX system commands”. This was basically an attempt to codify and slightly tighten the rules already implemented several years earlier by AT&T’s getopt() library function.

As you might gather from that wording, getopt() wasn’t actually new then: it had existed within Bell for some time, but hadn’t made it out in any widely-available Unix release. In late 1981, I’d seen a Bell-internal Unix manual page describing it. I wanted it, and I couldn’t have it, so I wrote my own. It was indeed quite helpful, and on 11 Jan. 1982, I posted it to Usenet newsgroup net.sources. By the time of that conference, a fair number of people were using it.

Ms. Hemenway’s talk was mostly about the syntax issues, but she did mention that there were plans for enhancements to getopt() to help support the new spec. And during Q&A, she was indeed evasive about availability of the enhanced code — probably nobody had made any decisions about that. So I got up and said that I would upgrade my public-domain implementation to match any enhancements AT&T made. Didn’t seem like a big deal; to be honest, I was a bit surprised that it got cheers and applause. I guess a lot of people hadn’t yet grasped that we *had a choice* about this.

No…no, we hadn’t. And my having got the date wrong explains the particularly high anxiety about the Bell breakup; the consent decree would have taken effect not nine months previously but just eight days before.

Ever since, on the occasions that I remembered this before returning to a busy life, the second or third thought in my mind was always that I ought to find Henry and let him know what an influence he had on me in that moment.

Henry Spencer, you set an example that day for all of us, and we cheered you not for promising to write a few lines of code but because we heard the call behind the promise. The details grew dim in my memory, but the power of that example struck me again each time I recalled it. Value your craft and pursue excellence in it; share what you create; never fear to go up against a monopolist; be loyal to your peers in the work. This is how a hacker – how any kind of maker, really – does his duty to the future.

A lot of us have been trying to live out that lesson ever since. Thank you, Henry. I think the world owes you more than it knows for that inspiration.

3 thoughts on “Correction to: “Set the WABAC machine…”

  1. I wanted it, and I couldn’t have it, so I wrote my own.

    This response, whether you watch someone else achieve it or do it yourself, is kind of a watershed moment. For me, it was an upgrade to my first 3D printer: I knew what the part would have to look like, and the moment when I realised I could make parts for the printer on the printer itself was unique. I’ve known people to do that in blacksmithing/machining when they first discover they can use their tools to make more tools that add value to their work environment. And here, deciding to just go ahead and write an implementation of getopt() seems in the same vein. Your self-reliance becomes a hacksaw you use against your supply chain to trim off links you don’t need, be they printer parts, forge tools, or utility function.

  2. Two quick comments.

    1) I wish Henry’s archives of the early days of Usenet were to reappear somewhere, say at, because Google has proven a poor custodian. Google groups used to contain a wonderful, easily searched record of Usenet’s first fifteen or so years, but that is no longer the case.

    2) Weirdly, option parsing continues to be a fairly ugly thing even to this day. I’ve seen many option parsers over the years, and none of them is particularly satisfying.

Leave a Reply

Your email address will not be published. Required fields are marked *