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.