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

Reply via email to