[jdev] Best ways for a JID to advertise what services it uses?

Justin Karneges justin-keyword-jabber.093179 at affinix.com
Tue Sep 21 14:24:16 CST 2010


On Tuesday 21 September 2010 07:15:40 Dave Cridland wrote:
> On Tue Sep 21 14:34:54 2010, Stephen Pendleton wrote:
> > The answer to this is key to interoperability for pubsub. If I can't
> > discover the location your nodes I cannot interoperate with you.
> 
> Right, and the ideal answer is to use PEP - or rather,
> pubsub-onna-jid.
> 
> But in some cases you don't want to (because your PEP service is
> minimal) or can't (because you have no PEP at all).
> 
> It's not yet clear to me that a solution is possible.

And maybe you're not always looking for a pubsub service.  There's all sorts 
of additional metadata and application logic that one might want to associate 
with a user account.  However, it's not practical that every XMPP user account 
server in the world implement every extension.  And having to limit your 
application to only those user accounts with special baked-in extensions 
sucks.

At Livefyre, we've attempted to solve this problem by introducing the idea of 
delegate services.  Instead of adding extensions to the user accounts 
themselves, any arbitrary user account is able associate itself with a 
delegate service which provides the extensions.  The problem with this, of 
course, is the same as that of the pubsub problem: given a user account JID 
alone there is currently no way to know what or where the delegated services 
for that JID are.

Something like this might help:

<iq type="get" to="user at example.com" id="1">
  <query xmlns="http://jabber.org/protocol/delegate"/>
</iq>

<iq type="result" from="user at example.com" id="1">
  <query xmlns="http://jabber.org/protocol/delegate">
    <service type="pubsub" jid="users.freepubsubforall.com"/>
    <service type="livefyre" jid="services.livefyre.com"/>
  </query>
</iq>

Just tossing it out as a rough idea to start from.

-Justin


More information about the JDev mailing list