Re: Problems with latest XEP-0377 updates

Florian Schmaus <[email protected]> Thu, 26 Mar 2026 14:53:48 +0100
Newsgroups gmane.network.jabber.standards-jig
Message-ID <[email protected]>
Hi Matthew,

On 26/03/2026 14.19, Matthew Wild wrote:
> On Thu, 26 Mar 2026 at 13:02, Stephen Paul Weber
> <[email protected]> wrote:
>>> Generally, adding previously undefined elements is considered to be a
>>> breaking change that requires a new namespace, especially in a
>>> protocol that is already deployed.
>>
>> Adding new elements seems like the least breaking change? Unless they're
>> marked as manadatory, any implementation needs to be able to handle unknown
>> child elements in any position they don't expect anyway.
> 
> Handling unknown child elements in unknown namespaces is certainly a
> requirement for XMPP implementations. But for a specific implemented
> namespace defined in a XEP, it is absolutely valid for implementations
> to reject elements which were not defined in the namespace's schema.
> We even have error conditions explicitly defined for use in such
> cases.
> 
> I am personally not one of the people who feel most strongly about
> this, and there have been times in the past where I personally would
> have preferred to sneak in some elements to established namespaces (if
> the disruption would be lower than that caused by a namespace change).
> However it is a position that we have taken as a community since the
> namespace versioning was introduced, that generally schemas do not
> change after publication (I can imagine exceptions for very young
> unimplemented experimental XEPs). This is because some applications do
> choose the strict validation option (sometimes this is for technical
> reasons, because it ensures they can accurately translate XML to
> custom data structures).
> 
> That many implementations will happily ignore extra elements just adds
> to the problems around this particular change, given the nature of
> these elements being user opt-ins (if any clients are sending them
> today, they are 100% being ignored). It's actually a perfect example
> of why namespace versioning was introduced.

I am sorry, but this is not how I perceive the situation.

I think we both agree that implementations are supposed to ignore 
unknown elements. However, if I understood you correctly, you limit this 
to unknown elements in an different namespace from the parent element. 
I, on the other hand, believe this is also true for unknown elements in 
the same namespace.

In general, we want it to be fine for recipients to ignore unknown 
elements (and probably attributes). This allows us to evolve a protocol 
as long as possible without namespace bumps.

Obviously, this only works if the new element (or attribute) can be 
safely ignored by the recipient without breaking functionality. For 
example, hints that the recipient could process, but doesn't have to.

I am not sure why we should artificially limit ourselves here and create 
an extra burden due to additional namespace bumps if we don't have to?

And that's me saying this. The person who also argues for strict 
verification because it eventually increases the robustness of the 
overall ecosystem. For example, rejecting "foo" as an the value of an 
attribute declared to be xs:int, as it is clearly a violation of the 
specification.

But why should we reject something if we don't know what it is supposed 
to be, especially if there are obvious drawbacks associated with such an 
approach?

- Flow

_______________________________________________
Standards mailing list -- [email protected]
To unsubscribe send an email to [email protected]
OpenPGP_signature.asc (application/pgp-signature, 655 B)
-----BEGIN PGP SIGNATURE-----

iQGvBAEBCgCZFiEEl3UFnzoh3OFr5PuuIjmn6PWFIFIFAmnFOmwbFIAAAAAABAAO
bWFudTIsMi41KzEuMTEsMiwyXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25z
Lm9wZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ5Nzc1MDU5RjNBMjFEQ0UxNkJFNEZC
QUUyMjM5QTdFOEY1ODUyMDUyAAoJECI5p+j1hSBSOBAH/AnPxXHDv+RlRbJCy510
di4c0K0S6Fq6oIFIgkybnZomG5Sma3blpB2yaFvwrJ3VDb0O6RtU4YS4Z3HDFAMW
6nDRQZIcMuupe7tCMfiAkU2ioSsFTYEcgtpr5Rd/bu3wMK+oJZorYj64eyzzW4Xu
gstzmS3CxG1U1neRpaVKJsir95gyBaKCxThXvJxUdN+MHU+dfFCglJkKfmyhDIOx
TN64PsBbkHzCut7h+PXWZdKzuVlSeQeruoZ+lEBmuHQNMgLtFfIa2uEOMdZV9VSO
A9Bm+bW9yCHZ/ZckvvCNcZTfeTWCPDNrBaFWECm7BiORshK0oyfPc8S272G0aW00
rFE=
=gZV+
-----END PGP SIGNATURE-----