Hi,

On Apr 3, 2008, at 8:52 AM, Remko Tronçon wrote:
For more than 5 years now, this is being used in production at SAPO. If several contacts have the same hash (based on the algorithm above) then the
client displays them in the same meta-contact.

This poor man's metacontacts approach could be enough, indeed. I don't
really understand yet why you would do the complex hashing thing, I
would just (optionally) group all contacts with the same name within
the same group into one metacontact. This would mean that, if one of
the sub-contacts is in two groups, it would be in a meta-contact in
one group, and be separated in the other. As far as I understand, with
your approach, it wouldn't be in any metacontact at all?

The hashing is a mere implementation detail, actually. As long as you specify the you must compare the lower-case versions of the name and the groups (in a specific order) it will work out ok.

I don't like the term lower-case. I prefer some sort of case-ignoring stuff, but I'll leave that for native speakers to sort out. The point is to compare ignoring case.

As for the difference in group membership given rise to two meta- contacts, yes, it would.

Right now, I don't have a strong opinion against your way of doing things, but in your scenario, it seems to me that each meta-contact is a per-group entity. So a single roster item could belong to different meta-contacts, if he belongs to several groups. This is a problem for me in two situations:

* renames: if I rename one meta-contact, I need to rename the roster items that belong to it, and this will undo the meta-contact in the other group; * group-less roster displays: if your client has an option not to display groups and just bunch the contacts in a single list, ordered by some metric like <show> or other complex rule, then you get N meta- contacts, one per group.

In the end, I still prefer to have a strict rule (name and groups must match). I think a more loose rule like yours will open up problems when you start to think about renaming and stuff.


Things become more complex when you stop displaying the roster name to
the user, and only display the names that the user assigned to himself
(nickname xep). Maybe in that case, you would have to make sure that
the roster name is something sensible initially, and you create
metacontacts by dragging & dropping contacts on each other, which as a
result would rename the contact to the item you dragged onto it. The
user would never see the actual assigned 'names' in his client, but
they should be sensible because other clients might show it.

I like to show the nicknames and other info the contact has chosen with lower priority to my client, to prevent spoofing attacks. The user (my client user) will see the information that he chooses (name, group), and optionally, in lower contrast colors, information under the contact control.

If I give too much relevance to the user nickname or other information in control of the contact, then I think we are opening up a lot of avenues of attack. Just showing the avatar is problem enough.

I think clients would be better off showing that information as a "More information"-pane at the time of subscription and in context- menus, but ask the user to choose the name for the meta-contact.

Best regards,
--
Pedro Melo
Blog: http://www.simplicidade.org/notes/
XMPP ID: [EMAIL PROTECTED]
Use XMPP!


Reply via email to