[Standards] Server-side Message Logging - alternative to XEP-0136
martin.morrison at gmail.com
Wed Aug 11 14:13:01 UTC 2010
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...
Size: 66254 bytes
Desc: not available
More information about the Standards