[jdev] XEP-0100 and roster/legacy contact list sync

Massimiliano Mirra iolgzc102 at sneakemail.com
Sat Dec 1 07:44:08 CST 2007

Hello, list!

I'm reading XEP-0100: Gateway Interaction and trying to understand the
options with regard to legacy contact list/roster synchronization from
the point of view of the gateway author.

If I understand correctly, the gateway may or may not push legacy
contacts to the user's client for them to be added to the user's

"The gateway MAY initiate adding of the legacy contact list items to
the user's Jabber roster."

In practice, though, user may later add legacy contacts via <presence
to={contact at gateway} type="subscribe"/>, and that will have the
side-effect of changing his roster.  So, to avoid having only part of
one's legacy contact list in the roster, it's best for the gateway to
always "initiate adding of the legacy contact list items to the user's
Jabber roster".

(XEP-0100 also says that this shouldn't be done by 'sending a presence
stanza of type "subscribed" from legacy contact's JID' but by roster
item exchange.  From what I see, it's usually done by sending presence
stanzas of type "subscribe", which again when accepted will cause
roster changes as a side effect.)

Now, assuming that user and gateway want to do their best to keep the
Jabber roster and legacy contact list in sync, what happens if user
adds a legacy contact through a legacy client (thus without the
gateway's knowledge)?  When user connects again via Jabber, is the
gateway supposed to notice that a new legacy contact is available, and
push it to the user (using one of above methods)?

Alternately, assuming neither the gateway nor the user are interested
in synchronization, is it acceptable for the gateway to send no
<presence type="subscribe" from={contact at gateway}/> from legacy
contacts nor roster item exchange packets, but just ordinary <presence
from={contact at gateway}/>, and not affect user's roster at all?

Massimiliano Mirra

More information about the JDev mailing list