[Standards] RFC: XEP-0045 MUC should not rewrite message IDs

Georg Lukas georg at op-co.de
Sat Jul 26 17:36:45 UTC 2014

* Dave Cridland <dave at cridland.net> [2014-07-26 17:09]:
> Firstly, many of your other comments rely on the uniqueness and stability
> of ids. An example is your (7) - this relies on all messages sent from the
> same occupant jid having unique ids. You'll probably realise some problems
> with this approach fairly quickly if you stop and think about it.

Now that you mention it, XEP-0308 does not make any assumptions about
the uniqueness of 'id's, it merely adds them as a reference so a client
can check if the message-to-be-corrected actually arrived at the same
client. Of course, not having 'id' stability here will force the
receiver to handle the correction as a new message.

The assumption _I_ do make about 'id' uniqueness is that my outgoing
messages to the MUC have 'id's unique within my session, so I can track
if they actually were reflected or not.

> Secondly, RFC 6120, §8.1.3, says:
>    It is up to the originating entity whether the value of the 'id'
>    attribute is unique only within its current stream or unique
>    globally.

This does not read like a REQUIREMENT of uniqueness, merely a
recommendation. Please let me quote the paragraph prior to that:

    The 'id' attribute is used by the originating entity to track any
    response or error stanza that it might receive in relation to the
    generated stanza from another entity (such as an intermediate
    server or the intended recipient).

If we see the MUC client as the 'originating entity' of the groupchat
message it sends, it is perfectly reasonable for it to use the 'id'
attribute to track whether its message arrived at the MUC. Now we might
construct a world where the reflected message to the original sender is
re-using the sender's 'id', whereas the relfection of the message to all
other participants has rewritten 'id's. However I am still not sure what
we actually do gain by rewriting the 'id's in the first place.

If we see the MUC service as the 'originating entity', please elaborate
how the creation of new 'id's for reflected messages helps the service
with response/error tracking in a way that is not possible with re-used

> This would make sense if the MUC was a simple stanza relay service, but
> it's not. None of M-Link, Openfire, or Prosody implement a 1:1 mapping of
> occupant jid to client anymore. In addition, things like history, or
> archival access, generate stanzas spontaneously.

History and archive access are different things with even stronger
requirements on uniqueness. I don't see how the current wording of the
XEP-0045 (which I would like changed) provides guarantees strong enough
for these purposes.

> In any case, the thing effectively mandating unique id generation for
> outgoing messages is NOT XEP-0045, but RFC 6120.

Outgoing messages are merely RECOMMENDED to have an 'id', and that 'id'
is meant to allow the sender to track responses and errors.  Together
with Kurt's point, I don't see how the RFC is mandating unique 'id's at

|| http://op-co.de ++  GCS d--(++) s: a C+++ UL+++ !P L+++ !E W+++ N  ++
|| gpg: 0x962FD2DE ||  o? K- w---() O M V? PS+ PE-- Y++ PGP+ t+ 5 R+  ||
|| Ge0rG: euIRCnet ||  X(+++) tv+ b+(++) DI+++ D- G e++++ h- r++ y?   ||
++ IRCnet OFTC OPN ||_________________________________________________||
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 811 bytes
Desc: Digital signature
URL: <http://mail.jabber.org/pipermail/standards/attachments/20140726/06bfc80e/attachment.sig>

More information about the Standards mailing list