Hello Kev,

thank you for picking this up again, and I'm sorry for the -1. I wrote
in the Meeting that it's not impossible to convince me to change my
mind, but you have to provide very strong arguments...

* Kevin Smith <kevin.sm...@isode.com> [2019-04-02 10:52]:
> It’s the original message @id - if you follow the rules in the XEP
> then the other way around wouldn’t work.

I'm not convinced that it really wouldn't work (and my lack of
conviction is backed by yaxim doing it the "wrong" way and not failing).

Essentially, the interpretation of the XEP boils down to the question
whether the @id can be considered as being part of the payload. If you
allow that interpretation for a moment, we can explore the other
alternative and compare them.

> If you do this the ‘right’ way [...]:
> 
> <m id=1><b>fixed</b></m>
> <m id=2><b>typo 2</b><r id=1/></m>
> <m id=3><b>fixed</b><r id=1/></m>
> 
> Where, again, 2 and 3 can be forgotten, or simply ignored.

Regarding client-side storage, you can only delete the correction
messages if you do not intend to provide the full message editing
history to the user. If you plan to provide such history, it obviously
doesn't make sense to rewrite the original message (and thus remove its
content from the history). Instead, you probably need to copy the
original and intermediate corrections into a dedicated storage table,
where I can see that a stable reference identifier (id=1) over all
corrections makes some sense.

The 'wrong' way would include also rewriting the @id of the stored
message with the @id of the last correction you received. The example
would thus become:

> <m id=3><b>fixed</b></m>
> <m id=2><b>typo 2</b><r id=1/></m>
> <m id=3><b>fixed</b><r id=2/></m>

(and you will drop the correction messages)

While message reordering doesn't exist in XMPP (at least in theory), the
"blockchain" of corrections provides a cleanly ordered relation over all
corresponding corrections, whereas with the 'right' way, all corrections
are equal and the latest one wins.

However, if you are receiving partial history from MAM or a MUC, it is
well possible that the original message was either lost (because it's
older than the retention interval), or is going to be loaded later as
part of a history scroll back.

In this case, the 'right' way to interpret the first correction you
receive is "inject a new message placeholder into the history, with
unknown timestamp and no payload, then perform a correction on that".
With the 'wrong' way, the first correction just naturally becomes the
original message if it corrects an unknown @id.

I'm not sure which way is superior for handling an after-the-fact
appearance of the original message. I'd also like to hear opinions from
server archive developers.

> I did that. It would be great if you didn’t -1 the clarification :p

It is well possible that my interpretation of the XEP ambiguity was
not quite correct. However, it is shared by other widely deployed(?)
implementations, and removing the ambiguity would be a breaking change
to all those (and yes, I'm obviously biased here because of my own one).

Together with the nice and clean "blockchain" ordering of the 'wrong'
interpretation, however, I remain unconvinced that your PR is the right
direction of removing the ambiguity and want to hear more voices (and/or
better arguments).


Georg

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
_______________________________________________

Reply via email to