← Back to Writing

Babysteps in the Fediverse

Monopoly is bad. Most of the era of social tech is characterized by monopolistic (let’s be generous: oligopolistic) “walled garden” communication services: I’m locked in to my Instagram account because if I leave, I lose all my friend connections; my Instagram account and your TikTok account can’t interact together.

The answer to this closed, proprietary internet is what’s called “The Fediverse.” Here, I write about some of my baby steps and early observations in this new -verse.

The Fediverse

A simple way of understanding what The Fediverse is: email. I can use gmail and you can use outlook and we have no problems with our ability to send and receive messages with each other. That is not true of pretty much all social media, since its origins 20ish years ago. A big part of the software systems that underlie social tech are what’s known as “protocols” - structured ways of packaging and moving data. Most social tech has closed protocols, meaning there is no efficient (or terms-of-service compliant) way for programs outside of a given social platform to interact with those protocols. They can’t send and receive the stuff of the social internet: messages, URLs, images, videos, etc.

In contrast, email uses open protocols. This creates an ecosystem characterized by “interoperability,” and it’s unambiguously good. For an individual consumer, it creates freedom and agency. From an economic viewpoint, it puts competitive dynamics into the marketplaces of tech products and internet advertisers. Customers can vote with their feet.

While interoperability is an old concept for lots of physical technology (such as manufactured components of railcars), for social tech, we’re just in the first few years of it. The EU’s Digital Markets Act requires certain kinds of interoperability from large “gatekeeper” social platforms. The law took effect in the first part of 2024, with such players like Apple actively working on specifications to comply.

The Fediverse and interoperability can be a pretty wonky and technically tangled arena to understand and experience. My first explorations into it, in 2023, were humbling, because it entailed lots of “back end” software engineering concepts and capabilities that lay people like me find pretty challenging to navigate. Also, it didn’t really work.

But! Simultaneous to the childhood of the fediverse, we have the boom in generative AI, particularly large-language models. For all their sins and shortcomings, LLMs are very good at creating and interpreting code: software is highly structured and much easier to fact-check (debug) than human-oriented meaning, and I think that makes for a best-case application of LLMs.

So, equipped with Anthropic’s AI chatbot Claude, and inspired by Casey Newton, Kevin Roost, and PJ Vogt’s coverage of “vibe coding” with Claude and building their own fediverse social network, I waded back into things to see what would happen. Here’s what I’ve found.

The Products

I focused first on the category of social tech called “microblogging.” The forebear of this segment was Twitter (now X), and is unfortunately not part of this conversation. Xitter continues to use closed protocols. I experimented with 3 other products:

My Experience

I have an account with each of these three products. Mastodon and Threads are, ostensibly, directly interoperable because they use the same protocol - ActivityPub. In contrast, Bluesky uses ATProto, so it doesn’t directly interoperate with Mastodon or Threads - but there’s a workaround we’ll see!

Task 1: See my Threads posts on my Mastodon

Shortly after its launch, Threads shipped the ability for users to “enable fediverse sharing.” Notably, this is not a default setting - users have to opt into it. I did.

From my account on Threads, I made a post.

It appeared on Mastodon, viewable from my Mastodon account, about 15 minutes later.

From my Mastodon account, I commented on an older Threads post of mine.

About 10 minutes later, it appeared as a Notification (not as a comment on the post) on my Threads account.

And, more than an hour later, something appeared as a sort-of-comment on my Threads post.

But, it didn’t actually show the substance of the comment under the post.

This is a mixed success. On the one hand, I can read Threads posts on something that isn’t Threads (Mastodon). On the other hand, I can’t really interact with Threads posts yet - such as commenting. This is not a technical limitation of ActivityPub, nor a shortcoming of Mastodon (as we’ll see below), but rather a matter of Threads configuring its instance and application a certain way.

