Skip to main content


Is it weird that some #ActivityPub implementations don't seem to comply with the standard as thoroughly as others? E.g., #Friendica's outboxes return no "Create" activities, listing posts directly instead. #Funkwhale returns Activity Streams objects only on GET requests with "accept" set to 'application/activity+json', but the header which is mandatory to support is 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'. Also, no implementation treats likes as discussed in the docs. #Fediverse
What would it be weird? The standard is supposed to say how things are working, but if it is working even as a deviation of the standard, what’s the big deal?
What weirds me out is just that: everything in the end still seems to work fine. I mean, the reason a standard exists is so that different implementations can effortlessly interoperate, but how come that these for example are still able to communicate properly with the others?
Because there's no reference implementation projects could test against. Instead projects are mostly testing against Mastodon's implementation, and if it works with Mastodon, there's no need to stick to the standard itself.
My next question, then: why would developers decide to defer from the standard?
I mean, wouldn't it be better follow it closely to be safe? Also, does that mean that Mastodon is the de-facto standard?
From what I understand, this standard gives developers much leeway implementing it. As a result, it is hard to stick to the standard and having a unified test suite for it.

On the other hand, it is easy to test your implementation against Mastodon’s because you can see wether posts, comments and likes are federating back and forth. Since Mastodon is the most popular ActivityPub implementation, it became the de facto reference implementation.