[PubSub] versioning

Tuomas Koski koski.tuomas at gmail.com
Sun Nov 22 16:29:34 CST 2009

Hi all,

2009/11/22 Robin Collier <robincollier at hotmail.com>:
>> Date: Thu, 19 Nov 2009 14:54:49 -0600
>> From: skeltoac at gmail.com
>> To: pubsub at xmpp.org
>> Subject: Re: [PubSub] versioning
>> On Wed, Nov 18, 2009 at 5:20 PM, Peter Saint-Andre <stpeter at stpeter.im>
>> wrote:
>> > I've added text about the 'ver' attribute to XEP-0060. It's perhaps a
>> > bit underspecified right now. Feedback welcome. See also:
>> >
>> > http://xmpp.org/extensions/tmp/xep-0060-1.13.html
>> First up, my confusion. The title of Item Versioning tells me
>> that each item has its own version. Then I see the ver attribute on
>> the <items/> element. Then I read that the version ID can be "a hash
>> of the published data (e.g., of all the current items cached at the
>> node)" and I understand that it's really more like Node Versioning.
>> This expands the version concept in two directions. First, should this
>> versioning then also apply to Collection Nodes? The version ID e.g.
>> could be "a hash of the collection" or "a hash of the versions
>> contained in the collection", take your pick. Second, should
>> versioning also apply to items, as the section title implies?
> Now that the timestamp vs. versioning has resulted in node level
> versioning, it fails to address one of the original problems I was
> attempting to address with the timestamp.  Order of operations
> between a retrieve items and a notification.  This cannot be
> determined with the current proposal of a ver attribute on the
> list of items.
> If I subscribe for notifications and then request the current items
> I can end up with something like this
> Reply for request for current items:
> <iq type='result'
>     from='pubsub.shakespeare.lit'
>     to='francisco at denmark.lit/barracks'
>     id='items1'>
>   <pubsub xmlns='http://jabber.org/protocol/pubsub'>
>     <items node='princely_musings' ver='0005000'>
>       <item id='10'>
>         <entry xmlns='http://www.w3.org/2005/Atom'>
>           <title>The Uses of This World</title>
>           <summary>
> O, that this too too solid flesh would melt
> Thaw and resolve itself into a dew!
>           </summary>
>           <link rel='alternate' type='text/html'
>                 href='http://denmark.lit/2003/12/13/atom03'/>
>           <id>tag:denmark.lit,2003:entry-32396</id>
>           <published>2003-12-12T17:47:23Z</published>
>           <updated>2003-12-12T17:47:23Z</updated>
>         </entry>
>       </item>
>       <item id='11'>
>         <entry xmlns='http://www.w3.org/2005/Atom'>
>           <title>Ghostly Encounters</title>
>           <summary>
> O all you host of heaven! O earth! what else?
> And shall I couple hell? O, fie! Hold, hold, my heart;
> And you, my sinews, grow not instant old,
> But bear me stiffly up. Remember thee!
>           </summary>
>           <link rel='alternate' type='text/html'
>                 href='http://denmark.lit/2003/12/13/atom03'/>
>           <id>tag:denmark.lit,2003:entry-32396</id>
>           <published>2003-12-12T23:21:34Z</published>
>           <updated>2003-12-12T23:21:34Z</updated>
>         </entry>
>       </item>
>     </items>
>   </pubsub>
> </iq>
> Event received from subscription:
> <message from='pubsub.shakespeare.lit' to='francisco at denmark.lit' id='foo'>
>   <event xmlns='http://jabber.org/protocol/pubsub#event'>
>     <items node='princely_musings' ver='0004995'>
>       <item id='10'>
>         <entry xmlns='http://www.w3.org/2005/Atom'>
>           <title>Soliloquy</title>
>           <summary>
> To be, or not to be: that is the question:
> Whether 'tis nobler in the mind to suffer
> The slings and arrows of outrageous fortune,
> Or to take arms against a sea of troubles,
> And by opposing end them?
>           </summary>
>           <link rel='alternate' type='text/html'
>                 href='http://denmark.lit/2003/12/13/atom03'/>
>           <id>tag:denmark.lit,2003:entry-32397</id>
>           <published>2003-12-13T18:30:02Z</published>
>           <updated>2003-12-13T18:30:02Z</updated>
>         </entry>
>       </item>
>     </items>
>   </event>
> </message>
> And now you still cannot determine which item is the most recent, since the
> version is not related directly to the item, but to any changes to the node.
> The notification with the older version number can easily be the newer
> version
> of the item, since subsequent published items and deletions may have
> resulted
> in the higher ver attribute on the node.  I don't see how you can resolve
> this issue without the ver attribute or a timestamp being on the item
> itself.
> My vote, in this case is to use a timestamp for the following reasons.
> 1. As I have said now on numerous occasions, every implementer is already
> forced to keep a timestamp for every published item anyway to support
> "6.1.7 Receiving the Last Published Item" and the node configuration
> attribute
> "pubsub#item_expire".  So this could easily be used on a per item basis
> since
> it is implicitly required by the existing versions of the specification.
> 2. It can be a useful piece of information on persistent items. (in
> enterprise pubsub
> messaging systems, this is a very standard message attribute).
> That being said, I can live with the ver attribute as well, but it does need
> to
> be an attribute of the item.

I have ended up (at least temporary) using modtime (as defined in
http://tools.ietf.org/html/rfc2244#section-3.1.1) as ID of an item.
This will give the possibility to have a unique ID in node as well as
putting items in correct order by client easily. For example after
using xep-0202 the client can query items even by time where needed
using xep-0059.

Since this starts to have "application logic" in it, I'm not sure if
this is really needed as part of a protocol. How ever if it's often
needed feature of a pubsub system, it would be cool to find a common
way to fulfill the need. My use case is: I have presence based
delivery but I still need to query the node's existing items in some


More information about the PubSub mailing list