(Probably) no new letters for the rest of this year — going to take a holiday break. Thanks for subscribing and reading this newsletter, and you can find more of my writing at https://blog.nelhage.com/ if you’re feeling deprived :)
For this week, something a bit different — some thoughts on an essay from 2004(!) that I encountered for the first time this year and which really resonated with me.
In 2004, Clay Shirky wrote about a phenomenon he labelled “situated software.” He used the term to refer to “software designed in and for a particular social situation or context,” citing several examples from his students and other communities in and around NYU, where he was teaching at the time. Situated software, as he described it, was specialized to some pre-existing social structures and context, and bootstrapped on those structures to serve roles and accomplish purposes within that community that would be challenging to scale to “web scale.” Shirky made the prediction that over time we would see more of this situated software, built by specific communities for their community, instead of or along side larger, mass-scale, social platforms.
I first read his essay earlier this year, after Hillel Wayne referenced it in his newsletter, and it really struck me for a few different reasons.
First of all, I strongly recognized the culture he was describing at NYU, rife with purpose-built software that was deeply embedded in the local social structures. His descriptions very precisely characterized my undergraduate experiences at MIT (I was there 2005-2009, shortly after he wrote this essay). The student culture I existed in at MIT produced and made extensive use of a huge amount of purpose-built software to support local student groups and activities. There was the vending machine on one dorm floor that had been jury-rigged to maintain student balances which could be charged using your student ID. The servers in another dorm that reported occupancy status of the bathrooms or which laundry machines were running at any given moment. An entire chat client (which I was in part responsible for) used essentially only by a specific subculture at MIT. A custom website I hacked together for me and ~6 friends to collaboratively track our progress towards ascending in NetHack. Literally hundreds of other examples.
However, despite this dynamic feeling so personally resonant from my undergraduate days, and despite the continuing ease of development and deployment of web applications, it feels like — from where I’m sitting now — Shirky’s prediction could hardly have missed the mark further. This kind of purpose-built social-context-specific software is nearly entirely absent from my life these days. I live in San Francisco, heart of the tech world, and my social groups are, if anything, even denser with software engineers than when i was student, so it’s not like we lack the knowledge or capabilities. Many of my friends devote huge chunks of time to open-source projects or other free-time software projects, so I’m not sure a “we grew up and got too busy” theory holds up, either. Perhaps the closest thing I can think of to an example in my contemporary life is CrossMe, a collaborative crossword-puzzle application I built in a hackathon and (somewhat grudgingly) continue to maintain.
Meanwhile, of course, Facebook, which was just barely getting founded when Shirky was writing that essay, has grown to be completely all-consuming, and it’s virtually impossible to leave while remaining an active part of one’s communities, for most people.
(While searching for recent references to this concept, I found Hillel’s previous article, as well as a piece by David R. MacIver. While I think these are both interesting, in my judgment they expand the notion of “situated software” beyond the specific core idea in Shirky’s original piece, which focused on software situated in a pre-existing social context and exploits that social structure; I read both of these pieces as talking a bit more broadly about software that is specialized for any particular niche)
What happened? Why did this phenomenon that Shirky identified and which rings so familiar to me from my undergraduate years, end up being so much less of a phenomenon than he expected? I have at least three hypothesis, which probably all interact to some extent.
It seems relevant to me that Shirky was talking about a student community at NYU, and I recognize a very similar dynamic from student communities at MIT. Student communities are unusually dense and isolated social networks; the same networks of people typically live near each other, work together, and also socialize and interact together. They’re also comparatively closed; when you’re a student in these contexts, it’s often the case that nearly all of your friends, and even your friends’ friends, are also students and members of the same social fabric and university, in a way that stops being true once students move out into the wider world. This creates unusually clear and tightly-connected groups to build on top of, and also interacts with my next point about identity. Indeed, several of Shirky’s examples were physically embedded in the ITP lab in some way; that’s much harder to do when your social groups sprawl across San Francisco and the whole Bay Area.
Thinking back to applications I wrote at MIT, one huge difference that stands out compared to hacking together a weekend project for friends now: the ease of authentication and managing identity. Everyone at MIT — students, faculty, staff, even recent alumni — had an Athena account, which included a Kerberos identity, and also X.509 certificates issued from MIT’s CA. It was almost trivial to authenticate an MIT user using Kerberos or MIT’s CA, and because everyone had well-known usernames in this common namespace, it was just as easy to tie together offline and digital identities.
This feels like a small detail in some ways, but I think its impact may actually be huge. Implementing authentication for a random webapp is an enormous pain today. Integrating with Google or Facebook (… or Github or Twitter) OAuth eases the burden somewhat, but is still far more complex than the ~4 lines of Apache configuration we needed at MIT. And even once you’ve done so, it’s hard to keep track of all of your friends’ myriad online identities in order to grant appropriate access (e.g. many people have multiple gmail addresses they use for various purposes, and it’s hard to figure out which one to invite). And a single identity provider rarely suffices; In any sufficiently large group of friends, I’ve found there’s someone who has deliberately opted out of having a Facebook account or a Google account.
Back during when Facebook decided they were a “platform” for a hot second, I was briefly hopeful that Facebook might come to serve this role — as an easy-to-use authentication provider that made it easy to tie together offline and digital identities in a consistent way, and thus become a platform for this kind of small-scale ad-hoc social software, but that has clearly not played out, for many reasons.
One way to test this hypothesis would be for something like Glitch to grow really use-to-use drop-in authentication. Would that contribute to a new renaissance of situated software?
One final theory is that the general class of collaboration tools have gotten good enough to supplant most of the use cases for which we would have written software. Why built an app to track something, when a simple google sheet or Paper doc or Airtable base works just as well?
As one concrete piece of evidence, I think about the history of team software for MIT Mystery Hunt teams I’ve been on over the years. For a long time, every team of any size had a large custom application for coordinating solving and tracking progress through the Hunt, often including custom-built realtime collaboration tools for chatting, working on text grids or lists, and so on. And while many teams still do have such software and continue writing it, I’ve also increasing see teams just delegating most of the work to Google sheets; one team I hunted with recently ran entirely out of a set of Google sheets, a Slack instance, and some Zapier automations, with a tiny bit of custom glue at the edges. On a different note, my weekly Zoom tabletop during the pandemic runs entirely out of a set of Dropbox Paper documents. Ten years ago, it’s easy for me to imagine us building custom software to aid in a virtual tabletop, at least in part, but now we don’t even consider it because Paper is good enough.
I’m not really sure. I’m definitely nostalgic for a lot of the world where I and my friends built our own social software, but I’m less sure what to make of it on the whole. I’ve got at least perspectives on the change, one viewing it more negatively and one more positively.
This shift, from one perspective, is just part and parcel of the general shift in software and computing towards megacorps, and away from user control. Even as more software is released as open-source than ever before, users (even sophisticated users) have steadily lost control over their own software and computing environments, and we’ve shifted towards everything being built and controlled by a shrinking number of massive corporations. Shirky’s essay could be seen as a hypothesis that (certain) kinds of social software were different, and that the economies of leveraging existing social structures could beat out the economies of scale gained by building web-scale tools. It turns out he was wrong, and social tooling has gone the way of everything else, and it’s frustrating and also maybe responsible for the ongoing decay of social trust, institutions, and democracy, but that’s just how it turned out.
On the flip side, though, if I look at my third explanation for why that world didn’t come to pass, I can see a much more optimistic view about the world we’re living in. 10 years ago, this story goes, if you wanted to collaborate with friends online in a novel way, you probably had to be or know a software engineer, and maybe even had to be an MIT student with access to their computing infrastructure; Today, on the flip side, Google Sheets and Dropbox Paper are Good Enough, and can probably support your use case, with real-time collaboration, strong access controls, and a whole smorgasbord of features a single student-built project never would have gotten around to. The general purpose tools have successfully democratized online collaboration and communication, and whatever else the costs of the world we’re living in, that’s genuinely exciting; computers and the internet are continuing to enable everyday users to do what was once impossible or prohibitively expensive, and there is cause for optimism amidst the doom.
I see a lot of merit to both views. Certainly as I’ve written this piece, which started out as some reflections on my personal experiences and journeys with social computing, it feels like this story is really just part and parcel of the trends of computing over the last N years. The trends are everywhere and have very real and substantial positives and negatives, and the full story is yet unwritten.
I still want someone to fix the authn situation for the open web, though.