Ballot for draft-ietf-netmod-yang-semver

Discuss

Christopher Inacio

Yes

Mohamed Boucadair

No Objection

Andy Newton
Charles Eckel
Deb Cooley
Gorry Fairhurst
Gunter Van de Velde
Jim Guichard
Ketan Talaulikar
Mike Bishop
Roman Danyliw
Tommy Jensen

Abstain

Éric Vyncke

Recuse

Mahesh Jethanandani

Summary: Has a DISCUSS. Has enough positions to pass once DISCUSS positions are resolved.

Christopher Inacio
Discuss
Discuss (2026-06-03 for -26) Sent
Thank you to the editors/authors for the very interesting versioning document.  It exposes, yet again, how hard versioning is.

(Just a quick note on the comments themselves, the `####` indicate the section of the document for the comment(s); it makes a lot more sense in my markdown tool that I use to write the notes during review.)

#### 4.4

In section 4.4 that `_COMPAT` tag, once applied cannot be removed.  But there is not clause refining that statement; I believe this is the pertinent line in the draft text:
```
The modifier can change from "_compatible" to "_non_compatible" in a subsequent version, but the modifier MUST NOT change from "_non_compatible" to "_compatible" and MUST NOT be removed.
```
Does this mean that if I have version `2.3.2_compatible` that I release 3.0, that it has to be `3.0.0_compatible`?  Does that make sense?  Or by virtue of understanding the major release number in SemVer (and YANG Semver) that 3.0 is incompatible, and therefore it must be `3.0.0_non_compatible`?  I’m not sure if that is what is intended.  (this could possibly be related to defining the different components of the version number as “Major Version”, for example, but talking about compatible/non-compatible in terms of “revision”.

This text, which I believe isn’t sufficiently clear, doesn’t align with the example given in 4.4.2.

#### 4.4.2

* why doesn’t version ‘0.2.0’ have a `_non_compatible` suffix attached?  Does that not violate 4.4?
* Also, I see no reason the rule as stated in 4.4 with regards to ‘_COMPAT’ would not compel ‘1.0.0’ to have ‘_non_compatible’ attached; even though I expect this is not what is intended.

#### 4.5

* Rule 2: Can you clarify what the “backward-compatible” means and against what it should be measured for this rule?  (Major revison?  This means you have taken away a functionality present in X.0.0? (renamed, removed, etc.))
* Rule 4: This conflicts with the `MUST` in 4.4 - please resolve.
* I don’t know what this statement means, but it includes a ‘MUST’:
  ```
  If a revision entry in a module's revision history includes the "rev:non-backwards-compatible" statement then that MUST be reflected in any YANG semantic version associated with that revision.
  ```
  reflected how?  With a ‘_COMPAT’ statement? But only for changes that aren’t MAJOR Version?

#### 6.1.2.1

Who is the target of the “MUST” to retroactively apply YANG Semver to existing modules?  That’s not a process or protocol MUST, but an IANA MUST?
Comment (2026-06-03 for -26) Sent
Thanks to Joel H. for the GENART review.  Thanks to Lou B. for the shepherd write up, it was insightful for the WG discussions.

(My apologies to all in that I put this review in on the wrong versioning draft originally.  yikes.  8-o )

#### 4.4.2

* I will note that in 4.4.2 you use `NBC` and `BC`.  NBC *is* defined in the Introduction as “non-backwards-compatible (NBC)”; there is no such definition of BC, which I would presume is “backwards-compatible”.  Might be good if the the reader didn’t have to presume.
* This example produces a good example of a question that I’ve been having: what information does `_compatible` convey?  It patch version is assumed to be compatible unless marked `_non_compatible` right?  I don’t believe it conveys any additional information in the naming of a release.

#### 4.4.3

* This section should get mentioned in the definition of ‘_COMPAT’ in 4.4. e.g. 
``` The _COMPAT modifier applies to versions within a MAJOR Version and indicates that a release in X.Y.Z marked with ‘_non_compatible’ indicates that the release is incompatible with first release of X, notionaly X.0.0.  At every MAJOR release, the '_COMPAT' modifier MUST be removed.```
* Is my understanding of what this section indicates as the following correct?
```
Because of branching and its limitations to express compatibility, fundamentally, any release in X.?.? will have all capabilities and interfaces from X.0.0; but incompatibilities may still exist between available compatibilities in X.a.? and X.b.? where 'a' and 'b' may have different functional *additions* to X.0.0.
```

#### 4.5

* What are the exceptions to the ‘SHOULD’ in rule 1?
* Why are there *5* rules in a section desribing the *four* rules?  Maybe rule 5 should be a statement before the 4 rules?

#### 4.6

* I don’t entirely know how to read the example (also, not a YANG expert) but I will note that it appears to me to document the future.  It is version 1.1, but knows that 1.2.2 will be incompatible.

#### 5.2

Rules 1 & 2 aren’t needed are they?  Also, specifying X.Y.Z with Z being anything other than ‘0’ is also pointless because of rule 3, right?  Unless those rules rules, as listed, are in priority order.
Mohamed Boucadair
Yes
Andy Newton
No Objection
Charles Eckel
No Objection
Comment (2026-06-02 for -26) Not sent
Thanks to Marc Blanchet for the ARTART review.
Great to see this work finally making it to the finish line.
Deb Cooley
No Objection
Comment (2026-06-02 for -26) Sent
Thanks to David Mandelberg for their secdir review.  Also thanks to Tony Li for their opsdir review.

Section 2:  I think what the authors call 'branched revision history' of Yang modules, is what I would refer to a fork in code/s/w development.  It doesn't often go well for s/w development, but maybe Yang modules are different.  I certainly don't know enough about how Yang is actually used to tell.

Section 4.3:  The addition of the _COMPAT to the end of the version number seems to make this super complicated, especially when you add what is documented in draft-ietf-netmod-yang-module-versioning with its NBC and BC terminology.

Section 11, para 2:  draft-ietf-tls-8446bis is in AUTH 48, it might make sense to use that vice RFC8446.
Gorry Fairhurst
No Objection
Comment (2026-05-25 for -26) Not sent
Thank you for the work that has been put into this document. I do not see any transport-protocol related concerns.
Gorry
Gunter Van de Velde
No Objection
Jim Guichard
No Objection
Ketan Talaulikar
No Objection
Comment (2026-06-01 for -26) Not sent
Thanks to the authors and the WG for this important work to handle this very fundamental challenge in maintenance of YANG modules.
Mike Bishop
(was Discuss) No Objection
Comment (2026-06-05 for -26) Sent
# IESG review of draft-ietf-netmod-yang-semver-26

CC @MikeBishop

## Comments

### Previous DISCUSS

Thank you for the discussion about the intended uses of this; my original DISCUSS was based on a few misunderstandings. Notably, I missed this restriction:

> There MUST NOT be multiple versions of a YANG artifact that have the same
> MAJOR, MINOR and PATCH version numbers, but different patch modifier strings.
> E.g., artifact version "1.2.3_non_compatible" MUST NOT be defined if artifact
> version "1.2.3" has already been defined.

...and its implication that all versions are minted by (or at least coordinated with) the same source.

While I still think that the inability to identify which version is the parent of another version will cause confusion, my preference for a different approach is not DISCUSS-worthy.

### Section 4.3, paragraph 4

"MUST only" is potentially ambiguous. Does it mean "MUST be present if COMPAT is
present and MUST NOT be present otherwise? If so, consider a single optional element
that MUST begin with the character '_' as a cleaner way to express this.

### Section 4.4, paragraph 12

What does one do with "can indicate" here? Either it indicates this, or
it indicates many things including this. If many things, what is the scope
of things it indicates?

### Section 4.4.3, paragraph 4
```
     software development.  It is recommended to avoid only incrementing
     the PATCH digit on the main branch of YANG modules.  See Appendix B
     Scenario 2 for an illustration and explanation.
```
This says that changes on the main branch should alter more than the PATCH
number, but your example seems to argue for the exact opposite. Should this
instead say "It is recommended that only the main branch of YANG modules
increment the PATCH number"? Or am I misunderstanding?

### Section 5.2, paragraph 15

For the reasons stated here, I'm slightly surprised there's not a
corresponding max-version, in case there's a breaking change which the current
module doesn't yet support.

### Section 6.1.2.1, paragraph 1
```
     For example, if a module or submodule started out in the pre-NMDA
     ([RFC8342] ) world, and then had NMDA support added without removing
     any legacy "state" branches -- and you are looking to add additional
     new features -- a sensible choice for the target YANG Semver would be
     1.2.0 (since 1.0.0 would have been the initial, pre-NMDA release, and
     1.1.0 would have been the NMDA revision).
```
This can probably be reworded to remove the "world" terminology and the use of
the second-person.

### Too many authors

The document has six authors, which exceeds the recommended author limit. Has
the sponsoring AD agreed that this is appropriate?

## Nits

All comments below are about very minor potential issues that you may choose to
address in some way - or ignore - as you see fit. Some were flagged by
automated tools (via https://github.com/larseggert/ietf-reviewtool), so there
will likely be some false positives. There is no need to let me know what you
did with these suggestions.

### Typos

#### Section 1, paragraph 1
```
-    [I-D.ietf-netmod-yang-module-versioning] puts forth new concepts
-                                                       -------------
-    relating to modified rules for updating YANG modules and submodules,
-   ------------
```

#### Section 1, paragraph 2
```
-    The goal being to add a human readable version identifier that
-      --------- ^^^^^            ^
+    This adds a human-readable version identifier that
+       ^    +        ^
```

### Outdated references

Document references `draft-clacla-netmod-yang-model-update-06`, but `-26` is
the latest available revision.

### Grammar/style

#### Section 4.4.1, paragraph 1
```
 the versions could look like, from oldest version to newest: 0.1.0 - first p
                                    ^^^^^^
```
A determiner may be missing.

#### Section 4.6.2, paragraph 2
```
s section and the IETF-specific sub-section below provide YANG Semver-specif
                                ^^^^^^^^^^^
```
This word is normally spelled as one.
Roman Danyliw
(was Discuss) No Objection
Comment (2026-07-07) Sent
Thank you to Gyan Mishra for the GENART review.

Thank you for addressing my DISCUSS and COMMENT ballot feedback.
Tommy Jensen
No Objection
Éric Vyncke
(was Discuss) Abstain
Comment (2026-07-08) Sent
Thanks for the work done in this document and for the discussion while trying to address my previous DISCUSS ballot: https://mailarchive.ietf.org/arch/msg/netmod/Ht5hC1-lp_rjPKE8YNXyPUhPWNM/

Alas, I still find the whole section 4.5 overly complex (see the above email thread) even if sensible... Hence my ABSTAIN ballot.
Mahesh Jethanandani
(was Yes) Recuse
Comment (2026-05-28 for -26) Not sent
I was on the design team for this set of drafts at one time; therefore, I am recusing myself.