On Tue, Jun 30, 2026 at 6:57 AM Joe Clarke (jclarke) <jclarke=
[email protected]> wrote:
> Hello, netmod. As part of the ongoing YANG module versioning work, Michal
> Vasko created a comprehensive libyang test suite for
> non-backwards-compatible (NBC), backwards-compatible (BC), and editorial
> (ED) changes. I’ve run my pyang against his suite. Unsurprisingly, there
> are several commonalities.
>
> However, there were a few deviations. First, the question. Consider this
> diff:
>
> container cont {
> leaf l1 {
> type string;
> }
>
> - leaf l2 {
> - type uint8;
> - }
> -
> container cont2 {
> leaf-list ll {
> type instance-identifier;
> }
> }
> +
> + leaf l2 {
> + type uint8;
> + }
> +
> + leaf l3 {
> + type int8;
> + }
> }
>
> Michal asserted that changing the order of data nodes is NBC. The base
> pyang’s check-update-from algorithm does not recognize this as NBC. So, my
> version reports this as BC. RFC7950 states:
>
> In statements that have any data definition statements as
> substatements, those data definition substatements MUST NOT be
> reordered. If new data definition statements are added, they can be
> added anywhere in the sequence of existing substatements.
>
> But adding a node anywhere in the sequence would change its order. So,
> which is the expected output, NBC or BC?
>
> Now, the observation. Michal has a test of a YANG module moving from YANG
> 1 to YANG 1.1. He labels that as NBC. While RFC7950 Section 12 describes
> how the two versions interact, I think this assertion is correct since an
> older YANG 1 vendor-bar cannot import a newer YANG 1.1 ietf-foo even if
> there were no other schema changes. This means that all IETF modules that
> have moved from YANG 1 to YANG 1.1 will have a MAJOR YANG Semver update in
> their histories.
>
>
I think you are correct.
A YANG version 1 module or submodule MUST NOT import a YANG
version 1.1 module by revision.
So just changing the yang-version to 1.1 in module 'foo' means any 1.0
module importing foo by revision-date
is breaking this rule.
I have no idea why import by revision is MUST NOT, but import without any
revision is MAY.
Seems like the rule is too picky and should be ignored.
Andy
Joe
>
> _______________________________________________
> netmod mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
>
_______________________________________________
netmod mailing list -- [email protected]
To unsubscribe send an email to [email protected]