It’s not clear to me that the problems that this extensions proposes to address
can be addressed through use an extension to XMPP. Extensions ought to be
truly optional. This ProtoXEP appears to be making mandates which are more
appropriate made, if the community were to support them being made, in a
revision of the XMPP base specification.
For instance, the ProtoXEP not only says "XMPP entities, which are routing
stanzas, MUST NOT strip the message-id element from message stanzas” but seems
to be rely on all servers adhering to this MUST NOT. That’s never going to be
case… certainly not for implementations not purporting to implement this
extension… and likely not for some implementations which might purport to
implement this extension. This spec needs to consider and discuss what
happens in face of elements it suggests be added are stripped by another entity.
I have a big problem with one ID to rule them all… and a bigger problem with
the last ID being that ID (the overrride requirement). To the extent IDs are
needed, they need to “stable”. This means they cannot be overridden.
For operational and security reasons, it unwise for one entity to rely on IDs
for services it provides (such as MAM) provide by some other entity. To the
extent IDs are needed, we need per-entity IDs… possibly even per-enitty
handling IDs (that is, when an IM handles a stanza for the second time (such as
after being handled by an MUC service, it might need to separately ID the
stanza). This because stanza content can and will change as its handled by
other entities.
It’s not clear to me how this id provided by this extension would or could be
used in message type=error stanzas. It’s not clear to me why this extension
proposes a <message/> only solution, when it seems likely that stanza id=
problems are not necessarily specific to message stanzas.
It seems that there’s many security risks here associated with ID forgery,
replay, etc., but I’m not sure what, if any, mitigation is needed.
I suggest instead an element allowing entities to provide IDs in stanzas they
originate or handle.
<stanza-id xmlns=‘…’ id=‘ID’ provider=“JID”/>
where ID is some opaque ID and JID is the providers JID. Servers which need to
provide different IDs in different contexts can use different JIDs. (or
possibly better to allow a context attribute or something).
I’m not convinced having an extension providing an ID (whether by the ProtoXEP
suggestion or mine or other) reliably solves any problem I’m faced with.
For the MUC use case, I rather we solve this as part of the MUC2 effort…
For the MAM case, to the extent what it offers in the current Experimental XEP
is not sufficient, I suggest MAM XEP be modified to provide for reliable
identification of archived content.
— Kurt