What you clearly forgot were features basically everyone is using today that don&#x27;t work with XMPP: sending pictures, sending voice messages<p>&gt; - Federation is good<p>I think it actually isn&#x27;t. You&#x27;re locked in to one server with your account. The server might shut down totally. The server might shut down federation (just like google did). Registering is another step hindering usage, Peer to Peer should be the way to go.<p>There are two things you need servers for: collecting messages while you&#x27;re offline and later pushing them to you, having a registration service for a nickname.<p>At least the first one doesn&#x27;t require accounts to be bound to servers at all. A model could be that message bouncing servers are run by the app developers. Friends computers that are running could act as bouncers.<p>Which brings me to xmpp addresses. They&#x27;re there to be able to initiate contact with someone you haven&#x27;t contacted before. Nobody is using the username scheme anymore, because it really sucks. Facebook uses a) real names, where you can search somebody with the real name and more importantly uses b) the friends of your friends in suggesting who you could add. You can easily implement the latter feature also for p2p messenger protocols. Other messengers often use other verified usernames like phone numbers, that users already have in their contact book. I don&#x27;t see how this is possible for a p2p messenger protocol.<p>&gt; In the modern world, people are afraid of XML<p>It&#x27;s just mapping very badly to native data structures in any programming language except xslt.
This makes working with XML lots of work. Sometimes this is justified, as XML is a really good fit for the data structure of the document. That&#x27;s generally the case when you have some text with markup, like HTML or for word processor files. Otherwise it&#x27;s just an unneeded strain on developers.