Having worked at Meta, my guess is that there is a small, passionate team of engineers working on shipping evermore functionality for fediverse capabilities, and a resource manager (Adam Mosseri, and ultimately Mark Zuckerberg) determining which Threads features to prioritize; those decision-makers are not prioritizing fediverse functionality. See, for example, the latest feature announced by Mosseri - additional ways for users to tell Instagram what categories of Reels you’d like to see. Not additional Threads compatibility with non-Meta products. Weird!

Moreover, the in-app behaviors of Threads, such as not having fediverse sharing turned on by default, and even periodically asking users who are sharing to the fediverse whether they still want to do so, suggest to me that Meta isn’t really committed to Threads being a tentpole of the fediverse. The realist in me has a hunch that the ActivityPub infra under Threads is little more than DMA compliance work.

Task 2: See many people’s Threads posts on my Mastodon

In the pilot above, I followed myself on these various services. But obviously I want to see other people’s posts. I had been a fairly active consumer on Threads previously and had followed a couple hundred accounts - how could I make it so that my Mastodon account also follows those Threads accounts?

Cue Claude. Meta and Mastodon alike have export/import capabilities, and I was able to export my Threads “followings” into a JSON file. That’s one kind of structured data file. Of course, to import the list of the accounts I’m following into Mastodon, the file needs to be in a different format - a CSV. Converting a file of a few hundred strings (username / domains) from JSON to CSV, with a few weird idiosyncrasies, was a walk in the park with Claude.

I was using the free tier version of Claude, so I had a pretty low ceiling on the amount of data I could send/receive. I couldn’t simply upload the JSON file to Claude and have it spit out the correct CSV file for me (although paying customers probably could).

Instead, I used Claude to come up with some find-and-replace operations in the JSON file, including some fancy logic search known as “regex” that looks to a human like gobbledygook. The result was a fast, clean CSV file of the few hundred accounts I wanted to follow, that I successfully* uploaded to Mastodon! A simple data cleaning task that, without Claude, would have taken me hours to do manually, or days (because software engineer I am not) to write a script to accomplish.

*Successful, insofar as I was able to solve a data transformation problem. But this screenshot, from Mastodon’s import page in my account preferences, shows that only 32 Threads accounts were successfully imported to my Mastodon as accounts I can follow. Those 205 failures? Threads accounts that have not yet enabled “Fediverse sharing.”

Furthermore, this whole task #2 was oriented towards getting a point-in-time list of accounts I followed from one place to another. But can I follow additional Threads accounts from Mastodon? Only if they’ve enabled “Fediverse sharing” will they even appear in Mastodon’s search field. And it’s a large majority of Threads accounts that have not done this, including some conspicuous, disappointing ones.

A Threads post by the EU’s legislature, the European Commission, which has not enabled Fediverse sharing. Come on.

Task 3: See Bluesky posts on Mastodon.

Unlike Meta, Bluesky and Mastodon have a raison d’etre of making the fediverse successful. That’s why I was initially concerned to learn that they were building on two, parallel open protocols - ATProto and ActivityPub, respectively. Bluesky argues for some technical advantages of ATProto in its FAQs. But wouldn’t multiple protocols compete with each other for audience, cannibalizing their own market potential, and thus never achieve a truly viable alternative to Meta? My worries were misplaced: open protocols are open! Let a hundred flowers bloom! Here’s why.

Task 4: Escape from Instagram?

While Meta’s decision to build a microblogging app, Threads, in a Fediverse-enabled way is great, the majority of the iceberg remains under the waterline. Almost all other social tech, including Meta’s own products (Facebook, Instagram, WhatsApp), are not on open protocols. And while I appreciate a good tweet, I’ve always been much more of an Instagram user - would that I could enjoy photo posts and stories from outside the garden wall, in those elysian fields of the fediverse! Two products offer solutions: Pixelfed, built on ActivityPub; and Flashes, owned by Bluesky and built on ATProto.

As far as I can tell, Flashes is not yet Bridgy Fed’d over to ActivityPub, so my goal of having one internet home on ActivityPub that access All The Social Internet is paused on that front. But Pixelfed is on ActivityPub. I created an account and took a perfectly composed, award-worthy photo.

