Why use XMPP: native clients vs generic IM alternatives

XMPP, the eXtensible Messaging and Presence Protocol (translation: open IM) rocks. It has a rich feature set. It's well designed. And as a bit of a security nut I especially like that it supports strong encryption and uses a decentralized, federated protocol like e-mail. Anyone can install their own Jabber server (like TurnKey ejabberd). That way private conversations within your domain never leave the security of a server under your direct control. Just like e-mail.

XMPP is actually pretty popular, but most people using it probably don't even realize that they do. They just log into XMPP servers with a multi-protocol client such as Pidgin that doesn't have full support for the XMPP protocol. Just enough to get by with the chat basics.

The alternative is to use a native XMPP client. One that focuses on Jabber. A couple of the best native Jabber clients I've tried are Gajim (implemented in the PyGTK framework) and Psi (implemented in Qt). Both have a similar feature set and are pretty good. I like Gajim a bit better because of how it implements message notification - as unobtrusive corner pop-ups, ala Thunderbird ReminderFox.

Full support for Jabber provides such benefits as:


  • improved ability to control administrate MUC rooms

    • silence/kick/ban users (like in IRC)
    • change their privilege levels
    • change the configuration of a room on the fly (after it has been created)
  • ability to administrate your Jabber server in-band (from the client) of servers you control. - add/remove users - change passwords - broadcast announcements (everyone connected to the server receives)

    (better usability compared with the web interface)

  • change your password even if you don't have administration privileges

  • ability to discover services/transports

PS: Google Talk used to be based on XMPP until Google did an evil thing and announced it was abandoning open standards for instant messaging. Yikes. Let's hope they don't do that one day with Gmail.



Jeremy Davis's picture

Hopefully Liraz will post back to you but he is really busy so it may not be soon...

Regardless, thanks for posting. You raise some interesting points.

jitsi looks really cool! Your experience/comment with regards to eJabberd and latency is interesting. Theoretically eJabberd and Prosody should be equally effected by network latency; however after a little research I note that it seems Prosody supports some compression that perhaps eJabberd doesn't? (which is probably irrelevant for text, useful for speech and would make huge differences for video!) Also it seems that Prosody it less resource intensive so if resources are limited then that might also be a factor.

I had a look at your ownCloud link and other than reference to fixing Prosody bugs in the changelog I didn't get a preference for that over any other XMPP (but I'm happy to take your word for it...)

From what I could see I'm not sure that jitsi-meet requires Prosody, just that by default it recommends it because it's light weight and easy to configure (OOTB it is pretty much ready to go). After a bit of googling I gather that apparently if you turn off user authentication in eJabberd it should work with jitsi-meet (but I didn't test or anything).

Regardless, it seems that although eJabberd is still (by far) the market leading XMPP server, Prosody is a low resource free software alternative which is under heavy development with a vibrant community. Also the fact that it's written in a relatively friendly language - lua (Prosody) vs erlang (eJabberd) probably helps get new developers on board. It could be worthy of an appliance too? (Alongside the eJabberd one, rather than instead of...)


Add new comment