[JDEV] Ambiguity in jabber:iq:browse "pushes"

Dave Waite dwaite at jabber.com
Thu Aug 16 12:27:19 CDT 2001

Jens Alfke wrote:

> I'm trying to grok the vague description of jabber:iq:browse on the 
> "Protocol-Draft" section of the DocZone:
>     http://docs.jabber.org/draft-proto/html/browsing.html
> As always, if this is the wrong thing to look at and there's a 
> conflicting but more accurate description somewhere else, let me know!
> The primary thing that's gotten me confused is the apparent ambiguity 
> of a "set" query using this namespace. It seems to be used for two 
> entirely different things:
> (1) Sent to a watcher as a "push" to notify a watcher of new data in 
> the *sender*s browse space.
> (2) Sent to a browse source to edit (add/modify/delete) data in the 
> *receiver*s browse space.
> In general I don't see how these two things can be distinguished from 
> each other. If you look at the two examples in the "Live Browsing" and 
> "Editing" sections, they are fundamentally identical; only the type of 
> data elements in the payload is different. Yet the two have very 
> different meanings and in fact describe data on two different JIDs! 
> The sinking feeling I have is that when receiving such a "set" you 
> have to make a judgment call based on the exact type of data contained 
> and the exact JID you received the query from. I imagine that this is 
> _usually_ possible, but it makes me nervous and doesn't seem like a 
> good design.
> IMHO it's the "push" feature that seems wrong -- it's a misuse of 
> "set". The exact meaning of "get" and "set" is already pretty vague 
> due to all the uses they've been put to, but it seems that you can at 
> least rely on the fact that they apply to the _receiver_ of the query. 
> But browse pushes turn this on its head.
> What this really points out is the lack of a general purpose 
> subscription/notification mechanism in Jabber, which is ironic since 
> this is so central to presence. Jabber's <presence> element and its 
> subscription model are completely hardwired for one particular type of 
> data (presence state and status text) and cannot be used for anything 
> else. There is a lot of other info that one might want to subscribe 
> to, ranging from buddy icons to lists of shared files to news 
> headlines, but no good mechanism to manage the subscriptions and 
> notifications required by real-time updates of this information.
> Any comments? Am I totally off-base here? Are the existing efforts to 
> remedy this? (I'm aware of the Profiles JIG and have just joined it.)

As far as I understand, if the JID of the top element within the browse 
matches the JID being requested, it is a replace. If it doesn't match, 
then you are representing a child and are doing an insert/modify/delete.

-David Waite

More information about the JDev mailing list