Hi all, These are the meeting notes that I captured from the open YANG versioning design team meeting yesterday.
Attendees: Juergen, Joe, Rob, Martin, Balazs, Kent, Reshad, Qin, Michael, Jason, Mahesh Recording: https://cisco.webex.com/cisco/lsr.php?RCID=c4d757b2c15e4f3cb20eff11a155203c Password: iPpxJQA4 1) The first half of the meeting was based on discussing the requirements: In summary, my interpretation is that there is consensus on the underlying spirit or the requirements, although in some cases the requirements text needs further polishing, and there was not complete consensus on all parts of all requirements. - The requirements discussion was only focussed on the requirements section 5 of draft-verdt-netmod-yang-versioning-reqs-02, we didn't discuss the background text. - The assumption as to whether this document should take the full path to publication has been deferred, but with the understanding that more discussion would be required on the background text to reach consensus. There was a desire to reach agreement on the list of requirements itself. - These was agreement that IETF models should be limited to a linear revision history, with changes only in the most recent revision. It was agreed that in some cases it is necessary to make NBC changes (in a new most recent revision) in IETF YANG modules to fix bugs. - There was discussion that an applicability statement could be added, or some of the requirements could be split between SDO vs Vendor requirements, but there did not seem to be strong consensus either for or against this change. In anything, there seemed to be a slight preference to trying not to make this split. - It was agreed that YANG should have a single versioning scheme that is capable of covering both SDO requirements and vendor requirements. There was agreement that guidelines text could be used to provide guidance on how IETF models should be versioned. - It was agreed that it would be better to change the requirement text so that instead of saying "NBC changes are allowed" the text to be more along that the requirement is to have a way "to communicate when NBC changes have occurred". I.e. the key is how NBC changes are documented, rather than saying whether or not they are allowed/encouraged/etc. - We also discussed and agreed that it is better not to refer to "bug fixes" because we don't want to have to try and define what a bug fix is. Instead, we agreed that requirement 1.4 should be stated something along the lines of: "The solution MUST be able to describe backwards-compatible changes, as well as non-backwards-compatible changes in non-latest-release modules." - We discussed the import requirement (1.3), and there was strong consensus that there is a need to import version "X or later" (e.g. to fufill a leafref/augmentation/etc dependency). There was no consensus on the second sentence ("Once non-backwards-compatible changes to modules are allowed, the refined import statement is used to express the correct dependency between modules"); specifically, whether there needs to be an "upper bound" on what version can be imported. - There was no consensus on whether "linear module development of YANG models is ideal" is correct. In particular, it was noted that what might be ideal for clients may not be ideal for vendors. 2) Discussion on solutions: No consensus was reached on a direction for the solution. Most of the time was spent discussing a scheme suggested by Kent of keeping a ledger in the top of the YANG file that documents its history. My interpretation is that this is very similar as the existing revision history in a YANG module, but with the following points: - Revisions are identified by a revision-date (as they are today), but the revision-date only identifies uniqueness, and the most recent version of a particular YANG module file. E.g. it represents the head tip of a branch (or DAG leaf node), rather than the head tip of only a single linear history (as it does today). - For each revision, addition metadata is added to indicate whether the change is bc or nbc. - Extra metadata could be added (in the form of xpaths) to document which parts of the schema have changed (if a tree was added/removed then it would only reference the tree, not every element in it). - A "version tag" could be added to label a particular revision in a more human readable way. - YANG files would be identified by their revision-date, but the tag could also be optionally included in the filename. - Importing revision "X or later" would not mean any revision with a later date, but any revision that is contained in the history (i.e. ledger) of the file that is being imported. - The revision for an import could also be identified by the tag name. - This scheme allows for unlimited "branching" (since each new revision only has to point to the revision that it is derived from). - Possibly semver or similar annotations could still be done using the version tags. - There were concerns expressed about how easily clients will be able to relate to YANG modules that are only identified by revision date, but the tag may mitigate this problem. - We discussed the biggest benefit of this solution being that it allows arbitrary unlimited branching at any point, rather than being arbitrarily constrained. The biggest downside to the solution is perhaps additional complexity for users managing multiple versions, i.e. it is less intuitive as to the relationship between revisions. We ran out of time at 6.30 and no clear next steps were identified in the meeting. The expectation is that this solution should be investigated further, either by the design team, or as a separate individual draft. It would be good to try and reach agreement on the next steps so that the WG/DT can continue to make progress in this area. Thanks, Rob
_______________________________________________ netmod mailing list [email protected] https://www.ietf.org/mailman/listinfo/netmod
