[Standards] Entity Capabilities Woes
remko at el-tramo.be
Wed Mar 14 04:58:04 UTC 2007
> After talking through the issue here at Jive, we thought we had a simple
> and great solution. After talking it over with a few others, it turns
> out this has all been discussed before:
After 'all these years', i still think the current caps is the way to
go. Keeping track of a registry of 'aliases' for namespaces is kind of
silly, because that totally defies the purpose of the namespaces to
begin with. We might as well use the namespaces in our presence
themselves (I don't think it will matter anything wrt presence),
especialy with the urn:xmpp: namespaces. Moreover, if you are going to
allow custom features (which are necessary, iChat is at least one user
of them), you're going to start prefixing them anyway.
I never really understood what people find so complicated about caps.
Maybe the XEP isn't well written or so, because I didn't have problems
implemeting it at all. As a matter of fact, now that we have them, it
makes our life a lot easier.
Broadcasting the caps information is the easy part. Every
disco-supporting client can do that with about 5 lines of extra code.
The hardest part is is the querying and caching. It took us about 400
lines of C++ code (taking into account that we have a multi-account
client), which might be longer than a simplified scheme as the one you
proposed, but is a lot more flexible, doesn't depend on an external
ever-changing centralized registry, and is not that much code all in
With regard to traffic, I still think that compression takes care of
the issues that people might have with caps. The only downside i see
is that this is not suitable for mobile clients. But then again, if
you are going to start allowing custom registries for custom features,
the extended presence is going to grow anyway. I guess people that
don't have the bandwidth to query caps shouldn't do so, and assume all
features are present in a client.
Looking at my contact list only, it seems that the following clients
broadcast their caps information: iChat, Chatterbox, Mango,
Coccinella, Emacs-jabber, Exodus, Gaim, Google Talk, Gajim,
Jabberzilla, Kopete, Sapo messenger, Pymsn-t, Soapbox, Telepathy, and
Psi. I don't know how many of them query caps information, but Google
Talk and Soapbox are 2 of them. I believe Gajim and Sapo also do the
querying, and I would guess Kopete does at well. Don't know about the
In summary, I like caps the way they are. It's extremely flexible,
very easy to implement without querying (which already makes the life
easier for clients that do query), and not really that hard to
implement fully (if you do it sensibly).
More information about the Standards