Overall I've been happy with Matrix (private not federated), but it's very convoluted. Whenever anything goes wrong it's really difficult to figure out why, as there is a lot of complexity. And once you set something up, it's really hard if not impossible to make a change.
For instance, since it's built for federation, changing the URL is impossible.
So I'd like to try out XMPP since it's much more lightweight and simple. I may not switch, but want to explore.