Hi,
On Apr 25, 2008, at 11:11 PM, Kevin Smith wrote:
On Sat, Mar 29, 2008 at 8:44 PM, Pedro Melo <[EMAIL PROTECTED]>
wrote:
The protocol is using private storage. I talked to one of the
authors,
Kevin, that told me that a PEP-powered version will be available
sometime in
the future. Using private storage is not a big problem, except for
the lack
of notification on update.
Yep, but PEP where available is nicer.
Sure, no arguments there.
This protocol will fail for servers that don't support
private storage.
The only workaround (and its not even complete) that I see for
this is if
we relax the second point of the requirements. If we store the full
meta-contact data on all accounts, with a version attribute, then
we only
need one of the accounts with private storage available.
Well, we can also set a 'master' account to look after servers which
don't support a useful storage mechanism yet. This avoids getting out
of sync between accounts, and allows us to cope until servers are
upgraded.
Sure but then you have to deal with different accounts available at
different times, each one with roster modifications.
How would you solve any conflicts? Of course you could ask the
client, but this is getting complex pretty fast.
2. Attribute selection
Each roster item has several "attributes" that a client keeps track:
There are no clear rules on which of these we should use for the
meta-contact in case they differ between each contact.
If the contacts are ordered, you pick the dominant order.
Always? What about presence <show>? Should we pick available over dnd
and away? should the order be used as the second level sort field
after <show>?
For example, if two different contacts inside the same
meta-contact announce different geo-locations,
How is one person going to have two geolocs? :)
Multiple resources.
This is a topic for another thread: for PEP nodes that should be per-
user and not per-resource, how do we signal between resources which
one is the most representative of them.
Right now, we opted to rename all the contacts, but it is
debatable if this
is not a excessive behavior.
That seems overkill, to me.
Well, it helps a lot if you later move to or temporarily have to use
a client without meta-contacts. But see at the end.
This applies to any attribute change: name and groups.
It seems more than overkill for groups - it seems unhelpful.
See at the end. I think you and I have to very different views of
meta-contacts :)
4. meta-contact tag algorithm
The spec does not suggest any method of creating the tag attribute.
Right, I think you can use what you like
If we are willing to loose the order attribute (and I would not
like that,
but I want something that just works), there is a fallback
protocol that
requires only the usual roster to keep meta-contacts. If we assume
that
roster items with the same name + groups (basically, if the tag
algorithm
above yields the same hash for your roster entries) belong to the
same
meta-contact, we can implement meta-contacts without the need of
any extra
storage, just the roster.
It's a clearly inferior solution, but I don't see this is an awful
workaround if people must use such servers - proxying another of your
servers for storage seems a bit cleaner to me.
Certainly, I'd get very irritated very quickly with any client which
automatically renamed and regrouped my contacts for me. It irritates
me enough when clients change my avatar automatically.
.....
Maybe we have different views of meta-contacts.
XEP-0209 seems to me to be written in a way to minimize roster
modifications: you create a layer over your rosters, using the data
in 209 and try not to touch the original roster in any way.
This is one approach, but if this is the goal, then 209 is extremely
poor on meta-data. To prevent roster modification, you need to take
in account the name of the meta-contact, and probably the groups
where each meta-contact should be placed on.
Also without a clear set of rules on the interaction of a meta-roster
and the contacts order within with changing presence <show> and
probably <priority>, you'll never have interoperable implementations
*from the POV of the end-user*: the experience is largely based on
each implementation and not on the protocol used. This has good and
bad sides, but having seen the focus groups at work, I've become very
negative regarding people ability to deal with more than simple stuff.
Another approach is the one used at SAPO for a couple of years now.
Its clearly roster-based, and it modifies the roster a lot. If you
rename a meta-contact, all your contacts inside will get the same
name. If you modify the groups of a meta-contact, all the contacts
are set to the same group.
You can think that this is very invasive of your roster, and yes, I
used to agree with you. Thats why I pushed for 209 in recent builds
of SAPO Msg for Mac, because I placed myself in the shoes of people
that think like that. But after going through that experience, 209
created more problems than it solved. I think it does too little to
really solve the problem, and annoyed a lot of lower tech users.
Going back to think about this, I think our initial approach, of
roster modification, is better for our users: it's simpler to
explain, and when they use a client without meta-contacts, they can
still find their contacts, because they have the same name and are in
the same groups as the meta-contact. Plus, we use a protocol that we
know its available everywhere, jabber:iq:roster and it even plays
well with the recent 0237 roster sequencing XEP.
I will miss the order attribute in 209, but just not enough. I will
keep waiting for a real jabber:iq:roster annotation protocol :).
Best regards,
--
Pedro Melo
Blog: http://www.simplicidade.org/notes/
XMPP ID: [EMAIL PROTECTED]
Use XMPP!