Earlier quoted context omitted.
> And then we have XMPP which doesn't support things like video or voice calling The Jingle extension is about a decade old and it's what Google based its support on. They even played ball for a while and released a good quality open libjingle, then decided that fighting spam from the other open XMPP networks is not worth their time and killed the whole openness concept - despite being an orders of magnitude simpler…
XMPP is a bit complex, and suffers from some problems derived from too much flexibility. The mandatory part of the protocol is too small. This could be fixed by creating a meta XEP that lists all XEPs needed by modern clients. However, it's a very capable protocol. Just see how nice conversations.im is. It doesn't even use GCM, and both latency and energy usage are fantastic.
If you use a client that conforms to the Advanced Client requirements of the IM and Mobile Compliance Suites (with a similarly up-to-par server), you will have a very good experience.