Then, on Mastodon, I searched for the username @abekatz@pixelfed.social, and followed it. And what did I see?

The post from Pixelfed seems to have successfully shown up on Mastodon, although my Pixelfed profile picture did not. Additionally, I didn’t see this post in my Mastodon feed; rather, I had to navigate to this Mastodon user profile page to see it. If Pixelfed posts don’t appear in Mastodon feeds, it’s probably for product design reasons and not for technological compatibility reasons.

Early Observations

What’s Good

What Ain’t

Prickly Reflections

Culture

All that I’ve written above assumes that growth is desirable. That’s my bias, because my motivation is about power and viable alternatives to the incumbents. But many people on the fediverse do not want growth. They want small virtual spaces. This can lead to “self-selection-by-design” being an attribute of product development: if a user can’t figure out how to get Fediverse / Interoperability to work, then they’re not active enough of a participant in their own online experience, and we don’t want them.

There was an interesting flashpoint on this front last year, when Bridgy Fed launched the ability to connect Bluesky and Mastodon. Originally, it connected all accounts by default. Some Fediverse users saw this as a massive privacy violation and responded with outrage. In response, Bridgy Fed changed its configuration to be opt-in, rather than opt-out. The consequence of this is the experience I wrote about above: Most of my Bluesky connections haven’t opted in, so I can’t follow them. For how many of these users is that an affirmative choice? For how many is it simply inertia?

So, I tend to agree with Bridgy Fed’s first approach, and I tend to grumble at the outspoken members of The Fediverse who opposed it. That’s a matter of culture, a matter of decentralized ownership, and on balance that very dynamic is a good problem to have; but it makes me more pessimistic about The Fediverse achieving what I want it to achieve: slaying giants!

Business

In 2024, I attended a session at TrustCon by the head of Independent Federated Trust and Safety (IFTAS), Jaz Michael-King, in which he presented survey results of the annual Social Web Trust & Safety Needs Assessment Report. One finding that struck me was how bootstrapped and resource-scarce the builders and operators of The Fediverse are. In writing this, I reviewed the 2025 report.

Addiction Feels Good

The inventory - the set of posts I might see - on my interoperating fediverse “home feed” is small, because the number of users I’m following is small, and I’m not being recommended content from further afield. So, I have less reason, moment-to-moment, to stay on the app than on Twitter or Threads or Instagram. There are two factors here:

  1. Inventory: On Mastodon, I am a member of the instance (server) called indieweb.social. I can see all posts made by users on my instance in a “local” feed. I can also see all posts made by users on any other servers that the admins of indieweb.social have connected our server to, on a “other servers” feed.

  2. Algos: Completely unrelated to all the network technology (servers, connections, interoperating, etc) I’ve discussed so far, applications on The Fediverse have, so far, overwhelmingly poo-pooed algorithmic ranking of content. Almost all feeds are simple reverse chronological feeds. That means that when a feed has a small inventory, I see stale posts for a while. When a feed has a large inventory, I see firehose of content constantly coming in every few microseconds. Simple chronology, it turns out, has shortcomings as an organizational heuristic.

    Too little content and too much content mean that I find myself spending less time on The Fediverse, and get this - I think that’s good. But I seriously think I’m experiencing withdrawal. There is a real habit problem of compulsively opening an app, swipe-swipe-swiping, idly passing time, fidgeting, seeking dopamine; and the Fediverse product experience is not built to enable that.

    So I’m confronted with my own demons. None of the political science and economic theory about choice, nor any of the technical and product successes and drawbacks I’m observing, excuse my own brain chemistry. That’s something I’ll need to work on. But I do think that The Fediverse is a tool and sandbox in which I can work on these things. Tools like custom list building, and (in the case of Bluesky) custom feed ranking algorithms, are major facets of Fediverse products that I have yet to dive into.

    The Fediverse is a promising future, and I’m eager to see it take root.