On Mon, Oct 28, 2013 at 4:03 PM, Peter Saint-Andre <[email protected]>wrote:

> How do we define "important"? There's the challenge. :-)
>

I think we had this discussion in Portland, but perhaps it was after you'd
left, while Lance, Matt and I were chatting about mobile push and all sorts
of things.

Basically, the existing-but-non-XSF google:queue specification says more or
less what Spencer wants - "Don't send me stuff. Update me when I ask".
That, XEP-0198, the mobile push stuff that Lance was sketching out (much
better than I would have), and Matt's hinting stuff gets us this:

Dramatis Personæ:

[email protected] - A Wandering Minstrel.
[email protected]   - His contact.

So [email protected]/mobile connects to wandering.example. It
activates the queue (I'd call it buffer, but hey) extension, and so, when
the phone is switched away from the app, it buffers the connection such
that only "important" stuff gets through. It also activates the
per-connection aspect of the mobile push thing.

If [email protected] sends our Wandering Minstrel a message, that's
assumed to be important, unless it's otherwise hinted, and the following
occurs:

1) If the session is online, the buffer is flushed, and this message sent
through, along with an <a/> request.

2) If the ack times out, or the session was not online, the session is
assumed to be disconnected, and the mobile is sent a push (for that
connection, ideally - I may be wrong in us needing this). In this case, the
mobile wakes up, and either returns an <r/>, or else reconnects the session
via XEP-0198.

So what this needs is changes to a handful of specs:

a) We need to write a new replacement for google:queue, which does
everything that we actually need. This could be done as a replacement to
SIFT (which I always thought was over complexificated for what we actually
need) or as additions to it.

b) Matt's stanza hints need to include ways to indicate that a message is
not worth considering as a reason to flush the buffer, and/or wake the
mobile out-of-band. It also probably needs ways to insist that it is.

c) Lance's mobile push (which should provide essentially an XMPP API for
servers to talk to mobile developers' push services).

Given those three items (and (c) is by far the biggest), we've got mobile
covered, I think.

Dave.

Reply via email to