Jiva Technology

Configuring XMPP Servers

Our web app at Tutorhub.com uses XMPP under the covers to send real time updates to in-browser clients. The results have been great, but we’ve found that as users sign up or modify their details, it requires a lot of configuration for the PubSub and PEP nodes. The web app sends configuration messages on the part of users, but the asynchronous nature of XMPP makes it harder to ensure that everything has worked smoothly and configuration succeeded.

We’ve identified possible solutions that involve custom ejabberd modules and the like, but this creates new problems: lock in, support difficulties (e.g. what happens when ejabberd internals get updated) and we lose features like decentralization.

Best practice in this space seems to be unknown and familiar web development concepts unused, so Theo has been toying with the idea of an HTTP gateway that operates in a similar way to RESTful services for operations where we care a lot that messages are delivered correctly, such as IQ stanzas and dataforms, and where efficient transport is less of an issue. The HTTP service would provide a convenient interface for configuring XMPP servers, probably using http basic access authentication to deal with login and then build upon the URI’s specified in the XEP’s to provide a very simple synchronous interface which other application developers can hook into.

We propose to put this out there under a BSD license, so if anyone has any input or ideas, please get in touch to the benefit of all.

P.S. While doing a bit of research, Theo’s come across a number of useful resources:

http://idavoll.ik.nu/wiki/HTTP_Interface shows exactly what Theo was thinking of – but aimed solely at Pubsub (a damn good start), although it doesn’t seem to have been touched in 2 years.

http://xmpp.org/extensions/xep-0060.html#registrar-querytypes gives out a URI structure that could be used as a well defined way of building the RESTful HTTP service

http://xmpp.org/extensions/xep-0099.html provides a very consistent framework that would map very nicely onto RESTful HTTP service

http://xmpp.org/extensions/xep-0147.html more information on URI’s

Contact

Regus House
1 Friary

Temple Quay
Bristol
BS1 6EA
United Kingdom