[Standards] XEP-0184 business rules for message receipts

Peter Saint-Andre stpeter at stpeter.im
Mon Mar 15 17:45:52 UTC 2010


On 3/13/10 3:09 PM, Kevin Smith wrote:
>> Asymptotically approaching perfection, no doubt.
> 
> If we can get 'asymptotically' into the XEP, I'll probably let
> anything else through :)

Done!

>> Perhaps you and I need to talk about this using a technology that
>> enables near-real-time communication. If only someone had invented such
>> a thing...
> 
> I'm happy to take it off-list. I'll poke you on Monday.

Pokage complete. :)

Kev convinced me that I was wrong. In particular, he convinced me that
(1) XEP-0184 was ambiguous about whether we wanted to at all encourage
the sender to resend messages for which receipts have not been received,
and (2) that it needed to be unambiguous about *not* encouraging such
behavior at all. Therefore I have rewritten some sections of the spec
with his help. The result is the following text.

***

3. What This Protocol Provides

This document defines a protocol that enables a sender to ask the
recipient to return a receipt for a message. Although the return of a
message receipt lets the sender know that the message has been
delivered, there are many reasons why the sender might not receive a
receipt immediately or at all, including but not limited to the following:

    * The sender addressed the message to the recipient's bare JID
<localpart at domain.tld> and therefore does not know if the recipient even
supports message receipts.
    * The sender has not bothered to determine whether the recipient
supports message receipts.
    * The recipient (or the particular intended resource to which the
sender addressed the message) does not in fact support message receipts.
    * The intended resource supports message receipts but the
recipient's server delivers the message to another resource that does
not support message receipts.
    * The recipient's client receives the message but experiences a
malfunction before generating a receipt.
    * The recipient returns a receipt but the receipt is lost on the way
back from the recipient to the sender (e.g., because of connectivity
issues or software failures at any hop).
    * The recipient simply does not wish to return a receipt for the
sent message.

Because of these significant limitations, this protocol does not provide
complete or even partial reliability or guaranteed delivery. Therefore,
the sender SHOULD NOT impute any meaning to the lack of a receipt unless
it has established with the recipient that receipt requests will be
honored; however, methods for doing so are out of scope for this
specification and it is NOT RECOMMENDED to take any particular action
(such as resending a message) without such methods.

4. When to Request Receipts

A sender could request receipts on any non-error message (chat,
groupchat, headline, or normal) no matter if the recipient's address is
a bare JID <localpart at domain.tld> or a full JID
<localpart at domain.tld/resource>. Whether it is appropriate or advisable
to do so it another question. This section provides recommendations
about when and when not to request receipts, and what results to expect
in each scenario.

4.1 Bare JID

If the sender knows only the recipient's bare JID, it cannot cannot
determine (via disco or caps) whether the intended recipient supports
message receipts. In this case, the sender MAY request a receipt when
sending a message of type "chat", "headline", or "normal" to the
recipient's bare JID. However, the sender MUST NOT depend on receiving a
receipt.

4.2 Full JID

If the sender knows a full JID for the recipient (e.g., via presence),
it SHOULD attempt to determine (via disco or caps) whether the client at
that full JID supports message receipts before attempting to request
receipts.

If the sender determines that the recipient's client does not support
message receipts then it SHOULD NOT request a receipt when sending a
message to that full JID and MUST NOT depend on receiving a receipt.

If the sender determines that the recipient's client supports message
receipts then it MAY request a receipt when sending a message of type
"chat", "headline", or "normal" to that full JID. However, even in this
case the sender SHOULD NOT depend on receiving a receipt.

4.3 Groupchat

It is NOT RECOMMENDED to request a receipt when sending a message of
type "groupchat" in a Multi-User Chat [6] room because the logic for
determining when a message is truly "received" by all of the room
occupants is complex and because the sender would receive one receipt
from each occupant of the room, thus significantly increasing the number
of messages sent through the room.

***

See also:

http://xmpp.org/extensions/tmp/xep-0184-1.1.html

http://xmpp.org/extensions/diff/api/xep/0184/diff/1.0/vs/1.1rc7

Peter

-- 
Peter Saint-Andre
https://stpeter.im/



-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6820 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mail.jabber.org/pipermail/standards/attachments/20100315/ef026155/attachment.bin>


More information about the Standards mailing list