XMPP comes with the additional downside that most of the tooling around it is (or at least, a decade ago was) written in Erlang. Which is a niche purely functional language with a weird-ass syntax that is challenging to transition to from the C-syntax-derived procedural/OOP languages that make up the vast bulk of mainstream programming.