Subject: [Netmod-ver-dt] multiple streams and YANG 'revision' statement

From: "Sterne, Jason (Nokia - CA/Ottawa)" <[email-masked]>
Date: Thu, 13 Sep 2018 13:58:01 +0000

Hi guys,
(view with fixed width font)

I had previously started an email thread with subject "YANG versioning:  only modify the latest version ?".  But I wanted to present a simplified example of one part of that issue that can be illustrated without even considering non-backwards-compatible changes (non-BC changes).

Vendor models exist in multiple parallel streams. The newer stream will have additional nodes in the schema (new features) that aren't in the older stream.  Both streams will require occasional changes to the YANG (let's pretend they are all backwards compatible changes for the moment).

+ = backwards-compatible change
Module "BGP":

+------------+---------+---------+------------+---
A            B\        C         D            E
               \
                \
                 +--------+------+-----+----------+--
                 M        N      O     P          Q

The module version D and O could be on the same date.  But even without any date collision, looking purely at the YANG revisions would see a stream of dates M->C->N->D & O->P.  The content of the module would flip back and forth.

current YANG 1.1 revision assumes purely a single line (all changes always happen to the latest version).  But I think we need to consider changing it to have a different scope (i.e. per stream , or per major SemVer).

Regards,
Jason

---

From: "Sterne, Jason (Nokia - CA/Ottawa)" <[email-masked]>
Date: Thu, 13 Sep 2018 15:17:52 +0000

Hi guys,

On the call we discussed whether standards models might exist in parallel streams like I show below. That would happen if any changes to a module are ever allowed outside of adding them to the latest revision of the module. I'm doubtful we should converge on a solution that is that strict.

In order to avoid the revision date collision between D and O (and to avoid the flip/flop between M->C->N->D->P...), the module needs to contain some identifier that is different between D and O.  One possible approach is the following:
- Versions A, B, C, D and E are tagged with "stream = 6".
- Versions M, N, O, P and Q are tagged with "stream = 7".
- The scope of YANG 'revision' is "per stream"
- Uniquely identifying a module version/file requires the tuple <stream,revision>

The Major digit of SemVer *could* potentially be used above instead of stream (and then the minor + patch digits could replace the YANG revision). But that would never allow a non-BC change within a stream (we shouldn't do that, but what if we need to ? It probably happens occasionally in vendor models).

Jason

From: Netmod-ver-dt <[email-masked]> On Behalf Of Sterne, Jason (Nokia - CA/Ottawa)
Sent: Thursday, September 13, 2018 9:58 AM
To: [email-masked]
Subject: [Netmod-ver-dt] multiple streams and YANG 'revision' statement

Hi guys,

Regards,
Jason