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.