This year I host my own Matrix server, with the help of Desert. Setting up the server was painful and there was no clear instructions. The solution that made it work, I can't find anywhere else on the Internet. It required messing with Python packages. It consumes far more system resources than XMPP ever did, just sitting there. Over the last year, the server changed significantly and wouldn't start until I modified the config to suit its new requirements.
rant 5/?
I've looked at the protocol. I was dismayed at XMPP at the time because it was all done in XML. Matrix uses even worse JSON over HTTP(s). {"errcode": "M_BAD_JSON", "error": "errors are JSON",}, and more importantly: user identity is tied to a Homeserver. They think removing the padding = from base64 encoded binary data will help keep message size down. For a while, video conferencing was just opening a mini web page and doing WebRTC.
rant 3/?
There are only a pawful of clients. I've tried many of them; they barely function, are slow as hecems, and are bloaty. Most of them are Chrome. One of them is Chrome that renders everything in JavaScript, consuming large amounts of the GPU. The developer of the premiere "FLOSS" client will happily give your private data over to violent extremists that disappear folx. None of the clients I've seen have many configuration options. I'm blessed when a client notifies me of a message.