I've personally not had terribly good experiences with Matrix. I found it to be slow at times, but more annoyingly, it would very consistently not un-encrypt messages both for me and the people I was talking to, requiring both parties to regularly need to re-send messages until they finally unencrypted properly. This made it a real ball-ache to use, as you could send a message, and then hours later have someone else say they can't read it. I'm also not a fan of how much Metadata it spreads around.
XMPP on the other hand has always been snappy and fast, and I much prefer the clients available for it. It's currently the most promising federated option, IMHO, with Movim being the most promising client as a Discord replacement.
It's still missing some essential Discord-like features, such as groups of rooms in a server and drop-in voice rooms, but both features are being actively worked on, and a funding campaign was started to accelerate development.
But what it can do already is:
- Excellent text chats, including with very good optional encryption
- Group voice/video calls with screensharing (must use a chromium based browser to screenshare an app's audio)
- A neat integrated blogging feature for communities & individuals
- a built-in paint program to draw stuff to input into the chat
- Full working and proven federation thanks to the XMPP back-end
