Building Fediverse software for reversibility
We know that even slight changes in the user experience or algorithms of social media software can have snowball effects and drastically change how people interact.
But, no-one is omniscient. Even the best intentioned developers, the most carefully planned and discussed feature can, in hindsight, turn out to have undesired effects.
Not only should we design our social media experiences to foster an individual's agency (individual opt-in, instance opt-in, facilitate instance migration), we should also design features and processes such that we can reconsider our decisions and potentially roll them back easily.
On a software level, this could for example mean:
- separate feature releases from bugfix releases
- use a plugin architecture, or at least enable entire features to be toggle-able at instance level
- structure open-source projects such that forks can benefit from each other's work without excessive fragmentation
- always think of frontend/client developers first, because they ultimately shape what the experience is for most users
- have features degrade gracefully for people who opt-out
On a “governance” level:
- clear guidelines for the adoption of new features (could be by vote, by decree, by dice-roll, as long as instance members agree to it)
- processes to check back in and see if people still think the feature is a good idea
- this could include beta programs or A/B testing, as long as users consent to participating
- processes to roll back previously agreed upon features
On a community level:
- understand that people want different things out of social media—pretty much everybody taking part in these discussions is of good faith and deserves respect
- de-federation is the mechanism that enables us to have productive discussions around these topics. If, after listening to each other, and understanding each other's incentives, we decide we are fundamentally incompatible, we can sever all links yet both still contribute to the fediverse itself
Disclaimer: I say we because I understand I am not operating in a vacuum, but these are just concepts I am working out for myself. I welcome feedback!