draft-ietf-netmod-yang-semver-04.txt   draft-ietf-netmod-yang-semver-05.txt 
Network Working Group J. Clarke, Ed. Network Working Group J. Clarke, Ed.
Internet-Draft R. Wilton, Ed. Internet-Draft R. Wilton, Ed.
Updates: 8407 (if approved) Cisco Systems, Inc. Updates: 8407 (if approved) Cisco Systems, Inc.
Intended status: Standards Track R. Rahman Intended status: Standards Track R. Rahman
Expires: 28 April 2022 Expires: 12 May 2022
B. Lengyel B. Lengyel
Ericsson Ericsson
J. Sterne J. Sterne
Nokia Nokia
B. Claise B. Claise
Huawei Huawei
25 October 2021 8 November 2021
YANG Semantic Versioning YANG Semantic Versioning
draft-ietf-netmod-yang-semver-04 draft-ietf-netmod-yang-semver-05
Abstract Abstract
This document specifies a scheme and guidelines for applying an This document specifies a scheme and guidelines for applying an
extended set of semantic versioning rules to revisions of YANG extended set of semantic versioning rules to revisions of YANG
artifacts (e.g., modules and packages). Additionally, this document artifacts (e.g., modules and packages). Additionally, this document
defines an RFCAAAA-compliant revision-label-scheme for this YANG defines an RFCAAAA-compliant revision-label-scheme for this YANG
semantic versioning scheme. semantic versioning scheme.
Status of This Memo Status of This Memo
skipping to change at page 1, line 42 skipping to change at page 1, line 42
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 28 April 2022. This Internet-Draft will expire on 12 May 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 2, line 30 skipping to change at page 2, line 30
3.2. Semantic Versioning Scheme for YANG Artifacts . . . . . . 4 3.2. Semantic Versioning Scheme for YANG Artifacts . . . . . . 4
3.2.1. YANG Semver with submodules . . . . . . . . . . . . . 7 3.2.1. YANG Semver with submodules . . . . . . . . . . . . . 7
3.2.2. Examples for YANG semantic versions . . . . . . . . . 7 3.2.2. Examples for YANG semantic versions . . . . . . . . . 7
3.3. YANG Semantic Version Update Rules . . . . . . . . . . . 9 3.3. YANG Semantic Version Update Rules . . . . . . . . . . . 9
3.4. Examples of the YANG Semver Label . . . . . . . . . . . . 11 3.4. Examples of the YANG Semver Label . . . . . . . . . . . . 11
3.4.1. Example Module Using YANG Semver . . . . . . . . . . 11 3.4.1. Example Module Using YANG Semver . . . . . . . . . . 11
3.4.2. Example of Package Using YANG Semver . . . . . . . . 13 3.4.2. Example of Package Using YANG Semver . . . . . . . . 13
4. Import Module by Semantic Version . . . . . . . . . . . . . . 13 4. Import Module by Semantic Version . . . . . . . . . . . . . . 13
5. Guidelines for Using Semver During Module Development . . . . 14 5. Guidelines for Using Semver During Module Development . . . . 14
5.1. Pre-release Version Precedence . . . . . . . . . . . . . 15 5.1. Pre-release Version Precedence . . . . . . . . . . . . . 15
5.2. YANG Semver in IETF Modules . . . . . . . . . . . . . . . 15 5.2. YANG Semver in IETF Modules . . . . . . . . . . . . . . . 16
6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 16 6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 16
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 18 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 19
8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 8. Security Considerations . . . . . . . . . . . . . . . . . . . 19
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
9.1. YANG Module Registrations . . . . . . . . . . . . . . . . 19 9.1. YANG Module Registrations . . . . . . . . . . . . . . . . 20
9.2. Guidance for YANG Semver in IANA maintained YANG modules 9.2. Guidance for YANG Semver in IANA maintained YANG modules
and submodules . . . . . . . . . . . . . . . . . . . . . 20 and submodules . . . . . . . . . . . . . . . . . . . . . 20
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 21
10.1. Normative References . . . . . . . . . . . . . . . . . . 21 10.1. Normative References . . . . . . . . . . . . . . . . . . 21
10.2. Informative References . . . . . . . . . . . . . . . . . 21 10.2. Informative References . . . . . . . . . . . . . . . . . 22
Appendix A. Example IETF Module Development . . . . . . . . . . 22 Appendix A. Example IETF Module Development . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24
1. Introduction 1. Introduction
[I-D.ietf-netmod-yang-module-versioning] puts forth a number of [I-D.ietf-netmod-yang-module-versioning] puts forth a number of
concepts relating to modified rules for updating modules and concepts relating to modified rules for updating modules and
submodules, a means to signal when a new revision of a module or submodules, a means to signal when a new revision of a module or
submodule has non-backwards-compatible (NBC) changes compared to its submodule has non-backwards-compatible (NBC) changes compared to its
previous revision, and a scheme that uses the revision history as a previous revision, and a scheme that uses the revision history as a
lineage for determining from where a specific revision of a YANG lineage for determining from where a specific revision of a YANG
skipping to change at page 5, line 30 skipping to change at page 5, line 30
fully compatible with implementations that understand the YANG fully compatible with implementations that understand the YANG
semantic versioning scheme defined in this document. semantic versioning scheme defined in this document.
* If updates are always restricted to the latest revision of the * If updates are always restricted to the latest revision of the
artifact only, then the version numbers used by the YANG semantic artifact only, then the version numbers used by the YANG semantic
versioning scheme are exactly the same as those defined by the versioning scheme are exactly the same as those defined by the
[semver] versioning scheme. [semver] versioning scheme.
Every YANG module and submodule versioned using the YANG semantic Every YANG module and submodule versioned using the YANG semantic
versioning scheme specifies the module's or submodule's semantic versioning scheme specifies the module's or submodule's semantic
version number as the argument to the 'rev:revision-label' statement. version as the argument to the 'rev:revision-label' statement.
Because the rules put forth in Because the rules put forth in
[I-D.ietf-netmod-yang-module-versioning] are designed to work well [I-D.ietf-netmod-yang-module-versioning] are designed to work well
with existing versions of YANG and allow for artifact authors to with existing versions of YANG and allow for artifact authors to
migrate to this scheme, it is not expected that all revisions of a migrate to this scheme, it is not expected that all revisions of a
given YANG artifact will have a semantic version label. For example, given YANG artifact will have a semantic version label. For example,
the first revision of a module or submodule may have been produced the first revision of a module or submodule may have been produced
before this scheme was available. before this scheme was available.
YANG packages that make use of this YANG Semver will reflect that in YANG packages that make use of this YANG Semver will reflect that in
skipping to change at page 7, line 39 skipping to change at page 7, line 39
Note that the meaning of a submodule may change drastically despite Note that the meaning of a submodule may change drastically despite
having no changes in content or revision due to changes in other having no changes in content or revision due to changes in other
submodules belonging to the same module (e.g. groupings and typedefs submodules belonging to the same module (e.g. groupings and typedefs
declared in one submodule and used in another). declared in one submodule and used in another).
3.2.2. Examples for YANG semantic versions 3.2.2. Examples for YANG semantic versions
The following diagram and explanation illustrate how YANG semantic The following diagram and explanation illustrate how YANG semantic
versions work. versions work.
Example YANG semantic versions for an example artifact: YANG Semantic versions for an example module:
0.1.0 0.1.0
| |
0.2.0 0.2.0
| |
1.0.0 1.0.0
| \ |
| 1.1.0 -> 1.1.1_compatible -> 1.1.2_non_compatible 1.1.0 -> 1.1.1_compatible -> 1.1.2_non_compatible
| | |
| 1.2.0 -> 1.2.1_non_compatible -> 1.2.2_non_compatible 1.2.0 -> 1.2.1_non_compatible -> 1.2.2_non_compatible
| | | \
| 1.3.0 -> 1.3.1 2.0.0 \
| | \--> 1.3.0 -> 1.3.1_non_compatible
2.0.0 3.0.0 |
| | 1.4.0
3.0.0 3.1.0
\
3.1.0
Assume the tree diagram above illustrates how an example YANG The tree diagram above illustrates how the version history might
module's version history might evolve. For example, the tree might evolve for an example module. The tree diagram only shows the
represent the following changes, listed in chronological order of parent/child ancestry relationships between the revisions. It does
when the revisions were published, from oldest revision to newest: not describe the chronology of the revisions (i.e. when in time each
revision was published relative to the other revisions).
The following description lists an example of what the chronological
order of the revisions could look like, from oldest revision to
newest:
0.1.0 - first pre-release module version 0.1.0 - first pre-release module version
0.2.0 - second pre-release module version (with NBC changes) 0.2.0 - second pre-release module version (with NBC changes)
1.0.0 - first release (may have NBC changes from 0.2.0) 1.0.0 - first release (may have NBC changes from 0.2.0)
1.1.0 - added new functionality, leaf "foo" (BC) 1.1.0 - added new functionality, leaf "foo" (BC)
1.2.0 - added new functionality, leaf "baz" (BC) 1.2.0 - added new functionality, leaf "baz" (BC)
1.3.0 - improve existing functionality, added leaf "foo-64" (BC) 2.0.0 - change existing model for performance reasons, e.g. re-key
list (NBC)
1.3.1 - improve description wording for "foo-64" (Editorial) 1.3.0 - improve existing functionality, added leaf "foo-64" (BC)
1.1.1_compatible - backport "foo-64" leaf to 1.1.x to avoid 1.1.1_compatible - backport "foo-64" leaf to 1.1.x to avoid
implementing "baz" from 1.2.0 (BC) implementing "baz" from 1.2.0. This revision was created after
1.2.0 otherwise it may have been released as 1.2.0. (BC)
2.0.0 - change existing model for performance reasons, e.g. re-key 3.0.0 - NBC bugfix, rename "baz" to "bar"; also add new BC leaf
list (NBC) "wibble"; (NBC)
1.3.1_non_compatible - backport NBC fix, rename "baz" to "bar"
(NBC)
1.2.1_non_compatible - backport NBC fix, rename "baz" to "bar"
(NBC)
1.1.2_non_compatible - NBC point bug fix, not required in 2.0.0 1.1.2_non_compatible - NBC point bug fix, not required in 2.0.0
due to model changes (NBC) due to model changes (NBC)
3.0.0 - NBC bugfix, rename "baz" to "bar"; also add new BC leaf 1.4.0 - introduce new leaf "ghoti" (BC)
"wibble"; (NBC)
1.2.1_non_compatible - backport NBC fix, changing "baz" to "bar"
1.2.2_non_compatible - backport "wibble". This is a BC change but
"non_compatible" modifier is sticky.
3.1.0 - introduce new leaf "wobble" (BC) 3.1.0 - introduce new leaf "wobble" (BC)
The partial ordering relationships based on the semantic versioning 1.2.2_non_compatible - backport "wibble". This is a BC change but
"non_compatible" modifier is sticky. (BC)
The partial ancestry relationships based on the semantic versioning
numbers are as follows: numbers are as follows:
1.0.0 < 1.1.0 < 1.2.0 < 1.3.0 < 2.0.0 < 3.0.0 < 3.1.0 1.0.0 < 1.1.0 < 1.2.0 < 2.0.0 < 3.0.0 < 3.1.0
1.0.0 < 1.1.0 < 1.1.1_compatible < 1.1.2_non_compatible 1.0.0 < 1.1.0 < 1.1.1_compatible < 1.1.2_non_compatible
1.0.0 < 1.1.0 < 1.2.0 < 1.2.1_non_compatible < 1.0.0 < 1.1.0 < 1.2.0 < 1.2.1_non_compatible <
1.2.2_non_compatible 1.2.2_non_compatible
1.0.0 < 1.1.0 < 1.2.0 < 1.3.0 < 1.3.1_non_compatible
1.0.0 < 1.1.0 < 1.2.0 < 1.3.0 < 1.4.0
There is no ordering relationship between 1.1.1_non_compatible and There is no ordering relationship between 1.1.1_non_compatible and
either 1.2.0 or 1.2.1_non_compatible, except that they share the either 1.2.0 or 1.2.1_non_compatible, except that they share the
common ancestor of 1.1.0. common ancestor of 1.1.0.
Looking at the version number alone, the module definition in 2.0.0 Looking at the version number alone does not indicate ancestry. The
does not necessarily contain the contents of 1.3.0. However, the module definition in 2.0.0, for example, does not contain all the
module revision history in 2.0.0 may well indicate that it was edited contents of 1.3.0. Version 2.0.0 is not derived from 1.3.0.
from module version 1.3.0.
3.3. YANG Semantic Version Update Rules 3.3. YANG Semantic Version Update Rules
When a new revision of an artifact is produced, then the following When a new revision of an artifact is produced, then the following
rules define how the YANG semantic version number for the new rules define how the YANG semantic version for the new artifact
artifact revision is calculated, based on the changes between the two revision is calculated, based on the changes between the two artifact
artifact revisions, and the YANG semantic version number of the base revisions, and the YANG semantic version of the base artifact
artifact revision from which the changes are derived. revision from which the changes are derived.
The following four rules specify the RECOMMENDED, and REQUIRED The following four rules specify the RECOMMENDED, and REQUIRED
minimum, update to a YANG semantic version number: minimum, update to a YANG semantic version:
1. If an artifact is being updated in a non-backwards-compatible 1. If an artifact is being updated in a non-backwards-compatible
way, then the artifact version way, then the artifact version
"X.Y.Z[_compatible|_non_compatible]" SHOULD be updated to "X.Y.Z[_compatible|_non_compatible]" SHOULD be updated to
"X+1.0.0" unless that version has already been used for this "X+1.0.0" unless that version has already been used for this
artifact but with different content, in which case the artifact artifact but with different content, in which case the artifact
version "X.Y.Z+1_non_compatible" SHOULD be used instead. version "X.Y.Z+1_non_compatible" SHOULD be used instead.
2. If an artifact is being updated in a backwards-compatible way, 2. If an artifact is being updated in a backwards-compatible way,
then the next version number depends on the format of the current then the next version number depends on the format of the current
skipping to change at page 11, line 21 skipping to change at page 11, line 33
Although YANG Semver always indicates when a non-backwards- Although YANG Semver always indicates when a non-backwards-
compatible, or backwards-compatible change may have occurred to a compatible, or backwards-compatible change may have occurred to a
YANG artifact, it does not guarantee that such a change has occurred, YANG artifact, it does not guarantee that such a change has occurred,
or that consumers of that YANG artifact will be impacted by the or that consumers of that YANG artifact will be impacted by the
change. Hence, tooling, e.g., change. Hence, tooling, e.g.,
[I-D.ietf-netmod-yang-schema-comparison] , also plays an important [I-D.ietf-netmod-yang-schema-comparison] , also plays an important
role for comparing YANG artifacts and calculating the likely impact role for comparing YANG artifacts and calculating the likely impact
from changes. from changes.
[I-D.ietf-netmod-yang-module-versioning] defines the "rev:nbc- [I-D.ietf-netmod-yang-module-versioning] defines the "rev:non-
changes" extension statement to indicate where non-backwards- backwards-compatible" extension statement to indicate where non-
compatible changes have occurred in the module revision history. If backwards-compatible changes have occurred in the module revision
a revision entry in a module's revision history includes the history. If a revision entry in a module's revision history includes
"rev:nbc-changes" statement then that MUST be reflected in any YANG the "rev:non-backwards-compatible" statement then that MUST be
semantic version associated with that revision. However, the reverse reflected in any YANG semantic version associated with that revision.
does not necessarily hold, i.e., if the MAJOR version has been However, the reverse does not necessarily hold, i.e., if the MAJOR
incremented it does not necessarily mean that a "rev:nbc-changes" version has been incremented it does not necessarily mean that a
statement would be present. "rev:non-backwards-compatible" statement would be present.
3.4. Examples of the YANG Semver Label 3.4. Examples of the YANG Semver Label
3.4.1. Example Module Using YANG Semver 3.4.1. Example Module Using YANG Semver
Below is a sample YANG module that uses the YANG Semver revision- Below is a sample YANG module that uses the YANG Semver revision-
label based on the rules defined in this document. label based on the rules defined in this document.
module example-versioned-module { module example-versioned-module {
yang-version 1.1; yang-version 1.1;
namespace "urn:example:versioned:module"; namespace "urn:example:versioned:module";
prefix "exvermod"; prefix "exvermod";
rev:revision-label-scheme "yangver:yang-semver"; rev:revision-label-scheme "ysver:yang-semver";
import ietf-yang-revisions { prefix "rev"; }
import ietf-yang-semver { prefix "ysver"; }
description
"to be completed";
revision 2018-02-28 {
description "Added leaf 'wobble'";
rev:revision-label 3.1.0;
}
revision 2017-12-31 { import ietf-yang-revisions { prefix "rev"; }
description "Rename 'baz' to 'bar', added leaf 'wibble'"; import ietf-yang-semver { prefix "ysver"; }
rev:revision-label 3.0.0;
rev:nbc-changes;
}
revision 2017-10-30 { description
description "Change the module structure"; "to be completed";
rev:revision-label 2.0.0;
rev:nbc-changes;
}
revision 2017-08-30 { revision 2017-08-30 {
description "Clarified description of 'foo-64' leaf"; description "Backport 'wibble' leaf";
rev:revision-label 1.3.1; rev:revision-label 1.2.2_non_compatible;
} }
revision 2017-07-30 { revision 2017-07-30 {
description "Added leaf foo-64"; description "Rename 'baz' to 'bar'";
rev:revision-label 1.3.0; rev:revision-label 1.2.1_non_compatible;
} rev:non-backwards-compatible;
}
revision 2017-04-20 { revision 2017-04-20 {
description "Add new functionality, leaf 'baz'"; description "Add new functionality, leaf 'baz'";
rev:revision-label 1.2.0; rev:revision-label 1.2.0;
} }
revision 2017-04-03 { revision 2017-04-03 {
description "Add new functionality, leaf 'foo'"; description "Add new functionality, leaf 'foo'";
rev:revision-label 1.1.0; rev:revision-label 1.1.0;
} }
revision 2017-02-07 { revision 2017-02-07 {
description "First release version."; description "First release version.";
rev:revision-label 1.0.0; rev:revision-label 1.0.0;
} }
// Note: semver rules do not apply to 0.X.Y labels. // Note: semver rules do not apply to 0.X.Y labels.
// The following pre-release revision statements would not
// appear in any final published version of a module. They
// are removed when the final version is published.
// During the pre-release phase of development, only a
// single one of these revision statements would appear
revision 2017-01-30 { // revision 2017-01-30 {
description "NBC changes to initial revision"; // description "NBC changes to initial revision";
semver:module-version 0.2.0; // rev:revision-label 0.2.0;
} // rev:non-backwards-compatible; // optional
// // (theoretically no
// // 'previous released version')
// }
revision 2017-01-26 { // revision 2017-01-26 {
description "Initial module version"; // description "Initial module version";
semver:module-version 0.1.0; // rev:revision-label 0.1.0;
} // }
//YANG module definition starts here //YANG module definition starts here
} }
3.4.2. Example of Package Using YANG Semver 3.4.2. Example of Package Using YANG Semver
Below is an example YANG package that uses the semver revision label Below is an example YANG package that uses the semver revision label
based on the rules defined in this document. based on the rules defined in this document.
{ {
"ietf-yang-instance-data:instance-data-set": { "ietf-yang-instance-data:instance-data-set": {
"name": "example-yang-pkg", "name": "example-yang-pkg",
"target-ptr": "TBD", "target-ptr": "TBD",
skipping to change at page 16, line 46 skipping to change at page 17, line 5
YANG Semver would be 1.2.0 (since 1.0.0 would have been the initial, 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). pre-NMDA release, and 1.1.0 would have been the NMDA revision).
See Appendix A for a detailed example of IETF pre-release versions. See Appendix A for a detailed example of IETF pre-release versions.
6. YANG Module 6. YANG Module
This YANG module contains the typedef for the YANG semantic version This YANG module contains the typedef for the YANG semantic version
and the identity to signal its use. and the identity to signal its use.
<CODE BEGINS> file "ietf-yang-semver@2021-10-20.yang" <CODE BEGINS> file "ietf-yang-semver@2021-11-04.yang"
module ietf-yang-semver { module ietf-yang-semver {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-yang-semver"; namespace "urn:ietf:params:xml:ns:yang:ietf-yang-semver";
prefix ysver; prefix ysver;
rev:revision-label-scheme "yang-semver"; rev:revision-label-scheme "yang-semver";
import ietf-yang-revisions { import ietf-yang-revisions {
prefix rev; prefix rev;
} }
organization organization
"IETF NETMOD (Network Modeling) Working Group"; "IETF NETMOD (Network Modeling) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org> WG List: <mailto:netmod@ietf.org>
skipping to change at page 17, line 16 skipping to change at page 17, line 24
} }
organization organization
"IETF NETMOD (Network Modeling) Working Group"; "IETF NETMOD (Network Modeling) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org> WG List: <mailto:netmod@ietf.org>
Author: Joe Clarke Author: Joe Clarke
<mailto:jclarke@cisco.com> <mailto:jclarke@cisco.com>
Author: Benoit Claise
<mailto:benoit.claise@huawei.com>
Author: Reshad Rahman
<mailto:reshad@yahoo.com>
Author: Robert Wilton Author: Robert Wilton
<mailto:rwilton@cisco.com> <mailto:rwilton@cisco.com>
Author: Reshad Rahman
<mailto:reshad@yahoo.com>
Author: Balazs Lengyel Author: Balazs Lengyel
<mailto:balazs.lengyel@ericsson.com> <mailto:balazs.lengyel@ericsson.com>
Author: Jason Sterne Author: Jason Sterne
<mailto:jason.sterne@nokia.com>"; <mailto:jason.sterne@nokia.com>
Author: Benoit Claise
<mailto:benoit.claise@huawei.com>";
description description
"This module provides type and grouping definitions for YANG "This module provides type and grouping definitions for YANG
packages. packages.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
skipping to change at page 17, line 45 skipping to change at page 18, line 4
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: update the date below with the date of RFC publication // RFC Ed.: update the date below with the date of RFC publication
// and remove this note. // and remove this note.
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note. // note.
// RFC Ed. update the rev:revision-label to "1.0.0". // RFC Ed. update the rev:revision-label to "1.0.0".
revision 2021-10-20 { revision 2021-11-04 {
rev:revision-label "1.0.0-draft-ietf-netmod-yang-semver-04"; rev:revision-label "1.0.0-draft-ietf-netmod-yang-semver-05";
description description
"Initial revision"; "Initial revision";
reference reference
"RFC XXXX: YANG Semantic Versioning."; "RFC XXXX: YANG Semantic Versioning.";
} }
/* /*
* Identities * Identities
*/ */
skipping to change at page 18, line 29 skipping to change at page 18, line 37
reference for this identity."; reference for this identity.";
reference reference
"RFC XXXX: YANG Semantic Versioning."; "RFC XXXX: YANG Semantic Versioning.";
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef version { typedef version {
type string { type rev:revision-label {
pattern '[0-9]+[.][0-9]+[.][0-9]+(_(non_)?compatible)?(-[A-Za-z0-9.-]+)?([+][A-Za-z0-9.-]+)?'; pattern '[0-9]+[.][0-9]+[.][0-9]+(_(non_)?compatible)?'
+ '(-[A-Za-z0-9.-]+[.-][0-9]+)?([+][A-Za-z0-9.-]+)?';
} }
description description
"Represents a YANG semantic version number. The rules governing the "Represents a YANG semantic version. The rules governing the
use of this revision label scheme are defined in the reference for use of this revision label scheme are defined in the reference for
this typedef."; this typedef.";
reference reference
"RFC XXXX: YANG Semantic Versioning."; "RFC XXXX: YANG Semantic Versioning.";
} }
} }
<CODE ENDS> <CODE ENDS>
7. Contributors 7. Contributors
This document grew out of the YANG module versioning design team that This document grew out of the YANG module versioning design team that
started after IETF 101. The design team consists of the following started after IETF 101. The design team consists of the following
members whom have worked on the YANG versioning project: members whom have worked on the YANG versioning project:
* Balazs Lengyel * Balazs Lengyel
* Benoit Claise * Benoit Claise
* Bo Wu
* Ebben Aries * Ebben Aries
* Jan Lindblad
* Jason Sterne * Jason Sterne
* Joe Clarke * Joe Clarke
* Juergen Schoenwaelder * Juergen Schoenwaelder
* Mahesh Jethanandani * Mahesh Jethanandani
* Michael (Wangzitao) * Michael (Wangzitao)
skipping to change at page 21, line 41 skipping to change at page 22, line 5
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of
Documents Containing YANG Data Models", BCP 216, RFC 8407, Documents Containing YANG Data Models", BCP 216, RFC 8407,
DOI 10.17487/RFC8407, October 2018, DOI 10.17487/RFC8407, October 2018,
<https://www.rfc-editor.org/info/rfc8407>. <https://www.rfc-editor.org/info/rfc8407>.
[I-D.ietf-netmod-yang-module-versioning] [I-D.ietf-netmod-yang-module-versioning]
Wilton, R., Rahman, R., Lengyel, B., Clarke, J., and J. Wilton, R., Rahman, R., Lengyel, B., Clarke, J., and J.
Sterne, "Updated YANG Module Revision Handling", Work in Sterne, "Updated YANG Module Revision Handling", Work in
Progress, Internet-Draft, draft-ietf-netmod-yang-module- Progress, Internet-Draft, draft-ietf-netmod-yang-module-
versioning-03, 12 July 2021, versioning-04, 25 October 2021,
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod- <https://tools.ietf.org/html/draft-ietf-netmod-yang-
yang-module-versioning-03>. module-versioning-04>.
10.2. Informative References 10.2. Informative References
[I-D.clacla-netmod-yang-model-update] [I-D.clacla-netmod-yang-model-update]
Claise, B., Clarke, J., Lengyel, B., and K. D'Souza, "New Claise, B., Clarke, J., Lengyel, B., and K. D'Souza, "New
YANG Module Update Procedure", Work in Progress, Internet- YANG Module Update Procedure", Work in Progress, Internet-
Draft, draft-clacla-netmod-yang-model-update-06, 2 July Draft, draft-clacla-netmod-yang-model-update-06, 2 July
2018, <https://datatracker.ietf.org/doc/html/draft-clacla- 2018, <https://tools.ietf.org/html/draft-clacla-netmod-
netmod-yang-model-update-06>. yang-model-update-06>.
[I-D.ietf-netmod-yang-packages] [I-D.ietf-netmod-yang-packages]
Wilton, R., Rahman, R., Clarke, J., Sterne, J., and B. Wu, Wilton, R., Rahman, R., Clarke, J., Sterne, J., and B. Wu,
"YANG Packages", Work in Progress, Internet-Draft, draft- "YANG Packages", Work in Progress, Internet-Draft, draft-
ietf-netmod-yang-packages-01, 2 November 2020, ietf-netmod-yang-packages-02, 25 October 2021,
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod- <https://tools.ietf.org/html/draft-ietf-netmod-yang-
yang-packages-01>. packages-02>.
[I-D.ietf-netmod-yang-schema-comparison] [I-D.ietf-netmod-yang-schema-comparison]
Wilton, R., "YANG Schema Comparison", Work in Progress, Wilton, R., "YANG Schema Comparison", Work in Progress,
Internet-Draft, draft-ietf-netmod-yang-schema-comparison- Internet-Draft, draft-ietf-netmod-yang-schema-comparison-
01, 2 November 2020, 01, 2 November 2020, <https://tools.ietf.org/html/draft-
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod- ietf-netmod-yang-schema-comparison-01>.
yang-schema-comparison-01>.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore Architecture and R. Wilton, "Network Management Datastore Architecture
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
<https://www.rfc-editor.org/info/rfc8342>. <https://www.rfc-editor.org/info/rfc8342>.
[openconfigsemver] [openconfigsemver]
"Semantic Versioning for Openconfig Models", "Semantic Versioning for Openconfig Models",
<http://www.openconfig.net/docs/semver/>. <http://www.openconfig.net/docs/semver/>.
skipping to change at page 23, line 26 skipping to change at page 23, line 41
Continued version lineage after adoption: Continued version lineage after adoption:
1.0.0-draft-ietf-netmod-example-module-00 1.0.0-draft-ietf-netmod-example-module-00
| |
1.0.0-draft-ietf-netmod-example-module-01 1.0.0-draft-ietf-netmod-example-module-01
| |
1.0.0-draft-ietf-netmod-example-module-02 1.0.0-draft-ietf-netmod-example-module-02
At this point, the draft is ratified and becomes RFC12345 and the At this point, the draft is ratified and becomes RFC12345 and the
YANG module version number becomes 1.0.0. YANG module version becomes 1.0.0.
A time later, the module needs to be revised to add additional A time later, the module needs to be revised to add additional
capabilities. Development will be done in a backwards-compatible capabilities. Development will be done in a backwards-compatible
way. Two new individual drafts are proposed to go about adding the way. Two new individual drafts are proposed to go about adding the
capabilities in different ways: draft-jdoe-netmod-exmod-enhancements capabilities in different ways: draft-jdoe-netmod-exmod-enhancements
and draft-jadoe-netmod-exmod-changes. These are initially developed and draft-jadoe-netmod-exmod-changes. These are initially developed
in parallel with the following versions. in parallel with the following versions.
Parallel development for next module revision: Parallel development for next module revision:
 End of changes. 52 change blocks. 
144 lines changed or deleted 153 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/