Revolver: Motivation — FSE Blog

Revolver: Motivation

I had planned an announcement for Revolver, and the Kickoff announcement blog post is here, but there was a section about motivation that started to get long and run into the weeds, so I have split it into its own entry. So here's the motivation.

Two Events

There were two events, close together, that made me think I should have hit the gas on this project last year, when it seemed like a good idea but not urgent.

The Net is Too Centralized

The first event that was the loss of an instance, neckbeard.xyz, which was due to a false report: a person going by "Snow"/"Kathleen Solis", with a very long history of abusing hate speech reports repeated his usual tactic: sign up on different instances, post questionable content, then screenshot and report his own posts to FediBlock, hosting companies, registrars, the NCMEC, etc. He very noisly quit fedi, but not before using tactic on several instances and this time it hit Neckbeard: nic.xyz killed the domain. Luckily you can't keep sjw down, and he got a new domain in short order: now you can say hello to your new SJW waifu on bae.st.

Except that I helped with the migration (which I was glad to do), the end effect on FSE was nil; we had to deactivate some remote accounts for stuff that's illegal in the US and thus banned on FSE anyway, but the datacenter understood what was going on.

The Server is Centralization

There are some servers that get DDoS'd. FSE used to get DDoS'd pretty regularly!

The other issue is that FSE's running on ridiculously overpowered hardware but is suffering some reliability problems, and once in a while, it hard-locks and I have to file a ticket to have the DC reboot it. (It's a refurb, I think it's a blown cap on the motherboard.) One day this resulted in four reboots within 24 hours and not much sleep for me, prompting me to move some services off that box.

This isn't a huge deal itself: you can fix hardware. However, it does hint at a bigger problem: these servers live somewhere. It's still centralized, which brings me to the next section, the persistent motivation.

Long-term Motivation

There have been some persistent issues as well: instance drama, hosting issues, and scaling issues.

Draaaaaaama

The drama between instances and within instances has been a mess, but you kind of expect that: people run instances, people have accounts on instances. It's people all the way down.

I don't think people should be held responsible for posts created by other people.

Hosting

As for hosting issues, it's not just the centralization problem. I run an instance that doesn't block any other instances and that keeps its registrations open, and I do no viewpoint censorship because I want to help people exercise their natural human right to freedom of speech. (On the other hand, for a couple of months, this was causing me to wake up in a cold sweat periodically.) I think my friend dubh said it best:

Fedi has a very "who's willing a host a house-party" vibe to it, and I think the no-admins approach is going to remove the chilling effect of liability that has been recently forcing people to play hall monitor instead of actually partying.

I do want to party. Mainly, I want to hack on things, I don't want to make rules or deliberate about rules or argue with people about FSE's rules or enforce the rules.

As for technical issues, there are servers that have gone away permanently, because the admin left, or lost their domain, or broke their database without backups. There are people that cause problems deliberately, and some people don't want to run a server because of that, some people have left because it went on long enough. The admin is centralization, and I want to make it easier for anyone to participate in the network, me included.

Scaling

The scaling issue should be obvious. Fedi has sort of a handshake problem: posts have to be fetched by every instance that intends to display them, and then there's bookkeeping about what's been delivered where (for deletion, which is unreliable anyway). That was the primary motivation for the initial architectural sketch I had for what I was calling "the object proxy" or "the object slush": smaller instances can get flooded. So the initial idea that Revolver grew from was decentralizing object fetches by making a network of caching proxies, which could be done in a way that made it transparent to Pleroma: it would speed up the network and ease some of the bandwidth and downtime concerns. (Think of it like Pleroma's media proxy but for posts. I wrote some code and tried running it but it made Revolver start to percolate.) Even larger instances with beefy hardware can get flooded sometimes.

But that's just a software concern: there are not enough instances and not enough admins to run them, and the stress and various annoyances have caused some people to quit running their own instances. I think there should be no admins: I certainly don't like when people ascribe views to me after I decline to ban someone that advocates those views.

But I'm a programmer. I automate compulsively and I hate bottlenecks. Instance admin stuff is boring and I don't think anyone should be doing it, and admins are a bottleneck. There's CofeSpace that I have been operating with the goal of making it easier for people to run instances, but that's got its own problems. Fediverse Express run by the excellent Miss Pasture which does a great job with making it more self-service.

Privacy

Admins have the database. They can see the database. Your posts are in the database. This puts it on par with email: you have to trust whoever runs your mail server and whoever runs the server you're sending mail to. There's no real E2EE for fedi yet, this project aims to provide some.

The San Francisco Data Cartel

I probably don't need to elaborate on this. Google, Facebook, Twitter. I want to eliminate the some of the issues that stop fedi from overtaking Twitter.

Motivation Sidenote: I Love Pleroma Forever

Please don't interpret any of this as diminishing any amount of gratitude or love I have for the Pleroma project and its developers. I don't plan to replace Pleroma. I plan to be as compatible as possible with Pleroma specifically.

The goal of the project, then, is just to produce some software that solves my problems and I expect it will solve others' problems.

Go read the kickoff

This is a scattered ramble about why I would want to do what I'm doing; what I'm doing is probably more interesting than me bloviating about why I'm doing it.