<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC7895 SYSTEM "reference.RFC.7895.xml">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" ipr="trust200902" docName="draft-verdt-netmod-yang-semver-01">
<front>
<title abbrev="YANG Semver">YANG Semantic Versioning</title>

<author initials="B." surname="Claise" fullname="Benoit Claise">
  <organization abbrev="Cisco Systems, Inc.">
    Cisco Systems, Inc.
 </organization>
  <address>
    <postal>
<street>De Kleetlaan 6a b1</street>
<city>1831 Diegem</city>
<country>Belgium</country>
    </postal>
    <phone>+32 2 704 5622</phone>
    <email>bclaise@cisco.com</email>
  </address>
</author>

  <author initials="J." surname="Clarke" fullname="Joe Clarke" role="editor">
    <organization>Cisco Systems, Inc.</organization>
    <address>
      <postal>
        <street>7200-12 Kit Creek Rd</street>
        <city>Research Triangle Park</city>
        <region>North Carolina</region>
        <country>United States of America</country>
      </postal>
      <phone>+1-919-392-2867</phone>
      <email>jclarke@cisco.com</email>
    </address>
  </author>

  <author initials="R." surname="Rahman" fullname="Reshad Rahman">
  <organization abbrev="Cisco Systems, Inc.">
    Cisco Systems, Inc.
  </organization>
    <address>
      <email>rrahman@cisco.com</email>
    </address>
  </author>

  <author initials="R." role="editor" surname="Wilton" fullname="Robert Wilton">
  <organization abbrev="Cisco Systems, Inc.">
    Cisco Systems, Inc.
  </organization>
    <address>
      <email>rwilton@cisco.com</email>
    </address>
  </author>

  <author initials="B." surname="Lengyel" fullname="Balazs Lengyel">
    <organization abbrev="Ericsson"> Ericsson </organization>
    <address>
      <postal>
        <street>Magyar Tudosok Korutja</street>
        <city>1117 Budapest</city>
        <country>Hungary</country>
      </postal>
      <phone>+36-70-330-7909</phone>
      <email>balazs.lengyel@ericsson.com</email>
    </address>
  </author>

 <author initials="J." surname="Sterne" fullname="Jason Sterne">
 <organization abbrev="Nokia">
    Nokia
  </organization>
    <address>
      <email>jason.sterne@nokia.com</email>
    </address>
  </author>

<author initials="K." surname="D'Souza" fullname="Kevin D'Souza">
  <organization>AT&amp;T</organization>
  <address>
    <postal>
<street>200 S. Laurel Ave</street>
<city>Middletown</city>
<region>NJ</region>
<country>United States of America</country>
    </postal>
    <phone></phone>
    <email>kd6913@att.com</email>
  </address>
</author>



<date/>
<abstract>
  <t>This document specifies a scheme for applying a modified set of
    semantic versioning rules to revisions of YANG modules.  Additionally, this
    document defines a revision label for this modified semver scheme based on the
    specification in draft-verdt-netmod-yang-module-versioning.</t>
</abstract>
</front>
<middle>
<section anchor="intro" title="Introduction">
  <t><xref target="I-D.verdt-netmod-yang-module-versioning"/> puts forth a number of concepts relating
   to modified rules for updating modules, a means to signal when a new revision of a module has
   non-backwards-compatible (NBC) changes compared to its previous revision, and a versioning scheme that
   uses the revision history as a lineage for determining from where a specific revision of a YANG
   module is derived.  Additionally, section 3.3 of <xref target="I-D.verdt-netmod-yang-module-versioning"/>
   defines a revision label which can be used as an overlay or alias to provide additional context or an additional
   way to refer to a specific revision.</t>

  <t>This document defines a labeling scheme that uses modified <xref target="semver"/> rules for YANG artifacts
    (i.e., YANG modules and YANG packages <xref target="I-D.rwilton-netmod-yang-packages"/>) as well as the
    revision label definition for using this scheme.  The goal of this is to add a human readble version label that
    provides compatibility information for the YANG artifact without one needing to compare or parse its body.
    The label and rules defined herein represent the RECOMMENDED revision label scheme for IETF YANG artifacts.</t>
  </section>

  <section anchor="terminology" title="Terminology and Conventions">
  <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
  RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref
  target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
  <t>Additionally, this document uses the following terminology:
    <list style="symbols">
      <t>YANG artifact: YANG modules, YANG packages
        <xref target="I-D.rwilton-netmod-yang-packages"/>, and YANG schema elements are examples of YANG artifacts
        for the purposes of this document.</t>
    </list>
  </t>
