[Standards] Server-side Message Logging - alternative to XEP-0136

Martin Morrison martin.morrison at gmail.com
Wed Aug 11 14:13:01 UTC 2010

Hi folks,

I recently got to the point where I decided to scratch a long-time itch 
of mine regarding storage of IM message history. I designed and wrote an 
extension to XMPP to solve my problem, and am posting it here to gather 
feedback and in case it is of wider interest to the community.

In brief, my problems were twofold:

1. My carefully cultivated log history from the past 7-8 years is 
becoming fragmented due to the increasing number of devices I use to 
connect to IM networks, each with their own local logs/format.

2. My increasingly mobile lifestyle means that I am more likely to want 
to transition an ongoing conversation from one device to another, or 
pick up new conversations on a mobile device, even if my desktop is 
still connected (which it always it) and the phone isn't always 
connected (which it can't be). Offline Messaging is meant to make this 
work, but requires careful management of online statuses on different 

My solution is server-side message logging, with a flexible access 
protocol allowing my many clients to stay in sync.

I've written up the spec in the XEP template, the .xml of which is 
attached, and there's a link to the HTML-ised form below. It's only a 
first draft, notably lacking much content on error handling.

A quick note on it's relation to existing XEPs:

* XEP-0136 seems to have a similar goal, but has an excessively complex 
protocol/data model. It also didn't address my desire to be able to 
offload processing of searches of my logs onto the server (after all, 
complexity in the server is good, right?)

* XEP-0280 attempts to solve my second issue, but a) feels very wrong to 
me (sending messages with the wrong 'to') and b) doesn't address 
transient connectivity, which is increasingly common with mobile devices.

I have a working implementation of a server component running against 
ejabberd (using it's mod_service_log to route all stanzas to my 
component). Once I've cleaned it up and added some error handling (at 
the moment it crashes out whenever the connection goes down :-)) I'll be 
publishing the code somewhere.

I also have a mostly complete iPhone client written that accesses the 
logs stored on the server, and will hopefully be finishing that up over 
the coming months. I plan to port that to iPad too, probably.

So I'm half way to "rough consensus and running code". ;-)

I welcome any comments anyone may have on my approach, perceived issues 
with the protocol, possible improvements, etc. Further, if there is any 
interest in taking this further down the standardisation route, that's 
cool too - though having solved my problem, I am at least happy in the 
short term. :-)


HTML link: http://external.ensoft.co.uk/~martinm/xep-logs.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xep-logs.xml
Type: text/xml
Size: 66254 bytes
Desc: not available
URL: <http://mail.jabber.org/pipermail/standards/attachments/20100811/a7d7436a/attachment.xml>

More information about the Standards mailing list