My perspectives on the Fediverse protocol and its relationship to #ActivityPub....
1 Boost
0 Likes
My hope is that course correction is still possible, albeit likely not with everyone following..
Great article, as always. In your terminology you might add "The mastodon" as a synonym for fediverse. In a recent poll I did about one third is okay with that 😅
I prefer to see "fediverse" as just a category word, in the same way we say "web" or "internet", both being very diverse and heterogeneous environments.
In Pubby, the ActivityPub library I built, my initial aim was to implement the widest possible compatibility with ActivityPub. Then I soon discovered how many AP specs were never implemented faithfully, and how much the work at some point became more like "provide a general-purpose compatibility layer that exposes the bespoke APIs that Mastodon implemented over time, implement crucial FEPs that have only been implemented in Mastodon (like the quotes protocol), provide a way for specific implementations to pass their custom payloads in them (similarly to what Pleroma/Akkoma/Friendica ended up doing with their extensions), and do a bit of guesswork over the features that different implementations did differently".
You're right when you say that in some way Mastodon saved AP by filling the gaps with practical implementations that then became de facto standards.
But AP was also harmed in the process because protocol features that AP described (like Audio activities, Group entities or Threadiverse model with more flexible definitions of actors) eventually were neglected because they were not considered important to Mastodon. Eventually they were implemented in other projects (Lemmy, Funkwhale, Friendica...) that, without the same critical mass as Mastodon, failed to become de facto standards, leaving AP developers alone to wrestle for compatibility with very fragmented implementations rather than with a well defined standard.
In hindsight, nothing of this is new. IRC and XMPP went exactly through the same issues - a flexible standard that ossified and failed to evolve over time, leaving dominant implementations to fill the gaps and hope that their protocols and APIs became standard extensions, until the landscape was so fragmented that every developer who wanted to seriously build on the protocol had to wrestle with compatibility with at least a dozen of other existing projects.