← Tiny Subversions

Why I'm excited about decentralized social networks

by Darius Kazemi, Oct 5 2018

Here's a common 2018 scenario: you are mostly a Twitter user, but you have children and most of your family is on Facebook and they really, really want you to post pictures of your children so they can see. Even though you don't want a Facebook account, you sign up just so you can post friends-locked pictures of your kids for your family to see.

Here's a future scenario: you tell your family members, oh, here's a link to my Twitter account, you can press the "follow" button to follow it from Facebook, and I'll put you on a private list of people who can see my kid photos I post there. Then photos of my kid will show up in your Facebook feed as I post them on Twitter.

Now, that future scenario is probably never going to happen with Twitter and Facebook because they compete with each other as businesses and it doesn't make sense for them to treat their competitor's content as equally valuable to the stuff on their own platform. There's a small industry of services that let you cross-post to different social networks, but you still need accounts on those different social networks for this stuff to work.

BUT! That future scenario is something that could happen thanks to a protocol called ActivityPub.

Okay, what's ActivityPub?

ActivityPub is a standard, which means it's a big document full of rules for how software is supposed to behave. If your software follows the rules in that document, congrats, it is now ActivityPub-compliant. (Here's the document. It reads a lot like a contract, because that's what it is: a contract between software entitites.)

Email is also a standard: the reason you can send an email from Gmail to somebody on Hotmail and they can read it just fine is because both Gmail and Hotmail follow the email standard rules.

ActivityPub describes ways for social network sites to talk to each other. Its defintion of "social network" is extremely broad: it could apply to sites like Facebook, Twitter, YouTube, Snapchat, or even stuff you might not think of as a social network like The New York Times website, or Spotify. Basically any site where individual "users" create content and other people can subscribe to it could be ActivityPub compliant. There are rules for what kind of data is on a user profile, how to send a "follow" request and how to "accept" one, etc. This is all in the background of the software, and users never have to worry about it, but it's important that everyone play by the same rules.

Because if a lot of people start playing by these rules cool things start to happen.

The end of the network effect (sort of)

You are probably aware of the "network effect". It's the idea that people want to go where the people are. So if a social network is popular, then more people will be incentivized to join it. It's like that first scenario I outlined above: if all your relatives are on Facebook and it's the only way they like to communicate, then it's really hard for you to not be on Facebook.

But let's go back to the email example. Nobody joins an email service just because a lot of people are using it. A given email provider is only attractive if it fits your needs better than other providers. People use Gmail because it has a lot of convenient user interface stuff, and because it's free, and because they trust that Google will be around for a long time and not just shut down Gmail with 10 days' notice. People use their ISP's email provider because it's automatically set up for them and they don't have to think about it much, and there's a customer service line they can call. And so on.

Meanwhile, I am on Facebook, but it's because my mom is on Facebook. It's not because Facebook has features I like or I trust Facebook or anything else. If I could follow her Facebook updates from somewhere that was a better overall fit for me, and she could follow me back from her Facebook account, I would do so in a heartbeat and delete my own Facebook account.

Now, there will always be network effects of a kind. In theory a network with a lot of users will be incentivized to have better features that its users want, which in turn could attract more users. But the point is the loop isn't "more people attract more people", it's "more people begets better software which attracts more people". I'm no free market libertarian but I'd rather live in the latter world than the former, at least when it comes to social network software.


When people talk about decentralized social networks, the word "federation" comes up and it's always confusing. This is because it's a poorly and loosely defined word that means different things in different contexts. (This is why I encourage most people to just ignore federation entirely when it comes up in conversation.)

"The federation" describes the group of all services that use ActivityPub and other open standards to talk to each other. Basically, if two different social networks are in "the federation" (or "the fediverse", confusingly) then they can at least talk to each other in a rudimentary way. Mastodon is a popular Twitter style social network that is in the federation and uses ActivityPub. If you're reading this, you've probably heard of it. There is a federated YouTube clone called PeerTube that uses ActivityPub. You can follow a PeerTube account from Mastodon and any new videos that appear in there appear in your Mastodon feed (or if Mastodon can't display the video for whatever reason, it will at least link to the PeerTube page where you can read it).

Confusingly, a "federated" social network might be using ActivityPub, or it might be using a different protocol like OStatus. You don't have to worry about the difference, you just have to know that one can't talk to the other. So just because two social networks are "federated" doesn't mean they can talk to each other. Maybe eventually the meaning will change so "federated" implies "ActivityPub compliant" but that's not true today.

Wait, let's get back to the cool stuff

The PeerTube/Mastodon compatibility that we have today is a nascent example of that future scenario I was talking about: you can subscribe to not-quite-YouTube from your not-quite-Twitter and vice versa. This of course leads to all sorts of weird and wonderful questions: what does it look like to follow a Twitter style account from a YouTube style account? Is every social network going to have to support every kind of content (I hope not)? What happens when blog posts start getting published on ActivityPub?

My hope is that the utility of social networks being able to talk to one another leads to a flourishing of different kinds of software for different kinds of people. Maybe person A only cares about Instagram style stuff, so they post to Pixelfed and forget about everything else. Meanwhile their extremely nerdy friend B has a kind of Star Trek supercomputer interface that mixes blogs and photos and video channels and live streams and status updates from friends into an exquisitely sorted information management system. Both of those software interfaces can exist and everyone keeps plugging along happily. That's the web I want.