Decentralizing Social Media
Tags: activitypub, mastodon, fediverse
Published: 2020-08-26 09:43:57

---
title: Decentralizing Social Media
published: true
date: 2020-05-28 09:49:41 UTC
tags: activitypub,mastodon,fediverse
canonical_url: https://spiegelmock.com/2020/05/28/decentralizing-social-media/
---

#### No, it has nothing to do with blockchain. 

What kind of language should Facebook forbid? What kind of regulations should the U.S. government promogulate regarding whom Twitter can ban?

☞ **Who cares?? ☜**   
Not me.

A depressing amount of energy and ink is wasted on these questions which shouldn’t even be issues in the first place. We don’t have to base our public discourse on platforms that corporations or even governments control.

The great news is that there does exist an alternative to the model of having all social media content go through a couple of companies. There is certainly no technical reason it should work that way, and there is a solution to the problem that has a foundation in technology, though there is naturally a social component as well.

What is this problem that needs a solution? I think it’s fantastically illustrated by all of these articles and experts and laws being passed to try to nudge Facebook, Youtube, Twitter to control what people are allowed to say and post. Busybodies, Concerned Citizens, corrupt politicians, think tanks, your parents, all want to petition these platforms to decide what you should be able to read or write. I view this as a problem, because I don’t think anyone should decide for me what information I should be able to share or consume. Not Mark Zuckerberg, not Donald Trump, not Jack Dorsey, not my congressional representatives, not the People’s Republic of China.

Government and private corporations in control of censorship are not the only problem here. As everyone knows these services are free, and as everyone also knows if the product is free then **you** are the product. Facebook and Google make almost all of their money from extracting and mining as much personal data about you as possible to sell to advertisers, PR agencies, and politicians. There is a better way.

## Federated Social Media

The answer is **federation**. Decentralization. Distributed systems. You’re already familiar with the concept, just think of email. You don’t have an email username, you have an _address_. Your email address is a username on a host – `mspiegelmock@gmail`.`com` specifies the user `mspiegelmock` on the system `gmail.com`. I can write an email to someone else like `rms@gnu.org`, even if they don’t use gmail. I ask my provider `gmail.com` to send a message to the `gnu.org` host which is responsible for delivering it to the user `rms`.

No company “runs” email, yet all email servers know how to pass messages to each other. There is a vast array of different email hosts, providers, server applications and client apps. You can choose to sign up with a free provider like Google or Microsoft, your employer may provide you an account, or you can run your own server. You can use any sort of app you like with email, such as gmail.com, Apple Mail, Superhuman, Outlook, mutt, or emacs. In the earlier days of web-based mail there were a few options to choose from, like Yahoo and Hotmail, and eventually the company which provided the best user experience ended up grabbing a significant slice of email users, thanks to the wonders of competition. There were and are some issues with spam and malicious content to be sure, though a great amount of progress has been made on systems to combat it (spam and virus filters, real-time blacklists, DKIM/SPF). This is what federation looks like.

To grasp the concept behind federated social media, think of email. You sign up for an account with an instance (“host”) that you feel comfortable with, or run your own if you’re so inclined.

