I also agree that a recommendation to use UUID is totally sufficient
here (call it RECOMMENDED or SHOULD, I don't care). There is no need to
require a UUID. Adding a recommendation for UUID is also inherently
backwards compatible and therefor does not require a namespace bump.

I also doubt the necessity for a 122 bits of randomness for this
specific usecase, that is the id of a jingle session, which by
definition is both short-lived and only between two entities. These two
parameters make an accidental collision highly unlikely while
intentional collisions should only harm the communication of the two
parties.

Finally, the obsession with use of UUID as "unique strings" in XMPP
seems a bit weird to me. The hex-encoding with dashes and version
information is far away from an efficient encoding of 122 bits of
randomness. The only reason we started with UUIDs was that previously,
clients did not use actual randomness to generate message ids, thereby
causing collisions. Using a UUIDv4 became a way for a client to signal
to other clients "my ids are actually random and collision free". This
probably will remain relevant for message/iq ids in the future, but it
is not for any other ids.

Which brings me to the conclusion: If we want to gauarantee a certain
amount of randomness in any id field, we should just state exactly
that, e.g. "the id SHOULD include at least 120 bits of randomness, for
example by using an UUIDv4" (and then we might see people in the wild
just encode 15 random bytes using base64, saving 16 bytes on the wire
with every id).

Marvin


On Thu, 2023-01-05 at 11:18 +0100, Florian Schmaus wrote:
> 
> On 05/01/2023 10.51, Dave Cridland wrote:
> > * The argument that this doesn't need a namespace bump is wrong
> > because 
> > "experimental" has no effect here. The entire point of those
> > 'versioned' 
> > namespaces was to ensure that we could freely implement
> > Experimental 
> > XEPs without worrying about causing compatibility nightmares. The 
> > argument that there's no implementation is counter-productive - if 
> > there's nobody implementing, then by definition it doesn't matter
> > if you 
> > bump the namespace.
> 
> +1
> 
> I see a recent trend in the community that it is acceptable to
> introduce 
> backwards incompatible changes in 'experimental' XEPs. I think we are
> moving along a dangerous path if this trend continues.
> 
> However, I believe that this trend is part a symptom of a larger 
> problem. Namely that we e are missing a workflow where people can
> work 
> together on a standards document, while implementing what is
> described 
> in that document and still be able to react agile regarding protocol 
> changes. The latter means, amongst other things, being able to
> introduce 
> backwards incompatible changes without a namespace bump.
> 
> I become more and more convinced that we may be better with an IETF
> I-D 
> / RFC style standardization process. Where an I-D is a mutable,
> living 
> document on the road to become an immutable RFC.
> 
> 
> > * In general, I think ids expected to be reasonably unique ought to
> > be 
> > UUIDv4. I mean, why not? But I'm hesitant to mandate this
> > absolutely, 
> > such as in this change, because although I'd like *senders* to
> > always 
> > use a UUIDv4, I'm a bit concerned about *receivers* making that 
> > assumption, and trying to parse out a UUIDv4 and storing it in a
> > 128-bit 
> > number or something. In some cases, that'd be a handy thing (I've
> > done 
> > this internally with MAM identifiers, for example), but I think we 
> > should be very careful about when this is the right choice.
> > 
> > So, I'd suggest "SHOULD" here at most, and I might choose to phrase
> > it 
> > as "RECOMMENDED", which has the same RFC 2119 meaning, but somewhat
> > different implicit meaning in English.
> 
> I also would prefer this approach. Simply because I believe that MUST
> should only be used when it is strictly necessary. In this case, it 
> appears to be enough to just say the requirements of the ID value and
> recommend (as in suggest) implementations to use UUIDv4. Unless I am 
> missing a a reason the protocol absolutely requires UUIDv4 and would 
> break otherwise?
> 
> - Flow
> _______________________________________________
> Standards mailing list
> Info: https://mail.jabber.org/mailman/listinfo/standards
> Unsubscribe: standards-unsubscr...@xmpp.org
> _______________________________________________

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

Reply via email to