%ents; ]>
Extended Roster This document defines a way to handle extended roster items. &LEGALNOTICE; 0057 Retracted Standards Track Standards None Alexey Shchepin alexey@sevcom.net aleksey@jabber.ru 0.2 2003-04-28 psa Changed the status to Retracted at the request of the author, since the proposed protocol was incompatible with XMPP and clients have begun using jabber:iq:private for this kind of functionality. 0.1 2002-11-12 as Initial version.

The main purpose of this document is to make roster not only a "contact list", but also a "list of useful items". This means that the user has the ability to store not only users' JIDs, but any JID that he wants to quickly access with more information than just the name, subscription and roster groups.

All information, that can be stored for each item can be divided into three categories:

  1. Information necessary only for server-side. E.g. we can have a server module that can process "visibility" to each user in roster (by sending custom presence to this user automatically, without special client-side support of this).
  2. Information, neccessary only for client-side. E.g. user description of this item.
  3. Information for both sides. This is at least the JID, category and type.

Using jabber:iq:private as in &xep0048; for storing this information has one big problem: it is hard to mantain roster data in two separate places. When a client is online, then the client application can handle jabber:iq:roster changes and make similar changes in private storage, but when the user is online with a few different resources, or when he is offline, then making the information consistent is very hard task (a roster can be changed when user offline, e.g. if someone is making an account transfer).

But we have a place where this problem does not exist: jabber:iq:roster. We can store it in <item/> subtags. Existing server implementation MUST NOT remove <x/> tags from it. In this case all information always relates to its JID and disappears when this JID removed.

JID, category and type are stored as attributes of <item/> tag. Categories and types are the same as in disco. Official categories and types associated with disco are administered by the ®ISTRAR; see &DISCOCATEGORIES;.

]]>

This information is implementation-dependent, so to provide flexibility for it, the jabber:x:data namespace defined in &xep0004; must be used. The client can set these parameters by setting this item with this form with type='submit'.

visible ... ]]>

This information stored in <x/> tag with namespace jabber:x:roster:item. Following subtags can be used for diferent types of JIDs, however client applications can make this set bigger, to implement more functions.

For all categories and types of JID allowed following subtag:

  • desc: A description or note describing the JID.
For all JIDs with category=client allowed following subtags:
  • always-visible, always-invisible: The client should send custom presence to this JID to be always visible or invisible to it.

For all JIDs with category=conference allowed following subtags:

  • nick: The nickname to be used when joining the room. If few such tags in one item, then first is used by default, and others used if first not available.
  • password: The password to be used to joing the room.
  • auto-join: The client should automatically join this room once the user has been authenticated, and the roster have been fetched.
My old good friend ]]>
bla bla bla visible bigsecret aleksey alexey Jabber developers talks ]]>