Hi,

I understand the nature of XEP-0308 in such that it changes the body of another message and is not to be understood as a message itself. This is why if the same message is corrected multiple times, they all refer to the initial message id. And I agree that we should generally apply the same logic to other XEPs.

That said, other XEPs don't depend on XEP-0308 and generally should not assume XEP-0308 to be supported by sending or receiving clients. Thus these XEPs don't only need to specify "which ID should be used when a message was XEP-0308 corrected", but also might specify other rules and need to consider how this will behave with other clients supporting or not supporting XEP-0308.

For XEP-0461, I think the best handling would be, that it is allowed to reference not only the initial message, but also any of the corrections. If entities receive a reply to a message that was corrected later (or was a correction itself) it may decide the display the body of this specific iteration of the message (instead of the latest iteration) if it displays the body of the message replied to next to the reply.

For the following log of messages:
- from=Alice id=a body=First
- from=Alice id=b correction-of=a body="Second"
- from=Alice id=c correction-of=a body="Third"
- from=Bob reply-to=b body="> Second\nReply" fallback=reply:0:9

The XEP-0308-aware client would then display something like
Alice:  Third (edited)
Bob:    > Alice wrote: (link to above message "Third")
        > Second (edited)
        Reply

The XEP-0308-unaware client would instead display something like
Alice:  First
Alice:  Second
Alice:  Third
Bob:    > Alice wrote (link to above message "Second")
        > Second
        Reply

I think this is fair.

For XEP-0424 my personal suggestion would be, that a retraction for a corrected or correction message, should only be understood as a retraction of that revision of the message. If that revision is not the latest (the message was corrected further later) retracting an older revision has no effect - this also applies to the original message. This makes the behavior across XEP-0308-aware and -unaware clients the most consistent:

For the following log of messages:
- from=Alice id=a body=First
- from=Alice id=b correction-of=a body="Second"
- from=Alice id=c correction-of=a body="Third"
- from=Alice retraction-of=b

The XEP-0308-aware client would then display something like:
Alice: Third (edited)
It the client supports showing a correction history, it would display that the second revision of the message was retracted. If instead the latest revision is retracted, the previous (unretracted) revision is displayed.

The XEP-0308-unaware client would instead display something like:
Alice: First
Alice: (retracted)
Alice: Third

Only once all revisions of a message have been retracted, such message will completely be retracted (for both XEP-0308-aware and- unaware clients). As such, if a client wants to remove a message with corrections entirely, it should send retractions for each revision (it's probably worth explicitly allowing this to happen in a single message).

If we agree on above for XEP-0424, XEP-0425 wouldn't strictly need any additions. And because XEP-0308 is based on the messages @id even in MUCs and we don't want to ask MUC servers to keep track of those, there's not a lot a MUC server can do here either.

Marvin


On Mon, 2025-04-21 at 17:01 +0200, Philipp Hörist wrote:
XEP-0444 specifies it in the business rules, although its not very strict, basically says you should use the original id but everyone should also support everything else.

XEP-0308 does not overwrite the original message id, the client just replaces the payload of the message.

From XEP-308
> If the same message is to be corrected several times, the id of the original message is used in each case (e.g. If a message of id 1 is corrected by a message of id 2, a subsequent correction should correct 1, not 2).

So all corrections point to the original message.

I would argue the case if the corrections XEP itself always references the original message, all other XEPs should do aswell.

Regards
Philipp


On Mon, Apr 21, 2025, at 16:41, Tedd Sterr wrote:
Additionally, XEP-0444 (Message Reactions), and pretty much anywhere an ID will ever be used to reference another message.

The issue stems from XEP-0308 replacing/overwriting the message ID, and consequently all references already using the previous message ID are left pointing to a non-existent message.

Amongst other things, this provides a way to avoid moderation — send an offensive message, it gets moderated, just LMC the message and it's no longer moderated.

So, while it feels 'wrong' from a purist view, NOT replacing the message ID would be the better option - old and new references will then all point to the same message. Otherwise, presumably, clients (and servers?) will be required to track all past message IDs for each corrected message.


_______________________________________________
Standards mailing list -- standards@xmpp.org
To unsubscribe send an email to standards-leave@xmpp.org