From a practical sense, ActivityPub may be the obvious choice as it gives easier interop with the largest federated platforms.
But what else? There are existing platforms built on these protocols, such as movim for xmpp, and another for matrix I forget.
From a technical standpoint, are there any major pros and cons?
Email works well and is federated
Although it’s federated nature is kinda dying.
If you’re not on one of the major providers good luck getting people to see your email.
I know ☹️
I think XMPP is a nice supplement to ActivityPub instances for more private chat. You can quite easily hook the user database of Mastodon or Lemmy to an XMPP server and have the same user address work for both that way.
I would even say XMPP would be a better underlying communication protocol under ActivityPub, as it specs many aspects that ActivityPub does not.
XMPP via its pubsub implementation could function similar to ActivityPub, but that part of XMPP is a bit neglected as few apps use it for anything more complex. XMPP’s real strength is in real-time communication and I think it’s good to stick with that.
Is it really neglected though? There are dedicated extensions for it, and movim.eu uses it without issues.
XMPP’s real strength is in real-time communication
It’s an extensible communication protocol and has been extended to many use cases, and has a good track record of performing well and handling extensions well. I’d argue this makes it a better candidate than activityPub.
In a parallel universe, we may have had less federation issues had we gone xmpp!
Matrix is too hefty. XMPP is stateless sort of. ActivityPub just works.
And?
And… that if “activitypub just works” , so does XMPP.
And… XMPP servers offer better performance and taking less resources than any of the leading AP projects.
And… XMPP already has E2EE.
And what do you do about other clients? What happens when the user wants to clear messages on the server when they’re fetched, but doesn’t want to do that for the social network rooms? What about moderation.
XMPP is good at a very specific thing and I don’t think its users would like all the necesary changes.
None of your questions are about the protocol, but implementation details of the application.
My point is that the protocol doesn’t work well for the use case.
And my point is that the your complaints are not related to the protocol, but the applications using it.
Not only that, we are talking about different layers of the OSI model. XMPP should be compared with HTTP, not ActivityPub. There is absolutely nothing stopping someone from implementing the ActivityStreams vocabulary on XMPP.
From my understanding developers often complain about activityPub. Can we really say that it “just works”? Federation and interop issues are common as well.
It works better than anything else.
It may seem so due to its success, but I’d argue its success was more tied to luck and timing than technical superiority.
Mastodon was growing and “new” during the period of the decline of social media, and specifically during several moments of Twitter having issues with moderation, and later on acquisition by musk.
Similarly to lemmy, the Reddit third party API fiasco.
I don’t think this means that it works better than anything else. It was just the most obvious choice to users at the time.