teradyneezeri: (Default)
teradyneezeri ([personal profile] teradyneezeri) wrote2015-06-28 08:31 am

[Quora] XMPP Advantages and Limitations

Just a few moments ago, I wrote a rather long and detailed answer to a question on Quora, "What are the advantages and limitations of XMPP (Extensible Messaging and Presence Protocol)?". I would like to share the answer here, as I placed a lot of effort into writing it.

Disclaimer: While I am not an XMPP expert by any stretch of the imagination, I have been researching everything behind it, and am something of an evangelist for its use.

XMPP is an open protocol for instant messaging and presence detection. Much of its original standardization comes from both Internet Engineering Task Force, while its standardized extensions come from the XMPP Standards Foundation.



XMPP itself is very robust and powerful, owing mostly to its standardized and decentralized nature. With its open nature, anyone may run an XMPP server, given that they possess the hardware and knowledge to do so. If a single XMPP server is taken offline, only users of that specific server are affected, while those of other servers are unaffected.

This open nature also allows for federated connections between users of different servers, which benefits the users more than the service providers. If someone wishes to utilize a server closer to their geographic location, they would not be limited to talking with people on that server, but instead be able to communicate with anyone using other servers.

On the reverse, federation of a server is completely optional, which allows some servers to close their S2S (server to server) connections for the sake of security. This is useful for small teams, and even more so for businesses. This allows server owners to keep their server dedicated to specific task, or to even implement special security to keep out eavesdroppers who might be seeking sensitive information, such as billing or personal data.

XMPP is also extendable and adaptable, allowing for the creation of bots very similar to IRC bots. These can enable a user to accomplish tasks such as posting to a blog, adding and removing reminders and calendar information, and even controlling media devices within their own house. LiveJournal is known for their "Frank" bot, which provides reminders, alerts users to comments, and even allows them to write short journal entries, all from their XMPP client.

Another example of its extensibility is the Jappix Project, which is a social networking system built around XMPP. Not only is it a browser-based XMPP client, but it also has a status update system which allows those who follow you to see your updates, and even comment on them. This data can also be pulled from the server and displayed on a web page for others to see, such as the Jappix Me service.

Then there is the client-side advantage that not enough people talk about: the plethora of clients among the many platforms. There are XMPP clients for nearly every device, including at the command line level for both Windows and UNIX-based systems. The XMPP Standards Foundation keeps a list of known clients on its own website. http://xmpp.org/xmpp-software/cl...

Additionally, XMPP is designed with the capibility of a single user being signed in through multiple devices. It utilizes a numerical priority system, where a higher priority rating causes messages to be directed into that client, rather than others where the user might not even be present. This system is typically applied through the Status system, where a status of Away would have a low priority, while a status of Available would have a much higher priority. Many clients will also set the priority to -1 for Do Not Disturb, causing messages to completely ignore that client.


While there are many advantages to using XMPP, there are also some disadvantages.

For one, many people either do not know of the service, or are unwilling to use it due to their friends using another protocol. This follows two tropes: "The Paypal Effect", where people use a service because many other people use it; and the "Rule of the Default", where people use whatever is default on their system—Skype, and Windows Live Messenger before it.

There is also no official client or server for XMPP. It is a decentralized system, and even when someone is using an XMPP service—Facebook Messenger, LJTalk, WhatsApp, Google Talk/Google Hangouts, etc…—they often do not know it is XMPP due to the lack of branding or openness from the service provider.

The lack of an official server and client can also frighten some people, who are so accustomed to relying on official clients and services, that they will see XMPP as inferior simply for lacking such a title. (Aside: Admittedly, one can argue that XMPP is the official messaging and presence protocol of the internet itself, due to its status as an offical internet standard. However, many people will not understand this.)

The Jabber ID (JID) username schema can also be somewhat daunting to users, especially those accustomed to having only a simple user name. Having to remember something akin to an email address can confuse those who may be considered tech illiterate.

There is also the confusion caused by many clients which do not have a simplified user interface, exposing power user tools which often have little to no explanation. For example, many clients expose the ability to alter the priority, but give no explination as to what the feature is for. Compared to a client such as Skype, which is made to just work, this can cause problems for those who are not knowledgable about XMPP's inner workings.