Software utopianism in a flawed universe

“I believe in the power of good
I believe in the state of love
I will fight for the right to be right
I will kill for the good of the fight for the right to be right”
- David Bowie, The Cygnet Committee

Whenever I post about how I think software should be designed, I get called naive. Sometimes I’m told that what I propose isn’t technically feasible (even when what I describe has already been successfully implemented), but more often, I am told that existing social structures prevent my goals from being adopted at scale.

Sometimes this is true.

I sympathise with people who write bad code with bad technologies for work, and have no say in important technical decisions. (I am, of course, also often in this boat.) I don’t think that negates the importance of clearly imagining an ideal condition and working toward it.

We live in a world that constantly asks us to lower our standards. We build industries off toy technologies while ignoring theoretically-solid ones. We get told “worse is better” often enough that we almost believe it.

Nevertheless, our ability to implement better systems is limited primarily by our willingness to imagine them, and as our technical tools have gotten increasingly more expressive, imagination has become even more of a bottleneck. In 1992, it was reasonable to claim that the web was a reasonable concession to hypertext given the deadline; today, it is far easier to make a real hypertext system than a standards-compliant web browser (let alone a usable one).

Better systems aren’t necessarily more widely adopted. This might matter in the context of a business, but business has no place in utopianism: the pursuit of money is not fully compatible with making the world a better place, and when the two conflict, the pursuit of money should lose. With business concerns out of the way, there’s no reason for adoption to be maximized.

Out of all of the utopian rhetoric circulated about the internet in the early 90s, one piece remains true: communities form based on shared goals, interests, and norms, regardless of geography. Build a better world in a pocket of cyberspace, and build it with your friends. Start a revolution in the style of bolo’bolo — by building an alternative to the monoculture and letting people visit. Taking over the world is neither necessary nor desirable: anyone who likes your system can adopt it on their own.

Every alternative to the mainstream, no matter how small its community, demonstrates that another world is possible. Every alternative demonstrates new possibilities, which can be adopted piece-meal by others. Small scale isn’t a liability, here: the stakes are low, and so experimentation is possible.

As a practical utopian, I recommend a three-pronged approach to saving the world:

  1. Whenever possible, make good decisions and avoid bad ones.
  2. Whenever possible, explore alternatives, both conceptually and experimentally, alone and in groups.
  3. Whenever possible, remind people that “the way things are” is not inevitable, and that drastic improvements are still possible.

Attempts to improve the world are worthwhile even when they fail. The alternative — accepting what we have — is untenable.

Written by

Resident hypertext crank. Author of Big and Small Computing: Trajectories for the Future of Software.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store