</section>

<section anchor="semantic_versioning" title="YANG Semantic Versioning">
  <t>This section defines YANG Semantic Versioning, explains how it is
  used with YANG artifacts, and the rules associated with changing a
  artifact's semantic version number when its contents are
  updated.</t>

  <section anchor="version_pattern" title="YANG Semantic Versioning Pattern">
    <t>YANG artifacts that employ semantic versioning MUST use a version string (e.g., in revision-label
      or as a package version) that corresponds to the following pattern: X.Y.Zv.  Where:
      <list style="symbols">
        <t>X, Y and Z are mandatory non-negative integers that are each less than 32768 and MUST NOT contain leading zeroes</t>
        <t>The '.' is a literal period (ASCII character 0x2e)</t>
        <t>v is an optional single character modifier that MUST be either 'm' or 'M' if it is specified</t>
      </list>
    </t>

    <t>Additionally, <xref target="semver"/> defines two specific types of metadata that may be appended to a semantic version string.
      Pre-release metadata MAY be appended to a semver string after a trailing '-' character.  Build metadata
      MAY be appended after a trailing '+' character.  If both pre-release and build metadata are present, then build metadata MUST
      follow pre-release metadata.  These optional elements MUST be ignored by YANG semver parsers, but are allowed in order
      to support all of the <xref target="semver"/> rules.  Thus, a version lineage that follows strict <xref target="semver"/> rules
      is allowed for a YANG artifact.</t>

    <t>Other version schemes MUST NOT use version strings that match this same pattern.  For example, they may choose to use
     leading characters to distinguish themselves from YANG semver.</t>

    <t>A YANG module is defined in this document which contains single typedef that formally specifies this version pattern.</t>
  </section>

  <section anchor="versioning_scheme" title="Semantic Versioning Scheme for YANG Artifacts">
    <t>This document defines the YANG semantic versioning scheme that is used for YANG
    artifacts that employ the semver label. The versioning scheme has the following properties:
    <list style="bullets">
      <t>The YANG semantic versioning scheme is extended from version
      2.0.0 of the semantic versioning scheme defined at semver.org <xref
      target="semver"/> to cover the additional requirements for the
      management of YANG artifact lifecyles that cannot be addressed using
      the semver.org 2.0.0 versioning scheme alone.</t>

      <t>Unlike the <xref target="semver"/> versioning scheme, the YANG
      semantic versioning scheme supports limited updates to older
      versions of YANG artifacts, to allow for bug fixes and enhancements
      to artifact versions that are not the latest.  However, it does not
      provide for the unlimited branching and updating of older revisions
      which are documented by the general rules in
      <xref target="I-D.verdt-netmod-yang-module-versioning"/>.</t>

      <t>YANG artifacts that follow the <xref target="semver"/> versioning
      scheme are fully compatible with implementations that understand
      the YANG semantic versioning scheme defined in this document.</t>

      <t>If updates are always restricted to the latest revision
      of the artifact only, then the version numbers used by the YANG
      semantic versioning scheme are exactly the same as those defined
      by the <xref target="semver"/> versioning scheme.</t>
    </list>
    </t>

    <t>Every YANG module versioned using the YANG semantic versioning
    scheme specifies the module's semantic version number as the argument
    to the 'rev:revision-label' statement.</t>

    <t>Because the rules put forth in <xref target="I-D.verdt-netmod-yang-module-versioning"/> are designed to work
     well with existing versions of YANG and allow for artifact authors to migrate to this scheme, it is not expected
     that all revisions of a given YANG artifact will have a semantic version label.  For example, the first revision of
     a module may have been produced before this scheme was available.</t>

    <t>YANG packages that make use of this semantic versioning scheme will have their semantic version
      as the value of the "revision_label" property.</t>

    <t>
     As stated above, the YANG semver version number is expressed as a string of the
     form: 'X.Y.Zv'; where X, Y, and Z each represent non-negative
     integers smaller than 32768 without leading zeroes, and v represents an optional single
     character suffix: 'm' or 'M'.

     <list style="symbols">
       <t>'X' is the MAJOR version.  Changes in the major version number
       indicate changes that are non-backwards-compatible to versions
       with a lower major version number.</t>

       <t>'Y' is the MINOR version.  Changes in the minor version number
       indicate changes that are backwards-compatible to versions with
       the same major version number, but a lower minor version number
       and no patch 'm' or 'M' modifier.</t>

       <t>'Zv' is the PATCH version and modifier.  Changes in the patch
       version number can indicate editorial, backwards-compatible, or
       non-backwards-compatible changes relative to versions with the
       same major and minor version numbers, but lower patch version
       number, depending on what form modifier 'v' takes:
       <list style="symbols">
	 <t>If the modifier letter is absent, the change represents an
	 editorial change.  An editorial change is defined to be a change in the YANG artifact's
   content that does not affect the semantic meaning or functionality provided by
   the artifact in any way.  An example is correcting a spelling mistake in the description
   of a leaf within a YANG module.  Note: restructuring how a module uses, or does not use, submodules
   is treated as an editorial level change on the condition that there is no change in the
   module's semantic behavior due to the restructuring.</t>
   <t>If, however, the modifier letter is present, the meaning is described below:</t>
	 <t>'m' - the change represents a backwards-compatible change</t>
	 <t>'M' - the change represents a non-backwards-compatible change</t>
       </list>
       </t>
     </list>
    </t>
    <t>The YANG articact name and YANG semantic version number uniquely
    identifies a revision of said artifact.
    There MUST NOT be multiple instances of a YANG artifact definition
    with the same name and YANG semantic version number but
    different content (and in the case of modules, different revision dates).</t>
    <t>There MUST NOT be multiple versions of a YANG artifact that have
    the same MAJOR, MINOR and PATCH version numbers, but different patch
    modifier letters.  E.g., artifact version "1.2.3M" MUST NOT be defined
    if artifact version "1.2.3" has already been defined.</t>
    <section anchor="example_versions" title="Examples for YANG semantic version numbers">
      <t>The following diagram and explanation illustrates how YANG semantic version numbers work.</t>
      <figure>
        <preamble>Example YANG semantic version numbers for an example artifact:</preamble>
      <artwork>
        0.1.0
          |
        0.2.0
          |
        1.0.0
          |  \
          |   1.1.0 -> 1.1.1m -> 1.1.2M
          |    |
          |   1.2.0 -> 1.2.1M -> 1.2.2M
          |    |
          |   1.3.0 -> 1.3.1
          |
        2.0.0
          |
        3.0.0
             \
              3.1.0
      </artwork>
    </figure>
    <t>Assume the tree diagram above illustrates how an example YANG module's version
    history might evolve.  For example, the tree might represent the
    following changes, listed in chronological order from oldest
    revision to newest:
    <list>
      <t>0.1.0  - first beta module version</t>
      <t>0.2.0  - second beta module version (with NBC changes)</t>
      <t>1.0.0  - first release (may have NBC changes from 0.2.0)</t>
      <t>1.1.0  - added new functionality, leaf "foo" (BC)</t>
      <t>1.2.0  - added new functionality, leaf "baz" (BC)</t>
      <t>1.3.0  - improve existing functionality, added leaf "foo-64" (BC)</t>
      <t>1.3.1  - improve description wording for "foo-64" (Editorial)</t>
      <t>1.1.1m - backport "foo-64" leaf to 1.1.x to avoid implementing "baz" from 1.2.0 (BC)</t>
      <t>2.0.0  - change existing model for performance reasons, e.g. re-key list (NBC)</t>
      <t>1.1.2M - NBC point bug fix, not required in 2.0.0 due to model changes (NBC)</t>
      <t>3.0.0  - NBC bugfix, rename "baz" to "bar"; also add new BC leaf "wibble"; (NBC)</t>
      <t>1.2.1M - backport NBC fix, changing "baz" to "bar"</t>
      <t>1.2.2M - backport "wibble".  This is a BC change but "M" modifier is sticky.</t>
      <t>3.1.0  - introduce new leaf "wobble" (BC)</t>
    </list>
    </t>
    <t>The partial ordering relationships based on the semantic versioning numbers can be defined as follows:
    <list>
      <t>1.0.0 &lt; 1.1.0 &lt; 1.2.0 &lt; 1.3.0 &lt; 2.0.0 &lt; 3.0.0 &lt; 3.1.0</t>
      <t>1.0.0 &lt; 1.1.0 &lt; 1.1.1m &lt; 1.1.2M</t>
      <t>1.0.0 &lt; 1.1.0 &lt; 1.2.0 &lt; 1.2.1M &lt; 1.2.2M</t>
    </list>
    </t>
    <t>There is no ordering relationship between 1.1.1M and either 1.2.0 or
    1.2.1M, except that they share the common ancestor of 1.1.0.</t>
    <t>Looking at the version number alone, the module definition in
    2.0.0 does not necessarily contain the contents of 1.3.0.  However,
    the module revision history in 2.0.0 may well indicate that it
    was edited from module version 1.3.0.</t>
    </section>
  </section>

  <section anchor="semver_update_rules" title="YANG Semantic Version Update Rules">
    <t>When a new revision of an artifact is produced, then the following
    rules define how the YANG semantic version number for the new artifact
    revision is calculated, based on the changes between the two artifact
    revisions, and the YANG semantic version number of the base artifact
    revision from which the changes are derived:</t>

    <t>
    <list style="numbers">
      <t>If an artifact is being updated in a non-backwards-compatible
      way, then the artifact version "X.Y.Z[m|M]" MUST be updated to
      "X+1.0.0" unless that artifact version has already been defined with
      different content, in which case the artifact version "X.Y.Z+1M" MUST
      be used instead.</t>

      <t>If an artifact is being updated in a backwards-compatible way,
      then the next version number depends on the format of the current
      version number:
      <list style="format %i">
	<t>"X.Y.Z" - the artifact version MUST be updated to "X.Y+1.0",
	unless that artifact version has already been defined with
	different content, when the artifact version MUST be updated to
	"X.Y.Z+1m" instead.</t>
	<t>"X.Y.Zm" - the artifact version MUST be updated to
	"X.Y.Z+1m".</t>
	<t>"X.Y.ZM" - the artifact version MUST be updated to
	"X.Y.Z+1M".</t>
      </list>
      </t>

      <t>If an artifact is being updated in an editorial way, then the next
      version number depends on the format of the current version
      number:
      <list style="format %i">
	<t>"X.Y.Z" - the artifact version MUST be updated to "X.Y.Z+1"</t>
	<t>"X.Y.Zm" - the artifact version MUST be updated to
	"X.Y.Z+1m".</t>
	<t>"X.Y.ZM" - the artifact version MUST be updated to
	"X.Y.Z+1M".</t>
      </list>
      </t>

      <t>YANG artifact semantic version numbers beginning with 0, i.e
      "0.X.Y" are regarded as beta definitions and need not follow the
      rules above.  Either the MINOR or PATCH version numbers may be
      updated, regardless of whether the changes are
      non-backwards-compatible, backwards-compatible, or editorial.</t>
    </list>
    </t>
  </section>
  <section anchor="examples" title="Examples of the YANG Semver Label">
    <section anchor="example_module" title="Example Module Using YANG Semver">
      <t>Below is a sample YANG module that uses the YANG semver revision label
        based on the rules defined in this document.
      </t>

    <figure>
      <artwork>
    module yang-module-name {

      namespace "name-space";
      prefix "prefix-name";

      import ietf-yang-revisions { prefix "rev"; }

      description
        "to be completed";

      revision 2018-02-28 {
        description "Added leaf 'wobble'";
        rev:revision-label "3.1.0";
      }

      revision 2017-12-31 {
        description "Rename 'baz' to 'bar', added leaf 'wibble'";
        rev:revision-label "3.0.0";
        rev:nbc-changes;
      }

      revision 2017-10-30 {
        description "Change the module structure";
        rev:revision-label "2.0.0";
        rev:nbc-changes;
      }

      revision 2017-08-30 {
        description "Clarified description of 'foo-64' leaf";
        rev:revision-label "1.3.1";
      }

      revision 2017-07-30 {
        description "Added leaf foo-64";
        rev:revision-label "1.3.0";
      }

      revision 2017-04-20 {
        description "Add new functionality, leaf 'baz'";
        rev:revision-label "1.2.0";
      }

      revision 2017-04-03 {
        description "Add new functionality, leaf 'foo'";
        rev:revision-label "1.1.0";
      }

      revision 2017-04-03 {
        description "First release version.";
        rev:revision-label "1.0.0";
      }

      // Note: semver rules do not apply to 0.X.Y labels.

      revision 2017-01-30 {
        description "NBC changes to initial revision";
        semver:module-version "0.2.0";
      }

      revision 2017-01-26 {
        description "Initial module version";
        semver:module-version "0.1.0";
      }

      //YANG module definition starts here
      </artwork>
    </figure>
  </section>
  <section anchor="example_package" title="Example of Package Using YANG Semver">
    <t>Below is an example YANG package that uses the semver revision label based on
      the rules defined in this document.
    </t>

    <figure>
      <artwork>
   {
     "ietf-yang-instance-data:instance-data-set": {
       "name": "example-yang-pkg",
       "target-ptr": "TBD",
       "timestamp": "2018-09-06T17:00:00Z",
       "description": "Example IETF package definition",
       "content-data": {
         "ietf-yang-package:yang-package": {
           "name": "example-yang-pkg",
           "version": "1.3.1",
           ...
  }
</artwork>
</figure>
</section>
</section>
</section>

<section title="Import Module by Semantic Version" anchor="import_semver">
  <t><xref target="I-D.verdt-netmod-yang-module-versioning"/> allows for imports to be
    done based on a module or a derived revision of a module.  The rev:revision-or-derived
    statement can specify either a revision date or a revision label.  When importing by
    semver, the YANG semver revision label value MAY be used as an argument to
    rev:revision-or-derived.  In so, any module which has that semver label as its
    latest revision label or has that label in its revision history can be used
    to satisfy the import requirement.  For example:</t>

    <figure>
      <artwork>
        import example-module {
          rev:revision-or-derived "3.0.0";
        }
      </artwork>
    </figure>

    <t>Note: the import lookup does not stop
    when a non-backward-compatible change is encountered.  That is, if module B imports a module A at or derived from version 2.0.0,
    resolving that import will pass through a revision of module A with version 2.1.0M in order to determine if the present instance of
    module A derives from 2.0.0.</t>
</section>

<section anchor="yang_module" title="YANG Module">
  <t>This YANG module contains the typedef for the YANG semantic version.</t>

  <figure>
    <artwork>
      <![CDATA[
<CODE BEGINS> file "ietf-yang-semver@2019-09-06.yang"
  module ietf-yang-semver {
    yang-version 1.1;
    namespace "urn:ietf:params:xml:ns:yang:ietf-yang-semver";
    prefix yangver;

    organization
      "IETF NETMOD (Network Modeling) Working Group";
    contact
      "WG Web:   <http://tools.ietf.org/wg/netmod/>
       WG List:  <mailto:netmod@ietf.org>

       Author:   Joe Clarke
                 <mailto:jclarke@cisco.com>";
    description
      "This module provides type and grouping definitions for YANG
       packages.

       Copyright (c) 2019 IETF Trust and the persons identified as
       authors of the code.  All rights reserved.

       Redistribution and use in source and binary forms, with or
       without modification, is permitted pursuant to, and subject
       to the license terms contained in, the Simplified BSD License
       set forth in Section 4.c of the IETF Trust's Legal Provisions
       Relating to IETF Documents
       (http://trustee.ietf.org/license-info).

       This version of this YANG module is part of RFC XXXX; see
       the RFC itself for full legal notices.";

    // RFC Ed.: update the date below with the date of RFC publication
    // and remove this note.
    // RFC Ed.: replace XXXX with actual RFC number and remove this
    // note.

    revision 2019-09-06 {
      description
        "Initial revision";
      reference
        "RFC XXXX: YANG Semantic Versioning.";
    }

    /*
     * Typedefs
     */

    typedef version {
      type string {
        pattern '\d+[.]\d+[.]\d+[mM]?(-[\w\d.]+)?([+][\w\d\.]+)?';
      }
      description
        "Represents a YANG semantic version number.  Note:
         additional rules apply to the dot-separated numeric identifiers
         which are spelled out in the reference for this typedef.";
      reference
        "RFC XXXX: YANG Semantic Versioning.";
    }
  }
    <CODE ENDS>
    ]]>
            </artwork>
          </figure>
    </section>

<!--

<section title="Updates to ietf-yang-library" anchor="ietf_yang_library_updates">
    <t>YANG library <xref target="RFC7895"/> <xref target="RFC8525"/> is
    modified to support semantic versioning in three ways.</t>

    <section title="Advertising module version number">
    <t>The ietf-semver YANG module augments the 'module' list in
    ietf-yang-library with a 'version' leaf to optionally declare the
    YANG semantic version of each module.</t>
    </section>
    <section title="Resolving ambiguous module imports">
      <t>A YANG datastore schema, defined in
      <xref target="RFC8525"/>, can specify multiple
      revisions of a YANG module in the schema using the 'import-only'
      list, with the requirement from <xref target="RFC7950"/> that only
      a single revision of a YANG module may be implemented.</t>
      <t>If a YANG module import statement does not specify a specific
      version or revision within the datastore schema then it could be
      ambiguous as to which module revision the import statement should
      resolve to.  Hence, a datastore schema constructed by a client
      using the information contained in YANG library may not exactly
      match the datastore schema actually used by the server.</t>
      <t>The following rules remove the ambiguity:</t>
      <t>If a module import statement could resolve to more than one
      module revision defined in the datastore schema, and one of those
      revisions is implemented (i.e., not an 'import-only' module), then
      the import statement MUST resolve to the revision of the module
      that is defined as being implemented by the datastore schema.</t>
      <t>If a module import statement could resolve to more than one
      module revision defined in the datastore schema, and none of those
      revisions are implemented, but one of more modules revisions
      specify a YANG semantic version, then the import MUST resolve to
      the module with the greatest version number, according to the
      version comparison rules in <xref target="import_semver"/>.</t>
      <t>If a module import statement could resolve to more than one
      module revision defined in the datastore schema, none of those
      revisions are implemented, and none of the modules revisions have
      a YANG semantic version number, then the import MUST resolve to
      the module that has the most recent revision date.</t>
    </section>

<section title="Semantic versioning of YANG instance data">
<t>Instance data sets <xref
target="I-D.ietf-netmod-yang-instance-file-format"/> do not have an
associated YANG semantic version, as compatibility for instance data is
undefined.</t>

<t>However, instance data may reference an associated YANG schema, and
that schema could make use of semantic version numbers, both for the
individual YANG modules that comprise the schema, and potentially for
the entire schema itself (e.g., <xref
target="I-D.rwilton-netmod-yang-packages"/>).</t>

<t>In this way, the versioning of a schema associated with an instance
data set, may allow a client to determine whether the instance data
could also be used in conjunction with other versions of the YANG
schema, or other versions of the modules that define the schema.</t>

<t>One common scenario, where instance data may have to cope with
changes to the schema is for the &lt;startup&gt; datastore when a server
is restarted with a different YANG schema (e.g. due to a software
upgrade or downgrade).  How a server restores the configuration from
&lt;startup&gt; during such upgrades or downgrades is outside the scope
of this specification.</t>
</section>

-->

<section anchor="contributor" title="Contributors">
  <t>This document grew out of the YANG module versioning design team
  that started after IETF 101. The design team consists of the following
  members whom have worked on the YANG versioning project:</t>
      <t>
        <list style="symbols">
          <t>Balazs Lengyel</t>
          <t>Benoit Claise</t>
          <t>Ebben Aries</t>
          <t>Jason Sterne</t>
          <t>Joe Clarke</t>
          <t>Juergen Schoenwaelder</t>
          <t>Mahesh Jethanandani</t>
          <t>Michael (Wangzitao)</t>
          <t>Qin Wu</t>
          <t>Reshad Rahman</t>
          <t>Rob Wilton</t>
        </list>
      </t>

   <t>The initial revision of this document was refactored and built
   upon <xref target="I-D.clacla-netmod-yang-model-update"/>.</t>
   <t>Discussons on the use of Semver for YANG versioning has been held
   with authors of the OpenConfig YANG models based on their own <xref target="openconfigsemver"/>.  We would like thank both
   Anees Shaikh and Rob Shakir for their input into this problem
   space.</t>
</section>

<section anchor="security" title="Security Considerations">
  <t>The document does not define any new protocol or data model.  There
  are no security impacts.</t>
</section>
<section anchor="iana" title="IANA Considerations">
  <t>None.</t>
</section>
</middle>
<?rfc needLines="20"?>
<back>
<references title="Normative References">
   <?rfc include='reference.RFC.2119'?>
   <?rfc include='reference.RFC.8174'?>
   <?rfc include='reference.RFC.7895'?>
   <?rfc include='reference.RFC.8525'?>
   <?ref include='reference.I-D.verdt-netmod-yang-module-versioning'?>
</references>
<references title="Informative References">
   <?rfc include='reference.I-D.clacla-netmod-yang-model-update'?>
   <?rfc include='reference.I-D.ietf-netmod-yang-instance-file-format'?>
   <?rfc include='reference.I-D.rwilton-netmod-yang-packages'?>
   <reference anchor="openconfigsemver" target="http://www.openconfig.net/docs/semver/">
     <front>
      <title>Semantic Versioning for Openconfig Models</title>
      <author/>
      <date/>
    </front>
   </reference>
      <reference anchor="semver" target="https://www.semver.org">
      <front>
       <title>Semantic Versioning 2.0.0</title>
       <author/>
       <date/>
    </front>
  </reference>
</references>
<?rfc needLines="100"?>
</back>
</rfc>
<!-- Local Variables: -->
<!-- fill-column:72 -->
<!-- End: -->
