Day 7 - ActivityPub Protocol
April 12, 2026•775 words
Part of Listed's 100 Day Writing Challenge.
Recently I been reading up on ActivityPub, a decentralized networking protocol. Wanted to write this blog post to journal down my opinions and findings on it.
ActivityPub
ActivityPub was created to address some of the main challenges, which are:
No Central Point of Social Media
We have Instagram, Twitter, Facebook, Reddit, etc. Which the developers think its quite fragmented as you would need to have an account for each of the social media. Why not just have 1 account and have it a be all end all solution?
Data Control and Privacy
The data on the social media accounts are subjected to the corporation of the social media business. So there will be privacy concerns for some of the people involved.
Additionally, there are some other technical problems
Solution
The solution the developers came up with? A protocol to allow server-to-server communication. Took inspiration by emails. Just like how a gmail can send and receive messages from outlook, 2 different social media servers can have users interacting with one another as long as they use this ActivityPub protocol.
How it Works
Quick rundown of the ActivityPub protocol is, it simply uses JSON-LD for all API communications. Just make sure your endpoint implementation follows the specific standard and you should be good to go. Now anyone can deploy and self-host your application to form a decentralized network, so no one individual corporation owns the application space.
Honestly, I don't want this to become a tutorial on ActivityPub, if you are really interested in how to implement a software to use ActivityPub standard, you can reference this beginner friendly guide. I just wanted to share a quite rundown of ActivityPub so that I can share some of the technical challenges I forsee if I were to create an application with ActivityPub
Technical Challenges
ActivityPub sounds good and easy to implement on paper, after all, its just making sure your API receives data and respond back according to the ActivityPub standard right? Not really, you see, ActivityPub means your now also going to deal with Server-To-Server communication. Its like creating a micro-service architecture, where the only service is your application (and the forks of it) and your not the administrator for 99% of the services out there.
Account/Data Migration
What if a hosted server changed their policies and the users don't like it? What if a hosted server is unable to go on due to insufficient funding or help? Thats one happened to one of the ActivityPub (lemmy) instances. All the data hosted on that server? Gone. Just like that. Yikes.
And Data Migration isn't an easy job to be honest. Anyone who performed data migration knows this. How to deal with unexpected events halfway through data transfers, how to make it fast and non-blocking to users, how to prevent duplication of data, etc.
Discovery
One selling point of social media is outreach. Sometimes you just want your news to spread far and wide. But imagine this: you self-host your own ActivityPub blog, and publish a post. Who can see it? Problem is, it won't magically pop up in all the other server's feed as 'recommended' or 'recently posted'. Only people whom has been inside your server or followed you can seen it appear.
And there lies the problem, it requires the users themselves to do discovery of other servers and start following people/content from other servers to do discovery. Its not a bad solution, but it does assume that your users constantly explore other servers as well.
Domain Specific
I wouldn't really say its a problem, more like something to point out. Is that each application or group of servers probably has it's own gimmick. Take for example Mastodon and Pixelfed. Both are ActivityPub, but if you try to connect a PixelFed server to mastodon and vice versa, they probably would have some issues communication with one another simply because of how each of the project was meant for. PixelFed is meant more for image sharing (instagram-like), while Mastodon is Micro-blogging (twitter-like).
It becomes a thing to consider if your developing an application that hopes to also be in touch with Mastodon Instances. Since it does mean that your application now has to watch out for any sort of Domain specific implementations of Mastodon.
Afterward
Mostly just sharing some of the technical challenges I thought of for implementing an application with ActivityPub. Maybe I might create a project on making an ActivityPub, was thinking of making a typical flashcard-ish website for quite a while, would be interesting to add ActivityPub to it.