XMPP Turns 12
downloadsquad.switched.com
downloadsquad.switched.com
Starting at the lowest level, XMPP streams are framed by the 2nd level elements in an XML document. Clients and server must keep an XML parser open for the lifetime of the connection. If you don't have a parser like expat available, then you either need to dedicate a thread to the connection or use ugly regex style hacks to handle the framing. Almost any other framing mechanism in use today would have been easier to use (null bytes between messages, length prefixed messages, and so on).
Moving up a level, the use of XML namespaces is over designed. XMPP uses unique namespaces for each type of connection (client to server, server to server, component to server). This provides no benefit to any party and is ugly for server developers where they need to deal with all types of connections.
I could go on. I have not even gotten to the application layer (RFC 3921).
Other protocols have warts, but not like those that I have encountered in XMPP.
The protocol is amongst the worst imaginable. Over engineered crap.
really though, there are more users than you expect.
Do all gmail users use gtalk? Do they use it as their primary IM? I'd expect not.
I wonder what the state of the world would be like today if XMPP had been more approachable for developers. Would we still have instant messaging silos like MSN Messenger and AIM?
Yes, to a certain extent GTalk and facebook chat have taken a little market share from other IM clients (Not sure how much, maybe 10%?).
But XMPP is nowhere when it comes to group chat.
Overall, there are many more active users of XMPP than there are users of IRC. When I say active users, I mean users who send and receive messages. I am not including users who only have the chat widget open on Gmail.
I'm skeptical. Post some figures if you have them, especially on volume of chat. Idle users mean nothing.
That said, XMPP MUC (multi-user chat) is terrible, overengineered and less usable than IRC is.
(Disclaimer: I hacked on bits and pieces of XMPP client in Telepathy).
https://sites.google.com/a/chromium.org/dev/developers/desig...
[ricardo@Brynhildr ~]% /sbin/ss -p | grep chromium
ESTAB 0 0 192.168.66.67:50225 74.125.45.125:xmpp-client users:(("chromium-browse",2766,155))
CLOSE-WAIT 1 0 192.168.66.67:48406 174.143.235.145:www users:(("chromium-browse",2766,162))
ESTAB 0 0 192.168.66.67:34108 74.125.229.55:https users:(("chromium-browse",2766,148))
[ricardo@Brynhildr ~]% host 74.125.45.12
125.45.125.74.in-addr.arpa domain name pointer yx-in-f125.1e100.net.Recently wrote a bosh server in twisted/python and I find that even something that simple has scope for improvement. The specs for XMPP and BOSH are really badly written.
My bosh server - https://github.com/directi/chirkut
Based on Jeremie Miller's involvement in TeleHash (http://news.ycombinator.com/item?id=2068817) which is JSON based, I think he would agree :-)
The IETF group working on IM was comprised of people from Netscape, Microsoft, AOL and a few others. At that point, AOL owned the IM world through AOL Messenger and (then recently acquired) ICQ. Microsoft was starting to make a dent with MSN Messenger after they started bundling it with the O/S and everything.
I was following the IETF discussions and mailing lists, and after a couple of months realised that the people on these lists had no reason to make things happen -- on the contrary. Everyone wanted AOL to open up the ICQ/AOL networks; they wouldn't. Everyone was already working on their own IM protocol, and didn't want to share it with the others -- they just wanted the OTHERS to share THEIRS. The discussions were long and pointless, revolving around semantics and irrelevant scenarios.
XMPP/Jabber developer was among the participants. The suggestions were full of flaws, complex and inefficient to implement, and no one liked them. But he was the only guy releasing code. And after a couple of years (sometime in 2001 IIRC -- I was no longer closely following it) it actually became usable.
It is still inefficient; it is still too complex for what it does; But for the last 9 years or so, it was the only option for a documented protocol with an open source implementation that you could find cross-platform clients for and install inside your own network.
And that's a win.
The virtues of a realtime decentralized but federated message passing network... reduced to "chat".
Yeah, the chat network turns 12. Congratulations XMPP folk.