Here is some logs of the Bookmarks implementation in different clients :
Gajim use the Private storage XEP:
<iq xmlns="jabber:client" type="set" id="91">
<query xmlns="jabber:iq:private">
<storage xmlns="storage:bookmarks">
<conference minimize="0" jid="[email protected]"
autojoin="1" name="Créer un salon de discussion">
<nick>edhelas</nick>
<print_status>in_and_out</print_status>
</conference>
<conference minimize="0" jid="[email protected]"
autojoin="0" name="Jdev">
<nick>edhelas</nick>
<print_status>in_and_out</print_status>
</conference>
</storage>
</query>
</iq>
Pidgin just save the MUC list locally
Here is th HipChat implementation, they use separate items (with no ID)
but they respect the XEP.
<iq xmlns="jabber:client"
to="[email protected]/moxliTJqXp" type="result"
id="qwm20i">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items xmlns="storage:bookmarks">
<item>
<storage>
<conference jid="[email protected]"
name="Activity Stream">
<nick>Timothée Jaussoin</nick>
</conference>
</storage>
</item>
<item>
<storage>
<conference jid="[email protected]"
name="Company Updates">
<nick>Timothée Jaussoin</nick>
</conference>
</storage>
</item>
</items>
</pubsub>
</iq>
I'm quite surprise to see that the "best" implementation of the
Bookmarks feature is into a proprietary software that use its own XMPP
server to work.
Finally here is the Movim implementation :
<iq xmlns="jabber:client" id="NdrHpi"
from="[email protected]/moxljkZBQ3" xml:lang="fr" type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<publish node="storage:bookmarks">
<item id="current">
<storage xmlns="storage:bookmarks">
<subscription xmlns="urn:xmpp:pubsub:subscription:0"
server="comics.mov.im" node="BouletCorp" subid="">
<title/>
</subscription>
<subscription xmlns="urn:xmpp:pubsub:subscription:0"
server="comics.mov.im" node="CerealesLapin" subid="">
<title/>
</subscription>
<conference name="Discussions" autojoin="0"
jid="[email protected]">
<nick/>
</conference>
<conference name="Spectrum" autojoin="0"
jid="[email protected]">
<nick/>
</conference>
</storage>
</item>
</publish>
</pubsub>
</iq>
Regards,
Timothée Jaussoin aka edhelas
On mer., avril 30, 2014 at 5:43 , Lance Stout <[email protected]>
wrote:
My proposal is quite simple. Take the "subscription" tag used in
the XEP-0330 (
http://xmpp.org/extensions/xep-0330.html
) to store the informations of the subscribed node and put them in
Bookmark items.
The only hesitation that I have here is that this is going to create
some nasty surprises due to how
bookmarks work with private XML storage. Ie, you have to fetch, edit,
and save the entire XML blob
any time you want to make a change. Which is generally fine, but
bookmarks are old and there is a lot
of existing code that assumes you are only storing MUC bookmarks
(since no one ever actually used the
URL bookmark feature). So if you happen to use the wrong client
somewhere, all of your subscription
bookmarks could disappear because they didn't know about
subscriptions.
That's certainly wrong behaviour for clients, but such behaviour does
exist in the wild.
The safest route is to use what you already have defined in XEP-0330.
However, I'll note that PEP services
have not done well in allowing multiple items to be published to a
single node like this requires.
XEP-0330 could be changed to save the full set of subscriptions in a
single item to work around that, though
I'd really prefer the multi-item PEP nodes.
As a last resort, saving the full set in a new private XML storage
element would work.
Furthermore it would be great to add some tags on the Bookmark
items to organize and filter them.
+1 for this idea. However, it does carry the same consideration as
above that older clients could cause you to lose this information.
—Lance