![](https://spiegelmock.files.wordpress.com/2020/05/image-6.png?w=1024)

To follow someone you need their address, like [**@wooster@social.coop**](https://social.coop/@wooster).

Think Twitter, but as an email address. The address denotes the username (`@wooster`) and the host the user is registered on (`social.coop`).

You have two timelines, in addition the people you follow. One timeline is the “local” timeline, which is everyone else on your instance. If you join an instance of people that share a particular hobby, language, interest, region or philosophy you get to start out with a feed that may have posts that may be relevant for you. Your instance can link, or “federate”, with other similar instances, connecting users on your instance with users on the other instances.

![](https://spiegelmock.files.wordpress.com/2020/05/image-7.png)

![](https://spiegelmock.files.wordpress.com/2020/05/image-8.png)

## Moderation

![](https://spiegelmock.files.wordpress.com/2020/05/image-4.png?w=1024)<figcaption>Why not run a whitehouse.gov instance instead?</figcaption>

Just because there is no central authority for content moderation doesn’t mean that the system is full of abuse and Those Sorts Of People you would like to avoid. These things exist to be sure, as they do on any platform, but they are confined to their own instances. Moderation does exist, but unlike Facebook or Twitter you can choose your moderators. Most instances have [policies](https://blog.joinmastodon.org/2019/07/statement-on-gabs-fork-of-mastodon/) about what external content they block, what types of instances they want to federate with, and what kinds of content they permit. If you disagree with their policies, you are free to join an instance that fits with your preferences, or start your own.

![](https://spiegelmock.files.wordpress.com/2020/05/image-5.png?w=1024)<figcaption><a href="https://joinmastodon.org/">https://joinmastodon.org</a></figcaption>

There are plenty of people I **don’t** want to hear from, there are plenty of posts our there that would decrease my quality of life, and I’m fine with outsourcing some moderation. I just don’t want this guy to be the final arbiter of all information.

<video autoplay controls loop muted src="https://mischa.lol/v/uck.webm"></video>

Propaganda, trolls, abuse, and misinformation exist on every platform. You can find it on YouTube, LiveJournal, TikTok, Twitter, and no doubt on federated social media. Media literacy is an important skill that should be taught to help media consumers understand biases and distortions inherent in all media. A platform that helpfully provides fact-checking would be desirable to many users. But the fact remains that _you cannot outsource critical thinking_. There’s no getting around this.

The problem with top-down centralized structures that take it upon themselves to decide what information can or can not be spread should be plain. Corporations and politicians have bad incentives and the temptation to misuse such power to cover up misdeeds is too powerful for most to resist. We all know now what happened with Chernobyl and the misery caused by the suppression of information. Maybe if we had some supremely enlightened and benevolent information despot it would be okay to put them in charge, but I can’t really think of anyone I want to grant that authority over me.

The instance I belong to is [social.coop](https://social.coop/), a social media cooperative. It’s a group of people who donate a small amount of money to pay for a server to host a Mastodon instance and volunteers who help maintain and administer it. There is an online forum for discussions and consensus-based decision-making, and a lot of smart people on it. This is just one example of the kind of self-organization that is possible in the fediverse.

## Mastodon

Today the most popular software for plugging into the federated social media network is Mastodon. It’s free (AGPL) and [open source](https://github.com/tootsuite/mastodon) naturally, and there are a number of [apps](https://joinmastodon.org/apps) you can use with it, including some slick paid apps. The Mastodon web interface looks something like this:

![](https://spiegelmock.files.wordpress.com/2020/05/image-9.png?w=1024)

And the “Toot” app looks like this:

![](https://spiegelmock.files.wordpress.com/2020/05/image-10.png?w=598)<figcaption>Toot for iOS</figcaption>

Many communities run Mastodon instances, some are public, some are cooperatives, some are private. You don’t have to use Mastodon to talk to people using Mastodon, if you use software that speaks ActivityPub then you can follow, share, post, like, comment, and communicate with anyone else in the fediverse. Just like if you use any email software, you can email anyone else using email software, which I think is pretty neat.

Mastodon is federated social media, federated social media is not Mastodon.

<iframe width="700" height="394" src="https://www.youtube.com/embed/IPSbNdBmWKE?version=3&amp;rel=1&amp;fs=1&amp;autohide=2&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" allowfullscreen="true" style="border:0;"></iframe>

## Technical Details (ActivityPub)

In the early days there were a [number of attempts](https://lwn.net/Articles/741218/) at creating social networking protocols with really obnoxious names like “pubsubhubbub.” After a bit of experimentation an official standard was published by the World Wide Web Consortium (W3C) in 2018, going by the name [ActivityPub](https://en.wikipedia.org/wiki/ActivityPub). You may know the W3C from their earlier hits like HTML, CSS, XML, and SVG.

As it’s an extremely recent standard, we’re still in the very early days of implementations. I expect there will be a number of libraries and clients popping up, along with not just standalone servers but server capabilities integrated into existing platforms and sites. Any site that lets you log in and post content could be modified to plug into the fediverse by implementing the relatively simple, JSON-based protocol. Your existing accounts could turn into ActivityPub [Actor objects](https://www.w3.org/TR/activitystreams-vocabulary/#actor-types). New social networks can in effect bootstrap themselves by leveraging existing users, software, and federation networks, and we’ll see companies and open source projects compete to offer the best user experience.

Honestly the best way to learn about ActivityPub is to [go read the standard doc](https://www.w3.org/TR/activitypub/#Overview). It’s in plain English with friendly cartoons and very straightforward.

![Actor with messages flowing from rest of world to inbox and from outbox to rest of world](https://www.w3.org/TR/activitypub/illustration/tutorial-2.png)

The very brief gist of it is that there is a client ![↔](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/2194.png)︎ server protocol and a server ![↔](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/2194.png)︎ sever protocol, much like IRC. You can read notifications that arrive in your inbox and you can publish messages to the world via an outbox. All content and [objects](https://www.w3.org/TR/activitystreams-vocabulary/#object-types) on the platform are simple JSON documents that live at a URL (an IRI to be precise). Technically you could make a compliant ActivityPub server with a static webserver (I think? Tell me if I’m wrong).

Social media isn’t just text and image posts. The site [PeerTube](https://joinpeertube.org/) is a decentralized version of YouTube:

![](https://spiegelmock.files.wordpress.com/2020/05/image-14.png?w=1024)

> PeerTube is a free and open-source, decentralized, federated video platform powered by ActivityPub and WebTorrent, that uses peer-to-peer technology to reduce load on individual servers when viewing videos.

## User Base

The network effect is what makes a social network attractive. The more people on it, the more useful it is. Having celebrities is a big draw for many people. It’s the biggest challenge that any challenger to the status quo faces.

I believe there is nothing permanent about Facebook or Twitter. I remember when it was hard to imagine anything replacing MySpace, or when everyone on the Russian-speaking internet had a LiveJournal. Fads change and great masses of people move smoothly to new platforms with ever increasing rapidity.

![](https://spiegelmock.files.wordpress.com/2020/05/image-12.png?w=1024)<figcaption><a href="https://the-federation.info/">https://the-federation.info/</a> – Federation Stats</figcaption>

The thing that is so powerful about a social media protocol is that it seems, at least to me, like the logical conclusion of social media. Once a growing critical mass of people move to it, either because they are sick of Facebook’s shit or some cool new company’s platform happens to be powered by ActivityPub, most of the innovation around communities, software, moderation, new forms of media, organization and technology can happen within the fediverse. Because of the open and extensible nature of the underlying foundation anyone can plug in a conformant piece of software and shape their piece of it how they want while still interoperating with the wider world. It’s a perfect vehicle in which one can imagine fictional visions of the future internet taking shape, like the Metaverse from Snowcrash or the VR Net from Otherland.

![](https://spiegelmock.files.wordpress.com/2020/05/image-11.png?w=1024)<figcaption><a href="https://pawoo.net/about">https://pawoo.net</a> – Japanese Mastodon with 625,000 users and 45 million posts</figcaption>

The internet is a decentralized collection of autonomous systems held together by communities defining standards and protocols. Distributed social media maps very nicely onto the architecture of the internet and promotes freedom of expression and experimentation with new forms of media, social organization, and technology. Doubtlessly it will create new problems as well, like intensifying the [internet hypernormalization effect](https://spiegelmock.com/2018/07/10/the-internet-hypernormalization-effect/). It will likely be some time before norms and robust community structures are figured out at scale. The ability for anyone to participate in the wider social community within bounds and parameters they set for themselves will be messier but ultimately more powerful and driven by more positive incentives than the current social media monopolists.

## Links

If you want to give Mastodon a spin you can check out [joinmastodon.org](https://joinmastodon.org/).

To learn more about ActivityPub read the [spec](https://www.w3.org/TR/activitypub/#Overview) (really, it’s not dry). More info about the types of Actors, Activities and Objects on ActivityPub can be found [here](https://www.w3.org/TR/activitystreams-vocabulary/#types).

[PeerTube homepage](https://joinpeertube.org/) explaining federation of video content.

[Why does decentralization matter](https://blog.joinmastodon.org/2018/12/why-does-decentralization-matter/)? Mastodon op-ed.

[The-federation.info](https://the-federation.info/) – statistics and open source fediverse projects.

![](https://spiegelmock.files.wordpress.com/2020/05/image-13.png?w=1024)