Technology Isn't Neutral - A Manifesto For Radical Software Development

Technology is a force multiplier, it's the infrastructure that shapes our world. And we, as software developers, are at the helm; we build that technology, and ultimately decide how it gets built. We are in an immensely powerful position, often unknowingly and unintentionally deciding who has power over whom, and it's high time that we collectively start taking our responsibility for that.

There's no shortage of crises affecting communities the world over; wealth disparity and outright poverty, climate and environmental destruction, tax evasion, right-extremism and fascism, racism and many other forms of discrimination. As software developers we often end up being fairly unaffected by these due to our privileged position in society, all the while we are building systems that make them worse. This needs to stop!

We need to stop building software that enriches our employers. We need to stop building software that invades people's privacy, and puts them at risk of harm or even death because we didn't bother to think through the long-term implications of our design choices. We need to start building software that is designed to benefit its users, their agency, their privacy, their self-determination. Software for the people, where the primary goal is making people's lives better, unconditionally, and not just as some hypothetical side-effect hastily drawn up by the marketing department. Radical software.

We need to start saying "no" to our employers when they ask us to implement harmful or ignorant systems. We need to start saying "no" to building advertising systems, whose purpose is to manipulate and coerce. We need to start saying "no" to building features that let our employers monopolize the world - or, even, start saying "no" to building things for an employer at all. Why not start a cooperative workplace, for example?

Free and open-source software isn't enough. Licenses aren't enough. They are an important legal workaround, for opting out of an oppressive copyright system that ultimately only benefits the wealthy - but they are neither the right place nor the right tool for enacting radical change. That needs to happen on an organizational and community level, and we should look towards anarchist principles for this.

Radical software development means:

  1. Building for the people, not for corporations. Our projects need to be driven by what people actually need, and we need to talk to people to learn what that is! Without prejudice, and without assumptions. Communication is key.
  2. Explicitly involving people from marginalized communities in the design process, and trusting them to know what is best for their community. Not designing for a target demographic of "other software developers". Maximizing accessibility in every sense.
  3. Rejecting the ideology of capitalism[1] in any form. Capitalism is a fundamentally oppressive and unsustainable ideology - it's the tyranny of the wealthy over the poor, and will perpetually try to extract resources to that end. It has no place in radical software development, which should be about equality above all.
  4. Continuously involving the community - not just those who are already using the software, but also those who might find it useful in the future! Not everybody needs every piece of software, and that's fine, but the community should always remain open to newcomers regardless of whether they 'fit the mold'.
  5. Acknowledging the important work of those who aren't programmers. That includes graphical artists, writers, translators, and even users filing issues! Code is just a means to an end; merely being a programmer does not make one more important than any other participant in the project.
  6. Ensuring complete independence, and rejecting both explicit and implicit strings from capitalist powers. That means no commercial advertising, no "sponsorships", no dependence on corporate core developers, no premium plans, no "open-core" licensing, and so on. Projects must be owned and operated by the people, forever, in full.
  7. Extending this liberation to our (virtual) means of production; it's not enough to liberate our own projects. If we build our systems using capitalist or closed tools, or our communities live on a closed platform, we're still subject to oppressive structures of power! Our tools and platforms need to be radical, too.

As radical developers, we have a major advantage; we don't need to satisfy some faceless shareholder, clueless middle manager, or greedy CEO. We can build what people truly need and want, without compromises and without being constrained by commercial targets or what's considered "economically feasible". We can actually leave the world a better place than we found it! All we need to do is start organizing.

Unlike many manifestos and open letters, you cannot sign this one. To show your support, I ask that you put it into practice instead. Share this manifesto, start building radical software, stop building software that only strengthens the entrenched powers, become a builder of software for the people. Find like-minded people, radicalize others. Organize not just your workplace, but also anything that isn't your workplace! Be the change that the world desperately needs.

If you'd like to talk to like-minded people, there's also a Matrix room for this manifesto at #radical-software-development:pixie.town.

[1] Notably, this is different from trade; capitalism is very specifically about structuring society hierarchically based on wealth inequality, by design. The inequality is quite literally the point.