[stripping out the arguments I don't disagree with, to further illuminate a specific point]
* Kevin Smith <kevin.sm...@isode.com> [2019-04-02 13:03]: > I don’t really think what you’re looking for here is a clarification > of the intent of the XEP, but a change of behaviour. I can agree with that, so in retrospect, the point of my -1 is also to ignite (enforce?) a discussion on whether such a change of behavior could be the better solution in the long term. > > (and you will drop the correction messages) > As further evidence that this isn’t a good idea, it’ll break anything else > using the id - e.g. message receipts. Thank you for bringing this up! The interaction of Receipts and Corrections is a challenge I've had on my mind as well. Can we agree that for the sending user, it is important to see that the latest corrected message arrived successfully, and that the status of earlier versions is unimporant? The sending client would then do two things when sending out a correction: a) clear the "acknowledged" flag on the corrected message b) add a receipt request to the LMC message: <m id=2><b>fixed</b><r id=1/><rr/></m> Now, if the sending client does not keep the incorrect versions of the message, all that remains in its storage is this: <m id=1><b>fixed</b></m> If we follow the "a correction replaces all child-elements" rationale, the receiving client now needs to treat the new message as an update of the original and to send a receipt for the _original_ message id: <m id=4711><received id=1/></m> Obviously, this doesn't make sense for the sending client as it can not distinguish this ack from a delayed ack for the original incorrect message. Obviously, the receiver could send a 'replace' on its initial ack: <m id=4712><received id=1/><r id=4711></m> That would indicate to the sender that *some* edit of the message was acknowledged, but the reference to the original ACK number is rather irrelevant because there is no use in keeping track of those, and the original ACK does not define which revision of the message it related to. If we bend the rationale into "a receipt request in a correction is not part of the correction but part of the meta-data of the correction message", then the receiver will actually send a receipt for the LMC id: <m id=4711><received id=2/></m> The original sender still can not associate this id with the corrected message without also keeping track of _at least_ the last correction ID that was applied to the original message. A similar problem (and the associated race condition) exists with other message reference schemes like Message Attaching and References. The entity that emitted the Reference can then send out a corrected Reference when processing a correction of the initial message. But again, which id should the Reference in the correction reference? I'm not sure how we should treat future Emoji Reactions. Should they remain attached to the corrected message (this is probably the most logical thing)? Luckily, MAM ids (which are technically also a child element) can probably be argued as something that definitively is not part of the correction, so that there is no way to confuse the archive. > > While message reordering doesn't exist in XMPP (at least in theory), > > [...] all corrections are equal and the latest one wins. > …which is fine, AFAICS. While a little bit tongue-in-cheek, my comment was intended to provoke further thought. One such situation(*) is when you perform two corrections of the same message from two different clients, with the corrections arriving at the recipient in arbitrary order. The 'wrong' approach spans a tree of message corrections leading to the original message as its root. A recipient will end up showing all leaf messages (because it won't be able to merge different sub-trees) as long as order is maintained over each sub-tree. With the 'right' approach, all corrections are leafs of the original, leaving the most delayed correction as the winner(**). (*) in direct-messaging siutaitons, this is violating the full-JID-MUST-match business rule in 0308, which I disagree with for practical reasons. In a MUC, all clients appear under the same full JID, but the MUC is acting as an order arbitrator. Even if the final order of the messages is not the intended one, the sender will see and be able to issue another correction eventually. (**) I know that this sounds like a very much constructed edge-case, but I've already been in the situation where I corrected a message multiple times from multiple devices. > With one of my other hats on, if we’re going to have a server archive > that understands corrections (and other references, as we discussed at > the Summit), which we’re going to need, it’s going to be much more > straightforward to have everything anchoring off a single message, > rather than needing to follow a chain. This is a very strong argument. I just wonder what quirks will be required on top to address the above issues with references and receipts. Georg
signature.asc
Description: PGP signature
_______________________________________________ Standards mailing list Info: https://mail.jabber.org/mailman/listinfo/standards Unsubscribe: standards-unsubscr...@xmpp.org _______________________________________________