A year ago I tried learning ActivityPub, and more or less failed. I was confounded by a spec that was so abstract I couldn't make heads or tails of it. Turns out I was missing some key things.

I have written a guide to learning about ActivityPub that I wish existed a year ago when I first set out to learn how to write social media servers that conform to the spec:

@darius Me, too (failing to grasp it).

Looking forward to reading this.

@darius Nice write up. Gonna follow the plan you set forth and see where I end up. Thanks for this!

@darius I tried reading the spec and felt like someone was gaslighting me. Looking forward to reading your guide!

@annika Haha.

Spec: "It's easy!"

[Friendly cartoon diagrams]

Narrator: "It was not easy."


From the little I have read it looks like you put a lot of effort into making this clear and informative!

@Alonealastalovedalongthe I've been thinking about it for 6 months and then just vomited out all the words in one four-hour sitting tonight

@darius Hey this is very good! I still get tripped up by the fact that all this info is split among many documents; I'm glad there's now a guide for this.

@darius Thanks a ton for doing this write up. So far I haven't been super interested in ActivityPub at this level (spec and implementation) because from the outlook it seemed dense and hard to read. Now I know better!

@darius I don't know if you want this kind of promotion but it would be nice to share it with the authors (who are here in the fediverse) so they can get some constructive criticism.
I'm sure at least Chris (he's the only one I interacted with) is going to get this well. He really focuses on writing stuff well and comprehensively.

I didn't tag them to let you decide if you want to or not. They are probably going to see it anyway. :)

BTW: I really like the way you tackle it. Congrats.

@ekaitz_zarraga I don't think my post is constructive criticism, because I think the authors did a fine job at what they set out to do: deliver a spec. Specs, especially w3c ones, are not really written for human consumption. I don't think any of my feedback would have made these into better specs; it simply would have transformed the documents into things that are no longer specs.

(And thank you, I'm glad you like it!)

@darius I don't really code anymore if I ever really did, and I'm not gonna write an ActivityPub implementation, but! I super appreciate what you're doing here!!

reading this, even without being personally invested in the thing you're helping other people do, I can immediately tell how helpful it is (and think of times I've tried to learn things when something like this would REALLY have helped)! thank you, this is cool

@darius I had the same experience trying to read the spec! Thanks for writing this!

@darius @KitRedgrave I'm looking forward to it exploding in popularity and ending up on the n-gate Webshit Weekly writeup

mostly because the n-gate fellow doesn't seem to know anything about what he's talking about EITHER but at least he's entertaining about it (usually)

@darius @KitRedgrave and here I am still using FeedOnFeeds like someone who doesn't want to read an entire firehose of a timeline

@darius @KitRedgrave I mean I also follow a lot of folks and I don’t have the wherewithal to read everything posted by everyone. I also still think that the UX of any given RSS/Atom reader is a better match for my reading habits regarding long-form content.

@darius are there ways you think we can explain this better, systemically? When I first read the activitypub spec i thought the introduction was very clear and concrete, so I'm really interested in hearing the specific ways you were confused and how you think we can address those better in our writing.

@nightpool I've been flying today but I haven't forgotten about this. I'm compiling my thoughts into a document for you.

@darius I studied the ActivityPub spec for a small presentation. Your article really helped make sense of it all. Thanks! 🤗

@darius So basically when it comes to activity types: Actors are subjects, Activities are verbs, and Objects are objects, correct?

Sign in to participate in the conversation
Friend Camp

The decentralized web is about trust. You should only join Friend Camp if you personally trust Darius Kazemi with your social media data. You probably only have that level of trust if we are IRL friends or have been internet friends for a long time. Generally speaking this is a small, closed community. In the end, Darius is the arbiter of what is allowed here. If you don't have a good idea of the kind of behavior that flies with Darius, again, you probably shouldn't join this instance. In the interest of specificity, we do have a code of conduct and privacy policy which you should read. Friend Camp features several modifications that were requested by our users. * you can log in via any subdomain, which means you can log in to multiple accounts in the same browser session (for example, log in once on and then as another user on * they are no longer called "toots", they are now "posts" * if you have a locked account and you get a follow request, a reminder appears under your "post" button (on normal Mastodon mobile it is otherwise buried in a sub-menu and you might not see it for a long time) * the emoji dropdown is a neutral smiley face instead of the cry-laughing smiley @mentions are rendered as "@user" for a Friend Camp user and "@user@domain" for remote users. This helps clear up when you follow two people who have the same username on different servers. * there is a "never ask me again" checkbox on the confirmation for clearing your notifications -- more info here * When an mp3 link is in a post, we also embed an inline mp3 player. git commit here * 500 characters of profile text git commit here, requested by @deerful Important Bit from the Privacy Docs: If you want decent privacy (the info doesn't leave this server), the only way to do that is to set your account to private, only accept friend requests from other users, and only ever @ mention other users. Once you start talking to people on other servers, all bets are off. Any private message you send to someone on another server could be looked at by the admin of a different server. This is kind of like email: if you are on a private email server, and you send an unencrypted email to a gmail account, congrats, Google now has the content of that email. But also, you do this every day, so, hey. The internet! Our beautiful icon is based on photo3idea_studio from, licensed CC 3.0 BY. It has been modified by!