What you can always do reliably is have a buddy list with status presence, and do 1-1 chats. In my company, with all Linux clients, we couldn't even manage to send files reliably across different clients.
What Google and Facebook need across a messaging service is much more:
* sending pictures, displayed inline * sending audio messages * making phone and video calls * sending money * being battery friendly through push notifications * having chat history reliably stored across devices * persistent group chats with advanced client-level tuning (eg: turn off notifications), again shared through multiple devices
Notice that most of these features require implementation and design on both the server and client level; not having control over client implementations means it might take many years to get a feature standardized and adopted by the majority of clients.
I think Google really tried to make XMPP go forward, but in the end it was slowly them down too much compared to competitors going full proprietary like Apple.
Much like Apple is doing with the "green bubble" shaming on their keynotes.