The problem with closed code

If you look at contemporary programming, I don’t think we have properly understood the social damage that our coding culture has already done, and is still doing. We have built enormous parts of modern life out of software, while pretending that software is somehow separate from society. It isn’t, code structures how we communicate, what we can see, who can participate, what gets remembered, what gets deleted, who gets heard and who gets ignored. And much of contemporary programming culture has a deeply contradictory relationship with this power.

In theory, the culture talks like anarchism: decentralisation, freedom, hacking, autonomy, permissionless innovation, open protocols. In practice, the resulting infrastructure feels closer to an authoritarian bureaucracy: rigid hierarchies, centralised control, surveillance, locked-down permissions, opaque decision-making and an almost obsessive belief that more control and more security will produce a safer society. This is part of the #geekproblem.

Closed systems hide power – in a #closed system, the monsters can operate without being easily seen. They can plot, manipulate, divide and control because the surrounding community cannot properly see what is happening. There is no shared social process for checking the claims being made or comparing them against what everyone else can see.

You cannot easily create social “truth” inside a closed system, you can have an official truth, corporate truth, an algorithmically manufactured truth. You can have whatever the people controlling the system want you to believe. But social truth is different, it emerges from people being able to see, question, compare, remember and challenge what is happening, that is one of the powerful things about #open. With genuinely open systems, the monster becomes more obvious. It becomes easier to see the relationships, the decisions, the contradictions and the consequences.

It becomes easier for other people to say – hang on, that’s not what happened – open systems don’t magically prevent abuse, they don’t make people good, but they make some forms of abuse harder to hide. Closed breeds monsters. Open pushes them out of the shadows where they can be seen.

The security paradox – this is where programming culture gets particularly strange. The demand for control and security is to often presented as neutral engineering. We are told that systems need permissions, authentication, central administration, surveillance and increasingly complex layers of security because the world is dangerous.

Of course some security is necessary, but when security becomes the organising principle of the whole system, something changes, the technology begins to reproduce the social assumptions of its creators. People become permissions, communities become accounts, relationships become access-control lists, trust becomes authentication and thus social problems become technical problems. Uncertainty becomes something that must be eliminated rather than something that society needs to learn to live with – this produces systems that are technically impressive but socially impoverished.

The fantasy of perfect control is a deeper problem here. We keep trying to build technology that removes mess, but human society is messy. People disagree, misunderstand each other, change their minds. Communities develop traditions as different groups have different needs. Sometimes things fail or somebody has a better idea, that isn’t necessarily a bug, it is social life. The #geekproblem treats this mess as something that technology should solve. The result, an endless attempt to build cleaner abstractions over increasingly complicated social realities. But the cleaner the technical abstraction becomes, the more human reality gets pushed outside the closeing system.

Then the system becomes brittle, and when it breaks, everyone is surprised. Code should be allowed to be messy – this doesn’t mean writing bad code. It means recognising that good social technology cannot be based on the fantasy of perfect control. We need systems that accommodate disagreement, forks, experiments, mistakes, local variation, negotiation and repair. In that sense, code should be a little bit messy, because society is messy. The goal isn’t to eliminate the mess, it is to create structures that help us live with it. That is different from the programming culture of trying to close every possible hole, define every possible behaviour and control every possible interaction.

#OPEN is a direction, not an endpoint – there is also a danger in treating #open as another purity project. Yes, the #openweb isn’t automatically good as open systems can contain abuse, misinformation, exclusion and power games. The #openweb itself contains plenty of contradictions. The #dotcons have their own versions of “openness”, often while retaining enormous concentrations of corporate power. So this isn’t a simple story of good open people versus bad closed people, more a balancing process.

#OPEN is a way to step away from #CLOSED – it creates space for transparency, plurality, experimentation and social accountability, gives communities more opportunities to see what is happening and to build alternatives. And that matters because we are currently living inside an enormous pile of inherited closed #techshit – closed platforms, closed data, closed algorithms, closed governance, closed infrastructures and assumptions about what technology is supposed to do. As a first step we need to compost a lot of this closed crap.

The mistake, we make to often today, is that we believe that we can build the perfect open system and finally end the struggle, we can’t, and we shouldn’t. There is no final technical architecture for society. There is no perfect governance model, no moment when we finally solve disagreement, power or human contradiction. Anyone promising that is either selling something, hiding something, or has fallen deeply into the #geekproblem.

The point is not to end the mess, it is to keep the mess visible, social and negotiable. We need technology that leaves room for people to challenge each other, organise, experiment, repair and move in different directions. That is why the #OMN work matters – to build practical #openweb infrastructure where media, metadata, moderation, governance and community relationships can remain visible, shared and contestable.

To make this happen we need starting points, #OGB experiments with governance, #MakingHistory to keep collective memory alive and #IndymediaBack to remember what grassroots media learned before the current wave of #dotcons.

Next step in the #OMN

The majority of #mainstreaming #openweb tech projects have the assumption that human nature is a fixed thing and that every project has to be built in reaction to the 40 years of neo-liberal #deathcult that we all live in now as this is the “only” human nature visible. They completely miss/ignorer the social nature of people in groups in this look back at the 20th century, and we have clearly different views of human nature as examples to build society. Call it social democracy, call it communism, call it what you like. We DO NOT have to build tools in relation to the #deathcult, and we clearly should not base “hope” on tools that are built in this relation.

Mastodon, activertypub and the fedivers took a small #stepaway from this mess. The #OMN takes the next step away. For the rest #compost and #shovels come to mind.

The #OMN is a simple #KISS social tech project.

All these projects work off the same core code/workflow of tagging and editing metadata.

#Indymediaback is the news part of the project. This is to grow journalism from the grassroots and to make our news mainstream.

#Makinghistory – is the archiving project. This is to preserve and grow our history from the grassroots and make our history mainstream.

#Friendsandfamily – is the social networking project. For family/affernerty groups to move away from the mainstream #dotcons and to nourish the grassroots.

All the projects are and federated.