Twitter launches features no one wants. Parse shuts down. Websites track us to an astonishing degree. Corporations close down open systems. They turn over our data to the government.
Software and services that are supposed to make life better are becoming unreliable and untrustworthy. It is increasingly clear that our interests, as software-using humans, are diverging from the interests of software companies.
I am coming to the conclusion that we simply can’t rely on corporations to produce and maintain great, reliable, human-centered software. The systems and incentives are in direct conflict.
In my mind, one of the core problems is a lack of agency. If Twitter or Facebook push out a feature that is destructive to the way we use their services, or they refuse to create tools that are plainly necessary, we can do little but complain. As individual, non-paying users, we have virtually no leverage.
There’s also a lack of agency on the building side of the things. With open systems, we have the opportunity to create and run our own variants of systems that better suit our purposes. When APIs and app stores are tightly controlled, even our ability to usefully augment the system is curtailed.
So, short of overthrowing capitalism, what can we do?
Amidst the pessimism, I do think we still have a chance to build a different path. The only way to meaningfully diverge from the existing trends is to consciously embrace new values and different constraints. To that end, here are a new set of principles:
The community should have final say.
We need to reintroduce agency. Each particular community (not necessarily the entire user base — more on this later) should be able to decide if they want to accept the latest update of a given service or not. If a community cannot shape systems to reflect their values, those systems are flawed.
Scale is a trap.
So much of the complexity of web engineering comes from questions of scale. But why do we need scale? If we are trying to build humane software, there are significant benefits to keeping things smaller and simpler. If you want to run something for hundreds of people–or even thousands–that is entirely sustainable on a single cheap shared server…. (((etc etc)))