Usability/Roster

The roster is the entry point for the user to their contacts. It is thus a key part in the user experience of any Jabber client.

= Roster groups =

Roster entries are organized in groups. There are two fundamentally different ways to model roster groups in a user interface.

Hierarchical model
One way is to organize contacts in a tree-like (possibly nested, see XEP-0083) structure, where contacts are nodes which are children to group nodes. If a contact is present in multiple groups, it is is also represented by multiple nodes in the tree. This is the traditional way to do things.

Tag model
Another way is to treat "groups" as "tags". Contacts are then shown in a flat list and the tags attached to them are shown next to the contact. The filter capabilities of a collapsible tree structure is replaced by allowing to filter for (possibly multiple) tags.