Hi, we just had a discussion in the prosody MUC, regarding message ordering in MAM, and I realized there is some ambiguity in the XEP when handling incoming <delay> elements.
The XEP explicitly states that messages must be sorted chronologically: "The collection is ordered chronologically by the time each message was sent/received." (3.1) "The archive results MUST be sorted in chronological order" (4.2) However, it does not make clear how to handle messages that already contain a <delay> element (i.e. because the client was disconnected when the user entered the message). XEP-0203 almost states that there can be only one <delay> element, but after re-reading it I realized that a server/component may only *add* one such element, potentially ending up with two or more of them. However, this is material for a separate post. In MAM, the storing server needs to decide whether to: a) discard incoming <delay> elements, worsening the overall UX. b) accept incoming <delay> as the master timestamp for a message, and place it somewhere in the middle of the archive, making the message essentially unretrievable on a typical partial sync. c) keep the <delay> element in the message, and deliver a message with multiple <delay>s on a MAM query, potentially breaking clients that don't anticipate multi-<delay>s. d) keep the original <delay> element and deliver MAM results without the MAM server's own <delay> element, potentially breaking time-based query support. These are all not shiny, but one way or the other, there should be some clarification in the XEP regarding what "chronological" actually means and how incoming <delay> elements should be processed. Georg
signature.asc
Description: Digital signature
_______________________________________________ Standards mailing list Info: http://mail.jabber.org/mailman/listinfo/standards Unsubscribe: [email protected] _______________________________________________
