OSCON 2004: Dana Moore on Jabber Messaging


Jabber is not just for IM anymore. Conversational interfaces are less structured, more flexible and can be ambiguous. They can support S2S (system to system) as well as they support P2P (person to person). Applications need presence, fault-tolerance, identity, and mobility the same way people do.

XMPP is the eXtensible Messaging and Presence Protocol, the basis for Jabber. Jabber streams XML messages. Conversations open and close with <stream> tags. The server works as a switch and doesn't maintain much state on users.

Pervasive services follow you wherever you go. The service knows that you're subscribed to them. Dana builds sensor systems and wraps Jabber communication code around them so they understand presence messages and can send status messages over XMPP. He describes an alarm system (briefly) built on XMPP. He uses the term "constellation of services."

The protocol is dirt simple. XMPP has three element types <presence>, <message> and <iq>. The <presence> and <message> elements are relatively self-explanatory. The <iq> message is for communicating with the server. The <iq> message, for example, can be used to tell the server that you have a service to offer. This allows services to be published to the server and other users to discover them.

Dana is working on the DARPA UltraLog project which is attempting to create extremely survivable software systems. The agent architecture for the system is built upon Jabber. The network is dynamically reconfigurable and can simulate attacks. This was made possible by using agile languages (Ruby) and Jabber. One benefit was that IM clients served as the ready-built user interface to the system.

Dana's bumper sticker summary of the talk is "Jabber enables Web services without the baggage."