On Fri Dec  9 12:18:14 2011, Sergey Dobrov wrote:
Guys, don't you think that it might be reasonable to filter messages on receiver's server side and not on sender's side. I understand that it will break compatibility and will no work if receiver's sender doesn't support PEP but it will be more efficiently because server will no more need to store all users capabilities, it can store only capabilities of it's own users. Also, events can be sent only once to bare jid and not
to each full jid, etc.

OK, so let's assume that we want to try this:

1) First things first, we need to signal support for this. I suppose this means that we need to do feature checks via disco for all the subscribers - that is, when we receive a valid probe, we then need to check the features of their server. Server-caps could help with this. This removes one of the showstoppers you mention above.

2) We're also going to need to resend the last item when the subscriber comes online. This is problematic for the node owner's server, because receiving a probe doesn't actually indicate an online event. The only alternative I see is that the subscriber's server needs to store the last item for all the owner's nodes. Note, too, that this needs to happen for all nodes, whether or not the subscriber has ever needed the item (ie, whether or not the subscriber is actually subscribed).

3) Finally, the subscriber's server will need to track retractions, and all retractions made on the owner's server will need to send an event out (ie, we must mandate notify-retract).

This covers us - just - for basic PEP. However, there have been suggestions of using PEP in a more advanced way, for example sending more than just the last item on reconnect. This would mean signalling this back to the subscriber, and the subscriber's server maintaining a shadow copy of all the items.

Some figures:

The incumbent protocol supports a caps cache which tends to be less than the number of contacts total; but this caps cache can be used for other things. (See my disco caching thing).

Your replacement looks to my eyes to have a caps cache, this time of servers, which is likely to be markedly smaller. Hoorah, a saving. But it also needs to maintain a cache of at least one item per PEP node of the contacts, which seems very worrying.

I don't see this as an improvement, especially given the other downsides you've previously highlighted.

You could mitigate this by discarding the send-last requirement, but I don't think this is viable, and it's certainly less viable than requiring either presence sharing or a manual subscription.

Finally, it also breaks if PEP nodes have a non-uniform ACL, of course.

So while the advantages you state are pretty clear, I don't see a way around the problems.

Dave.
--
Dave Cridland - mailto:[email protected] - xmpp:[email protected]
 - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
 - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade

Reply via email to