I started my Fediverse journey a little over a year ago, with my account creation date being August 3rd, 2022. I was initially drawn to the Fediverse due to the simple fact that this was social media I could host myself. Neat, right?
And I want to reflect a little bit on how it’s going.
So let’s start with my social media usage in the past, so you can properly classify where the following comments are coming from.
Actually, let’s start with something funny and entirely out of left field: Yooliety. Unless you grew up in the early 2000s in the region of Eastern Westphalia in Germany, you will probably never have heard about this. In fact, I just spend about twenty minutes trying to find an English language article, and wasn’t able to. The page went offline in 2018, but you can still have a look at it in the Wayback Machine.
It was a weird “beehive” themed social network. Every user got their own “honeycomb”, complete with furniture. For a bit of money, you were able to buy more and fancier furniture. Every “honeycomb” also had its own guest book where other “bees” could post messages. That was my first contact with social media.
After that came the “German Facebook”, StudiVZ and then finally Facebook itself.
I was never very much on Twitter, and only created an account at the end of 2021, not really doing much with it besides following a couple of interesting people for news on the War in Ukraine as well as the Homelab community.
So as noted above, my main drive for setting up my own Mastodon server was not so much looking for alternative social media, but rather that this is social media I can host myself.
So, what is the Fediverse?
That’s somewhat difficult to answer. There are a number of different underlying protocols, like diaspora*’s protocol. I will be concentrating on the projects using the W3C specified ActivityPub protocol, because it’s what most Fediverse projects support under the hood.
ActivityPub is a pretty generic protocol for communicating between different servers over HTTP. It defines a specific vocabulary that all services wanting to support it need to implement. But it is also pretty generic, which is evident in the many use cases it is currently applied to, from micro-blogging in e.g. Mastodon, over video hosting via PeerTube to photo sharing via Pixelfed. In addition, there is currently a pretty cool project ongoing to develop a protocol for federated code forges, which would be build on ActivityPub and allow you to e.g. make a pull request or open a ticket on a remote Git hosting instance without needing to have an account there. It is called ForgeFed.
This generalist design of ActivityPub also means that just because two apps both implement it doesn’t necessarily mean that they all support the same features. Just one example is the fact that the MissKey implementation supports a very rich system of reactions to a post, while Mastodon only supports “favouriting” it.
Instances are where the “Federation” of the Fediverse comes in. In contrast to large centralized services like Twitter, the Fediverse consists of numerous instances running the different Fediverse server software, and which are completely independent. You could run a Mastodon instance inside your local network, with no connection to the wider Internet, and it would still work without issue. You just won’t be able to talk to any user on any other server.
I will be concentrating on the technical aspects here - the more important social aspects of instances will get their own section later.
So when Alice and Bob have accounts on AliceServ and BobServ respectively, they can still communicate with each other via the ActivityPub protocol. The way it works is a combination of push and pull algorithms. I only know (some) of the Mastodon internals, so take the following with a grain of salt when it comes to other ActivityPub implementations.
The first and most important part is exchanging posts, which were once called “Toots” in Mastodon. This was deemed inappropriate by some people. How that’s a problem of the word “Toot” and not of the infantile minds of those people, I do not know. 😉
Before BobServ and AliceServ ever exchange any information, either Bob or Alice need to follow each other. Let’s say Alice makes great posts about her over-complicated five layer IPv6 only Homelab and Bob would like to be inspired by her to turn his simple single server setup into a sprawling Moloch with more computing power than your average Amazon DC and decides to follow her. He would open her page and click on the “Follow” button. BobServ would now send a message to AliceServ informing it that Bob would like to follow Alice. If Alice has follower approval enabled, AliceServ sends a message to BobServ saying as much, and BobServ waits for Alice to approve Bob. Taking a quick look at Bob’s recent posts, Alice approves the follower relationship. AliceServ now makes a note in its database saying that posts from Alice need to be forwarded to BobServ.
Now, Alice makes a new post, say about the new 96 core Epyc CPU server she just installed in her Homelab (and she definitely needs every single one of those 96 cores - there have recently been complaints about the speed of her local Jellyfin instance!). Now, AliceServ adds the new post to a number of inboxes. First are the ones from other people on AliceServ who might be following Alice. But it also sends the entire post into the inbox of Bob on BobServ - and thus, the post shows up in Bob’s feed the next time he updates it.
A little bit more complicated, and a current annoyance for many Fediverse users is the behavior of replies to posts. Let’s say there’s another user, Miranda, who lives on MirandaServ. They also follow Alice. Not so much because they’re into tech, but rather because she finds the antics of those tech people rather amusing. MirandaServ now gets the same “New Epyc Server” post delivered from AliceServ. Now, Bob decides to cheer on Alice’s megalomaniac server plans - as the Homelab community is wont to do - and replies to her post with “Excellent! How much RAM did you get in it?”. BobServ will now send this reply to AliceServ, where Alice is informed about the reply. But what does not happen automatically is that the same reply is also send to MirandaServ. Miranda may never see Bob’s reply, unless they go and view the thread directly on AliceServ via the web interface of AliceServ. This situation would be different if Miranda were following Bob. They would then also see Bob’s reply without issue, because BobServ would inform MirandaServ about Bob’s reply.
This is a pretty annoying thing, especially on a single user instance. I spend a lot of time in the web interface of remote servers. I will go into more detail on why later on.
Running my own server
So the first choice I had to make was: Which flavor of Fediverse software should I run? And there’s a lot to choose from. Have a look at Fediverse.party for example.
In the end, I decided to go for Mastodon, mostly because it’s the most widespread server software, at least at the moment. But this does not necessarily mean that this is the best or only choice you can make. The current crop of Fediverse server software works pretty well together. I would advise you to have a hard look at potential alternatives first. Especially with an eye towards resource usage. I believe that Mastodon is very much on the heavy side for a single user instance.
The setup was pretty simple (if you’ve already got a full Homelab available 😉). I’ve got Mastodon running in a container on my Nomad cluster. It uses the Postgres server I’ve already got running, with storage provided via my Ceph cluster’s S3.
I’ve got it running entirely in my Homelab. I didn’t observe any problems with running it on a residential Internet connection.
Together, the three containers use around 2 GB of RAM and little enough CPU that I can run them on one of my Raspberry Pi 4 workers without issue. For reference, with 183 followers and following 204 people, there was a total of 10k requests to my Mastodon server on Friday for the entire day.
Another major concern is storage. Your server (again, I only have deep knowledge of Mastodon, other software might work differently) caches almost all content locally. This includes both, posts and media from remote instances. Since a couple of updates ago, you can independently configure how long remote posts and media should be stored. At the moment of writing this, the Mastodon database occupies around 700 MB, while the media storage occupies about 30 GB. This certainly varies depending on how many people you follow, and how much media those people post.
As any Fediverse server needs to be accessible from the Internet, you should be comfortable with the security aspects of running a publicly accessible service. Stay on top of security releases and patch ASAP!
The “Social” in “Social Media”
Let me start off this section with describing myself as a white tech guy who really isn’t into online political discussions. That’s the lens through which I see and use the Fediverse.
The ups and downs of running your own server
Running your own server, instead of joining somebody else’s, holds a number of advantages. To start with a simple one: You get to peek behind the curtain and see all the tools the admins and moderation teams have at their disposal.
In addition, you don’t run the risk of being blocked by other, larger servers because somebody else on your instance misbehaved and your admin’s reaction was inadequate. If you get yourself blocked by another server, you can be 100% sure that it was due to something you yourself did.
And again: You control your own social media. 🙂
But there are downsides. Some of them actual ones, others potential future ones.
The first thing to mention is discovery. If nobody from any other server follows you, then there is absolutely nobody reading your posts, because they never reach any other server. But note: This doesn’t mean you shouldn’t make any posts until you get followers. You absolutely should, because many people on the Fediverse take a quick look at people’s profiles before following them. And if those profiles are completely bare, they very likely won’t follow you back if you follow them. This goes doubly for single user personal instances. If they get followed by somebody from a single user instance, and their profile is completely bare with no posts, no profile picture and no profile text, they might even assume you’re just a spam instance.
Then there’s the other direction: Seeing other people’s posts on your instance. There won’t be any, not in the beginning. None. Your local feeds will just be empty. Because you are not following anybody, other servers will not know to forward posts to your instance.
There are broadly two ways to remedy this issue. The first one, which I followed, is to just follow interesting people. One thing I did was navigate to mastodon.social’s public feed for the Homelab tag and just start following people who made a couple of interesting posts. As people are generally not just posting on a single topic, this lead to me discovering more interesting people organically. But it can be a pretty slow process. See my rather frustrated post about one month on the Fediverse.
The second possibility, which I did not explore, is using a relay. Relays are mostly there to provide more content for your own server, without you having to follow specific people.
At the end of the first three months of my Fediverse usage, I had a very lively feed with a lot of interesting posts. But that initial hump is something you need to power through, and it is a problem unique to running your own instance.
Then there’s the big elephant in the room, ongoing viability of a selfhosted instance. My main worry is spam. Not so much for my own server, but for other servers. A couple of previous spam waves have lead to even the largest servers being temporarily silenced (but not completely defederated) by other servers. This was due to spam accounts being created en masse, and then DM’ing users on other servers, in those cases with Crypto spam. This could only be solved by individually blocking the spam accounts on the individual server level.
In the discussion of that problem, one specific solution being brought up was
the introduction of allow lists for federation. If your server is not on the list,
your posts would simply be piped straight to
/dev/null. If that ever becomes
a reality, you would no longer be able to just go “uuuh how cool, I can just selfhost
my own social media!”, unless you want to go to every individual server and ask
to be admitted. 🙁
The hard part are the people
So, what’s my verdict? I like it. I have a lot of interesting discussion on any number of topics. The Homelab community especially is very helpful and always has an encouraging word for even the wildest of plans. (Read: The entire Homelab community on the Fediverse is just a large bunch of enablers. 😁)
But, as I noted above: I’m a white tech guy who isn’t much into online political discourse. And from what I read, people who are not white or who are not guys or who are not interested in tech might have a completely different experience.
Especially black people have been reporting mass harassment in multiple forms, from your typical racism to people policing their posts because they did not put their daily encounters with racism behind content warnings. From everything I’ve read on the topic, it has been so bad that the black community never made the jump to the Fediverse, with only a couple of exceptions.
Another, more general problem seem to be people playing HOA, “Home Owner’s Association”, which from reports seems to be a sort of neighborhood watch with some level of local authority on stuff like when you are allowed to put out your trash cans, mostly in the US. The German equivalent might be the “Blockwart” mentality. Those people descent on every new user whenever that user violates the Fediverse’s cultural norms, like not providing Alt Text for pictures or not using content warnings. I’ve never had a problem with that, but that might mostly be due to me arriving in August 2022, while the large wave of Twitter refugees only arrived in October.
In fact, for me, the Fediverse’s insistence on alt text has taught me to start adding alt text everywhere, both to my picture posts on Mastodon and to my blog articles here. It’s a great habit to get into, even without being incessantly chided for not doing it. 😉
Also a word of warning about what’s often called the “alt fedi”. The Fediverse does not have a large, central entity which decides who gets to run a server, and under which rules they get to run it. This means that there are many communities which feel way more at home in the Fediverse than on any of the large commercial platforms. But it also means that your favorite Nazi can create an instance and invite all their Nazi friends onto it. Chose your server wisely.
This also has another effect. As there isn’t a central entity which decides what goes and what doesn’t, there are quite a number of groups with pretty different viewpoints inhabiting the same Fediverse where the differences aren’t large enough for one group to completely defederate the other, as is the case with the alt fedi instances. But that doesn’t mean those different groups engage in high minded civil discourse.
Take for example Meta’s “Threads”, which is supposed to support ActivityPub at some point. It recently peaked at over 100 million users.
There are two general viewpoints on this. The first one, which we will call “Friends of Meta”, really don’t see any problem with the large commercial social networks joining the Fediverse. Quite the opposite, they welcome it. They have classified meetings with Meta under a vow of silence. They are also pretty big at calling opponents of welcoming Meta “gatekeepers” and accuse them of “magical thinking”.
To consider their “magical thinking” talking point, let’s consider what they mean, mainly that their opponents engage in magical thinking when they imagine that they can keep corporations like Meta out of the Fediverse. Against this, I would like to put their preferred talking point: If we just show those poor people on Facebook how great the Fediverse is, they are going to migrate to us en masse!
Which is bullshit, of course. Meta has probably already invested more money in UX than the Mastodon project has gotten in donations over its entire lifetime. You are really looking at all the problems people had with choosing a server when registering in the Fediverse, and you really think that if they get access to the Fediverse from within Facebook’s nicely tended walled garden, they will suddenly all switch over to the Fediverse? Yeah, “magical thinking” my ass.
But this is okay, just a little bit naive. The “gatekeeper” accusations are an entirely different thing, though. The Friends of Meta are claiming that the people saying they don’t want Facebook to enter the Fediverse are “gatekeeping”.
What I’d like to ask them: What do you call it when all the people who explicitly came to the Fediverse to get out of Facebook’s influence? Who wanted a place where their abusers wouldn’t be able to (relatively) easily find them? It’s okay to gatekeep them now?
There’s absolutely nothing currently stopping anyone on Facebook from creating a Fediverse account and joining this rather nice place. Nobody is gatekeeping anyone.
Most people just don’t want to.
And that’s fine! You’re still having fun on Facebook? Great! You still enjoy your feed on Twitter? Good! Choosing an instance to register on just seems impossible? Have a look at alternatives which are centralized, like BlueSky or Threads.
Alright, let me finish this article before it cracks the 20 minutes read time or I get even more ranty. 😉
So what’s my advise? Host your own Fediverse server, if you can. It’s an interesting experience. As I said: You can selfhost your own social media platform - how cool is that? 😁 It also has the advantage of isolating you from all the internecine warfare between instances, which can at times rival the machinations of the Tudor court on its worst day. 😉
I really don’t need the Fediverse to become everyone’s darling, but if we could make it at least a bit more welcome, including for people who are not white tech guys, that would be nice.