In the world of communications it always seems as if every standard has another, competing standard. For IP call control we can use SIP or H.323. In America we use T1s for digital trunks. In Europe they use E1s for the same thing. There is no shortage of voice and video codecs to choose from. It’s rare that anything is ever the only one of its kind.
Competing standards come about for a number of different reasons. In some cases older standards are superseded by better ideas. Sometimes one standard is just plain better at something than another and vice versa. However, there are a number of cases where there are two competing standards that arguably accomplish the exact same thing with neither having a technical leg up on the other. In my opinion, this is the case with the two major instant message and presence standards, XMPP and SIMPLE.
XMPP (Extensible Messaging and Presence Protocol) is an evolution of Jabber which was developed by the open source community in 1999. It was later adopted by the Internet Engineering Task Force (IETF) in 2002 and was approved as a standard in 2004. As you may know, the IETF is the standards body responsible for Internet protocols such as DNS and SIP. XMPP is used for instant messaging (IM), presence information, and contact list management.
SIMPLE (Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions) was ratified in 2004 by IETF as a standard for IM and presence. Wait, didn’t I just say that the IETF ratified XMPP in 2004 for IM and presence? Yes, and not only do they basically do the same thing, they were adopted by the same standards body in the same year.
There are, of course, differences between the two protocols and I suppose one could argue that that’s enough of a reason for their simultaneous existence. In my mind one of the biggest differences is the way that they are architected. XMPP is inherently client-server. It expects something between two XMPP-aware clients to manage state and offline messages. On the other hand, SIMPLE, like SIP, was designed to work in a peer-to-peer mode where intelligence lives at the endpoints. That’s not to say that SIP itself hasn’t evolved to include a number of different servers between clients, but the intent of SIMPLE was that those servers did not need to be there. That is not the case with XMPP which expects something in the middle of its conversations.
There are other differences such as the formatting of the IM data, the way media and signaling separation occurs, URI representation, authentication, and the requirements of the transports layer, but none seem like big enough reasons to have two different protocols for the same thing.
So, what does all this mean? Well, first it’s important to know that XMPP is much more predominant than SIMPLE. Because of Jabber it had a bit of a head start and lots of clients adopted it. SIMPLE clients exist, but there are far fewer of them. There are even SIP clients that use XMPP for IM and presence. Personally, I think that SIMPLE is the better approach, but like VHS vs. Beta, the good guy doesn’t always win.
Until the day comes when there is only one protocol, gateways exist that can federate presence and IM between XMPP and SIMPLE clients. The Avaya Aura Presence Server is one such beast. So, if a Microsoft Lync client (which to my understanding uses SIMPLE) needs to IM with a Google Talk client (which I know uses XMPP), you need a gateway between them before any meaningful conversation will occur.
Unless you want me to delve into the details of the protocols, this is all I am going to say today. My hope is that you now realize that there are two standards for essentially the exact same thing. Also, you may run into situations where clients of different stripes need to communicate with one another and it’s important to know that gateway solutions exist to get them talking.