[Standards] Re: [jdev] XEP-0115: Entity Capabilities

Rachel Blackman rcb at ceruleanstudios.com
Wed Jun 27 06:59:24 UTC 2007

On Jun 26, 2007, at 11:31 PM, Sergei Golovan wrote:

Okay, first... please don't take this personally; your post just  
provides a chance to make a point about this constant argument over  
this XEP.

>> You can always just query each user independently if you like; you
> I think that the XEP must not recommend to cache capabilities based
> only on reported software name and version. The more acceptable index
> is a tuple {jid, client name, client version}.

But that violates the /entire purpose/ of the XEP, and basically  
makes it useless.

The situation we used to have was that someone would come online, and  
other people would disco probe them.  Every single resource that came  
online.  It generated too much traffic, both as you came online and  
all your contacts probed you, AND as you had to probe all your  
contacts.  It was bad.  It needed a solution; the solution is, thus  
far, this XEP.

The purpose of this XEP is to avoid clients flooding stuff by saying  
'hi, I am <client> with <version> and <list of extensions>' in a  
manner that each of those tokens can be used to cache and reuse the  
information.  I.e., <client>#<version> and <client>#<extension>  
should be unique disco namespaces, and once you have the result you  
no longer need to query it each time.

Every couple of weeks we seem to get another set of arguments going  
Y'know what?  That's absolutely true insofar as it goes... but first,  
other than malicious mischief, I'm not certain offhand what such an  
attack could actually do to compromise a remote client.

But second, and more importantly, not one single person has offered a  
solution other than 'make every extension hardcoded' or 'just probe  
each contact, cache only per-JID,' which returns us to the original  
troublesome network-flooding behavior on logins.  Both have already  
been argued to death here; I'm not going to rehash the arguments.

So instead, I'm going to offer a challenge up.  The challenge is that  
if anyone wants to seriously suggest that caps is a fundamentally  
flawed XEP, they should first write up and submit an alternative XEP  
for convenient capability discovery and traffic reduction.  /PLEASE/  
offer an alternative!  Come up with some new, more secure XEP.   
Suggest a version of caps which requires the client to sign the caps  
bit with a private key, thus attempting to prove its identity.   

I don't know, nor do I care, what the alternative is; when it's  
presented I'll happily assess and potentially implement it, along  
with everyone else.  But right now, caps is here, it works to solve  
an existing problem, and if someone wants to tear it down I suggest  
they offer the alternative.

It's time and energy we could spend on sorting out how to make Jingle  
more readily implementable.  We also have certification and  
standardization to think about.  And I know I seem to mention this in  
darn near every post lately, but we STILL have two incompatible file  
transfer specifications live on the network right now unless Google  
Talk has decided to implement stream initiation. :)

Rachel Blackman <rcb at ceruleanstudios.com>
Trillian Messenger - http://www.trillianastra.com/

More information about the Standards mailing list