Dreaming in code
There have been a lot of books that have influenced my career: Fred Turner’s From Counterculture to Cyberculture, Gabriella Coleman’s Hacker, Hoaxer, Whistleblower, Spy, Karl Marx’s Grundrisse, John Law’s Aircraft Stories, and Patricia Hill Collin’s Black Feminist Thought. These works are a kind of well to return to, again and again, to quench intellectual thirsts: thinking historically about communication technologies, and thinking about heterogeneity in the cultures of communication technologies.
But perhaps the closest to my heart, one of the books that came along at just the right moment in my career – a bubbling spring of the well – is Scott Rosenberg’s Dreaming In Code.
Dreaming in Code tells the story of the development of Chandler, an open source, cross-platform “personal information manager.” This software was the brainchild of Mitch Kapor (of Lotus 1-2-3 fame, and the founder of a short-lived non-profit called the Open Source Applications Foundation. While the OSAF was well-funded (to the tune of millions), and while Chandler was eventually built, it was marked by blown deadlines and cost overruns. And the project is now moribund.
In other words, as Rosenberg wryly notes, Chandler is another in a long line of failed software projects. Unlike building bridges, he notes, software engineering is hard.
So, this is not a Goal 1 post, because the software at the center of Dreaming In Code is no longer available. Yes, the website is still live. Yes, the project did get far enough along to be useable. Maybe it could still be used if the code could be put into a container (Snap, Flatpak) – then, it could run in a modern Linux installation. If so, perhaps it could contribute to the #fald (FOSS Academic Lifestyle Dream).
Then again, I’m not sure I would want such old software handling my email and calendars without the latest encryption. The last time I got Chandler to work was around Ubuntu 16.04 (though I may be wrong about the date), and I remember being underwhelmed by it.
There are many reasons why the project failed. Perhaps Chandler failed because it didn’t adhere to the Unix Philosophy (a decidedly Goal 2 topic) – it did not do just one thing and do it well, but tried to do lots of things and thus did them poorly. Indeed, Rosenberg cites Linus Torvalds, who argues that open source production is best done with small goals.
Or perhaps it was too centralized and did not attract a big enough base of contributors. Kapor reportedly threw a lot of money at Chandler, and part of his reasoning was to have his developers largely on-site in San Francisco. The project did not attract, as far as I can tell, a large base of contributors around world. (Indeed, if it had, perhaps we’d be on version 5.0 at this point).
In the end, Chandler has faded out of consciousness, replaced by a whole host of other “PIMs”. The features it largely offers are replicated by email clients – not to mention the monstrosity that is Google.
But tracing the failure of one relatively obscure FOSS project is not the real payoff of the book for me. Dreaming In Code is important to me in a Goal 2 way because it started me out on the path of what I came to recognize as software studies. Although it’s not an academic book – Rosenberg is a journalist and founder of Salon.com – the book is deep and exceptionally well researched. Academics have cited it – including luminaries like Rob Kitchin, Judy Wacjman, and Tim Jordan. Rosenberg’s research is excellent. His endnotes are still online – it’s a wealth of what might be called “classic software studies” citations.
He draws on Donald Knuth, Fred Brooks, Eric Raymond, Martin Campbell-Kelly, Vannevar Bush, Doug Englebart, Ellen Ullman, and many, many more. By tracing these citations, I could get a good grasp on the history of software engineering. Perhaps the most influential citation Rosenberg draws on is the late 1960s NATO conferences on software engineering. Along with Sarah Bell, I myself drew on that conference to write about the engineering of Microsoft Vista as a form of “heterogeneous engineering”.
But there’s more than just a wealth of citations. Rosenberg embedded himself with the Chandler team, watching their struggles and connecting those struggles to the history of software engineering. The chapters often start with an episode in the development of Chandler – say, a debate over which programming language to use – which is followed by a deep dive into the history and politics of programming languages. At times, readers might find these too much of a diversion from the story of Chandler. Indeed, Rosenberg’s next book, Say Everything, tends to avoid these sojourns. But I really, really dig them. The discussion of the NATO conference, for example, was just a great bit of history that prompted me to go and learn more about it.
In addition to placing Chandler into a larger historical context, Rosenberg is also a compassionate, but critical, student of the history of Chandler. It’s a model of analysis of the people and technologies that go into software engineering, told in a beautiful narrative style that I would aspire to myself, and again, the citations are rich.
I find myself returning to Dreaming in Code again, and again, over the years. The first time I read it, in fact, I was so enthralled that I was nose-deep in it while my partner was giving birth to our son (at one point, she knocked the book out of my hands and said, “no more reading!”). I remember this in part because my Zotero note is dated the day before my son’s birth. As I set off on a new project – my Goal 2 project – I have decided to return to Dreaming In Code. And I find myself at the well, again, and it is definitely not dry.