Re: [Netmod-ver-dt] Comments on the guidelines chapter

"Reshad Rahman (rrahman)" <rrahman@cisco.com> Wed, 12 June 2019 19:05 UTC

Return-Path: <rrahman@cisco.com>
X-Original-To: netmod-ver-dt@ietfa.amsl.com
Delivered-To: netmod-ver-dt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CDE33120089 for <netmod-ver-dt@ietfa.amsl.com>; Wed, 12 Jun 2019 12:05:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -13.099
X-Spam-Level:
X-Spam-Status: No, score=-13.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_COMMENT_SAVED_URL=1.391, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_HTML_ATTACH=0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=bQzCuVDn; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=c9h+antY
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9hU17suEsRAU for <netmod-ver-dt@ietfa.amsl.com>; Wed, 12 Jun 2019 12:05:10 -0700 (PDT)
Received: from rcdn-iport-6.cisco.com (rcdn-iport-6.cisco.com [173.37.86.77]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4F69C12021B for <netmod-ver-dt@ietf.org>; Wed, 12 Jun 2019 12:05:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=150533; q=dns/txt; s=iport; t=1560366302; x=1561575902; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=B0etooBImxVA4Q/qj9ld02tAOfWqX0KI6Vka9dwq5v4=; b=bQzCuVDnISB+JKzwRl+vqxXT/jdCPqL9ay2ceF21XBAW+Qukcu+unjyk DmMbPHMvoJJfcsaHYD1h+kqnb5OdOSsj/13L6gFWzSYE5xlstP8tmV0mk mINKHysdF3xVcyAQ77BfSPdOxuQQMsUJc6WB1CX8uW91+AhXobSKqfc9N s=;
X-Files: Diff_ draft-verdt-netmod-yang-module-versioning.txt - draft-verdt-netmod-yang-module-versioning.txt.html : 55401
IronPort-PHdr: 9a23:vZtQxRfpGDiw9iyDA93TLlUClGMj4e+mNxMJ6pchl7NFe7ii+JKnJkHE+PFxlwGRD57D5adCjOzb++D7VGoM7IzJkUhKcYcEFnpnwd4TgxRmBceEDUPhK/u/dTYzHMFLUndu/mqwNg5eH8OtL1A=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0BIAACuSwFd/5JdJa1bChwBAQEEAQEHBAEBgVEHAQELAYEOLyQsA2pVIAQLKAqEC4FfgWgDhFKKDoIyJYgPjySBLhSBEANUAgcBAQEMAQElCAIBAYMJgTcCF4ItIzQJDgEDAQEEAQECAQRtHAyFSgEBAQECARIIAQgEBhMBATgECwIBCBEDAQEBIQEGAwICAjAUCQgBAQQBEg4NBAODAAGBagMODwEOnm0CgTiIX3F+M4J5AQEFgkeCORiCCAcJgTQBi1wXgUA/gREnDBOCTD6CVgsBAQIBF4EMEBMCJBINC4JSMoImi0Mhgk2EcoZxgToZgw2JaGoJAoIQgyGDJohKhDkbgiUvOoYYhgGGOIFJjRiBKoVtjzICBAIEBQIOAQEFgU84gVhwFTsqAYJBCYFiJBESg02FFIU/cgGBKI02AYEgAQE
X-IronPort-AV: E=Sophos;i="5.63,366,1557187200"; d="html'217?scan'217,208,217";a="573950093"
Received: from rcdn-core-10.cisco.com ([173.37.93.146]) by rcdn-iport-6.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 12 Jun 2019 19:04:59 +0000
Received: from XCH-ALN-002.cisco.com (xch-aln-002.cisco.com [173.36.7.12]) by rcdn-core-10.cisco.com (8.15.2/8.15.2) with ESMTPS id x5CJ4xGc002996 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL) for <netmod-ver-dt@ietf.org>; Wed, 12 Jun 2019 19:05:00 GMT
Received: from xhs-aln-002.cisco.com (173.37.135.119) by XCH-ALN-002.cisco.com (173.36.7.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 12 Jun 2019 14:04:59 -0500
Received: from xhs-aln-003.cisco.com (173.37.135.120) by xhs-aln-002.cisco.com (173.37.135.119) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 12 Jun 2019 14:04:58 -0500
Received: from NAM05-DM3-obe.outbound.protection.outlook.com (173.37.151.57) by xhs-aln-003.cisco.com (173.37.135.120) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 12 Jun 2019 14:04:58 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SE2HrpUS4qA2mxWNwbxNH/mclRhZ2uoNyy8O71jCxsw=; b=c9h+antYQUSC9AD5ZRJ7lcCWp2zOHoa0+2huAhWC/joLNV9bRwagLUgH8Q3Ciq+KwIO/CpNLLI+IrsmZfH3m4Uzym/1Ccv77spMUPLVU+9CULRTs426sKhiZhJxcke39hUJ5mYBpMYsyrJOu1HDqJ4XP7M5uRGbyLPtHV+JD/g8=
Received: from DM5PR1101MB2105.namprd11.prod.outlook.com (10.174.104.151) by DM5PR1101MB2121.namprd11.prod.outlook.com (10.174.104.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Wed, 12 Jun 2019 19:04:56 +0000
Received: from DM5PR1101MB2105.namprd11.prod.outlook.com ([fe80::b57b:a39a:5e67:16c6]) by DM5PR1101MB2105.namprd11.prod.outlook.com ([fe80::b57b:a39a:5e67:16c6%2]) with mapi id 15.20.1987.010; Wed, 12 Jun 2019 19:04:56 +0000
From: "Reshad Rahman (rrahman)" <rrahman@cisco.com>
To: "Rob Wilton (rwilton)" <rwilton@cisco.com>, "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
Thread-Topic: Comments on the guidelines chapter
Thread-Index: AdUbv4OSRZIqBFosSQueZJ2vAPqisf///y+A//6awpCADEdqgA==
Date: Wed, 12 Jun 2019 19:04:55 +0000
Message-ID: <3BFA7CF6-6EED-4356-A8FF-16DE5A59A590@cisco.com>
References: <BYAPR11MB26316C8F19B99FA99F86D012B5160@BYAPR11MB2631.namprd11.prod.outlook.com> <0E6B8ACB-8B74-4C2B-ADBB-F3CF8EBA7DF0@cisco.com> <BYAPR11MB263108664642F4370C25F92EB5170@BYAPR11MB2631.namprd11.prod.outlook.com>
In-Reply-To: <BYAPR11MB263108664642F4370C25F92EB5170@BYAPR11MB2631.namprd11.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.10.6.190114
authentication-results: spf=none (sender IP is ) smtp.mailfrom=rrahman@cisco.com;
x-originating-ip: [173.38.117.82]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a0a3d06e-aec3-4e2d-853b-08d6ef68dbc8
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(49563074)(7193020); SRVR:DM5PR1101MB2121;
x-ms-traffictypediagnostic: DM5PR1101MB2121:
x-ms-exchange-purlcount: 9
x-microsoft-antispam-prvs: <DM5PR1101MB212108936695CE6C5BBDBB65ABEC0@DM5PR1101MB2121.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0066D63CE6
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(366004)(136003)(376002)(346002)(51444003)(189003)(199004)(91956017)(66476007)(66556008)(76116006)(64756008)(66446008)(3846002)(53936002)(6436002)(6486002)(73956011)(30864003)(6512007)(66574012)(71200400001)(66616009)(66066001)(66946007)(71190400001)(8936002)(53946003)(5660300002)(186003)(6116002)(76176011)(8676002)(7736002)(14444005)(25786009)(81166006)(7520500002)(81156014)(229853002)(53546011)(6506007)(26005)(86362001)(5024004)(99286004)(6246003)(316002)(36756003)(236005)(256004)(99936001)(14454004)(54896002)(6306002)(486006)(2616005)(11346002)(476003)(446003)(2906002)(478600001)(68736007)(58126008)(102836004)(110136005)(33656002)(2501003)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR1101MB2121; H:DM5PR1101MB2105.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: XgqWqiJsR2Ld1zsePD+f8QrMCG7P0JartGqJRoWASW1dM/U/VL4nspi+9GDeIact/iNHj5nHGx1tcTooqSexOotLM5MOPIww0qxHAJdGAUUVYTIOwOmL8bvOLH/RCKyDE45kSLM2MhHU3YdJzAn6TynoqHEvQOPct7WsYxGcKOYi5wM6Wggy00v8+NGl6xivRSh3TXS4nhmR8J7zgoL7okawOt833GHgJjH5DODgnpDrZGOFxStX3X0rAF8PU6GNS/XDxF4CEluRltAqbo2sQysYOXzwfI+pDEYN9hO97eRVxqjHDPk8E+j4NKhJknOSBci6/V0Nysclcdt46C/0MyxsU9mc2/mRqrELUwjlp3YGSsk428Fsov80d0i1ViiQT/mT+jXRVFJ/chS6TmeM6Z24EbGJI5E98E06lmK9VhQ=
Content-Type: multipart/mixed; boundary="_004_3BFA7CF66EED4356A8FF16DE5A59A590ciscocom_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: a0a3d06e-aec3-4e2d-853b-08d6ef68dbc8
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2019 19:04:56.0971 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: rrahman@cisco.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1101MB2121
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.36.7.12, xch-aln-002.cisco.com
X-Outbound-Node: rcdn-core-10.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod-ver-dt/waSlOqSFYdTcfCSUIYaYaEEiQK8>
Subject: Re: [Netmod-ver-dt] Comments on the guidelines chapter
X-BeenThere: netmod-ver-dt@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NetMod WG YANG Model Versioning Design Team <netmod-ver-dt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod-ver-dt/>
List-Post: <mailto:netmod-ver-dt@ietf.org>
List-Help: <mailto:netmod-ver-dt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 12 Jun 2019 19:05:16 -0000

Hi Rob, all,
I’ve made the changes to the guidelines as per the notes below, diff attached.


  1.  Need to add text similar to this (change semver to revision):  Put this into section 2.  Also need to state that labels in submodule revisions, if present, MUST be the same at the including module.
My memory is failing me, can someone remind me why we need revision-labels in submodule revisions? I understand that the extension applies to the revision statement which are used by sub-modules, but shouldn’t we just ignore revision-labels in submodules? Or is the point to be able to “cross-reference” module and submodule revisions?
Also the note says section 2, not sure why, I added it in the guidelines (7.1).

  1.  There is text in 7.1 which says [Moved from section 4.], I think that was added by Rob in last commit. I didn’t remove it in case it was put there for a specific reason.

Comments welcome, feel free to make any changes to the guidelines, I won’t be able to spend much time on this for the rest of the week.

Regards,
Reshad.


From: "Rob Wilton (rwilton)" <rwilton@cisco.com>
Date: Thursday, June 6, 2019 at 11:04 AM
To: "Reshad Rahman (rrahman)" <rrahman@cisco.com>, "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
Subject: RE: Comments on the guidelines chapter

One other change (for Rob):
- In 3.3, need to state that the revision label MUST be unique for a given YANG module.  This also needs to be added to the YANG module definition.


From: Reshad Rahman (rrahman)
Sent: 05 June 2019 21:53
To: Rob Wilton (rwilton) <rwilton@cisco.com>; netmod-ver-dt@ietf.org
Subject: Re: Comments on the guidelines chapter

Hi Rob,

Yes we can discuss in the meeting. Inline.

From: "Rob Wilton (rwilton)" <rwilton@cisco.com<mailto:rwilton@cisco.com>>
Date: Wednesday, June 5, 2019 at 12:58 PM
To: "netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>" <netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>>, "Reshad Rahman (rrahman)" <rrahman@cisco.com<mailto:rrahman@cisco.com>>
Subject: Comments on the guidelines chapter

Hi Reshad,

Sorry that these have been so late, but here are some comments on the guidelines chapter.  Potentially we can discuss tomorrow, if needed.

>6.1.  Guidelines for YANG module authors

I think that this section should state that is updates RFC8407 sections 4.7 and 4.8, and I think that we should check the text against this existng BCP.
<RR> Ack. I thought I had done that, but missed it.

I think that the text also needs to cover:

(i)                  Adding a "rev:nbc-changes;" if and only if there are NBC changes relative to the previous revision.
[RW]
Reshad – will add.

(ii) Fixing RFC8407 section 4.7's "The revision date substatement within the import statement SHOULD be present if any groupings are used from the external module.".
[RW]
Move following text (or similar) to guidelines:

      Using the "revision-date" statement causes overly strict import
      dependencies between modules and SHOULD NOT be used.




(ii)                Fixing RFC8407 section 4.7's "The revision date substatement within the include statement SHOULD be present if any groupings are used from the external submodule." - I think that we want this to be a MUST otherwise the module doesn't have a stable definition because the the module revision does not uniquely identify its content.

[RW]

Need to add text similar to this (change semver to revision):  Put this into section 2.  Also need to state that labels in submodule revisions, if present, MUST be the same at the including module.


   The YANG semantic versioning scheme applies only to YANG modules.

   YANG submodules are not independently versioned by the YANG semantic

   versioning scheme.  Instead, if a versioned module includes one or

   more submodules then those submodules are implicitly versioned as

   part of the module's 'semver:version' statements, and all the

   module's 'include' statements MUST specify the revision-date for each

   of the included submodules.

Probably also want a guideline statement as well:
The revision date substatement within the include statement MUST be present if any groupings are used from the external submodule.


(iii)               Some text stating that removing old revision statements from a modules revision history could break import by revision, and hence it might be better to retain them, unless it is known that all depencencies have been updated.  An alternative solution, if the revision section is too long, would be remove, or curtail, the older description statements associated with old historical revisions.

[RW]
OK, Reshad to add text along these lines.


(v) Some guidance about whether updating the revision in import revision-or-derived is a BC or NBC change.  I think that it is NBC is the imported module has been changed in an NBC way between the revision dates.

[RW]
Leave out this text for now, and resolve via the open issues.


>
>   NBC changes to YANG modules may cause problems to clients, who are
>   consumers of YANG models, and SHOULD be avoided.  YANG module authors
>   are recommended to minimize NBC changes and keep changes BC whenever
>   possible.

I think "SHOULD be avoided" is too strong.  Perhaps:

NBC changes to YANG modules may cause problems to clients, who are
consumers of YANG models, and hence YANG module authors are
RECOMMENDED to minimize NBC changes and keep changes BC whenever
possible.

<RR> Good with me.

My counter argument is that there are somecases (e.g. bugfixes), where an NBC change makes sense because it should not break any clients.

<RR> Ack.

>
>   When NBC changes are introduced, consideration should be given to the
>   impact on clients and YANG module authors SHOULD try to mitigate that
>   impact.

OK.


>
>6.1.1.  Making non-backwards-compatible changes to a YANG module
>
>   There are various valid situations where a YANG module has to be
>   modified in a non-backwards-compatible way.  Here are the different
>   ways in which this can be done:
>
>   o  NBC changes can be done incrementally using the 'deprecated'
>      status to provide clients time to adapt to NBC changes.

I would suggest caveating this to:

  o  NBC changes can sometimes be done incrementally using the 'deprecated'
     status to provide clients time to adapt to NBC changes.
<RR> OK.

E.g. I'm still to be convinced that in the mainline case that configuration can be fixed incrementally.
<RR> I think the issue is supporting both at the same time. E.g. in the vpn-id example where the type is changed from integer to string,  it can be done incrementally but supporting both at the same time on a server is an issue (mapping values etc).

>
>   o  NBC changes are done at once, i.e. without using 'status'
>      statements.  This has a big impact on clients.

"This has a big impact on clients." => "Depending on the change, this may have a big impact on clients."

<RR> Ack.

>
>   o  If the server can support multiple versions of the YANG module or
>      of YANG packages(as specified in
>      [I-D.rwilton-netmod-yang-packages]), and allows the client to
>      select the version (as per
>      [I-D.wilton-netmod-yang-ver-selection]), then NBC changes MAY be
>      done without using 'status' statements.  Clients would be required
>      to select the version which they support and the NBC change would
>      have no impact on them

OK.


>
>   Here are some guidelines on how non-backwards compatible changes can
>   be made incrementally:

Perhaps, alter this to something like:

Here are some guidelines on how non-backwards compatible changes can be made incrementally, with the assumption that deprecated nodes are implemented by the srever, and obselete nodes are not:
<RR> Good with me.

>
>   1.  The changes should be made gradually, e.g. a data node's status
>       SHOULD NOT be changed directly from "current" to "obsolete" (see
>       Section 4.7 of [RFC8407]), instead the status SHOULD first be
>       marked "deprecated" and then when support is removed its status
>       MUST be changed to "obsolete".  Instead of using the "obsolete"
>       status, the data node MAY be removed from the model but this has
>       the risk of breaking modules which import the modified module.
>
>   2.  A node with status "deprecated" MUST be supported for the
>       solution described here to function properly.

As above, I think that this could be merged into the first sentence.
<RR> So just take bullet 2 out?

>
>   3.  A node with status "deprecated" SHOULD be available for at least
>       one year before its status is changed to "obsolete", see
>       Section 4.7 of [RFC8407].

I'm not sure whether we need to even state this one (since it is already in RFC8407).
<RR> Yes, and I’d like to avoid this statement since it’s contentious.


>
>   4.  Support for a node which is "obsolete" is indicated by the node
>       "obsolete-nodes-present, see Section 4.

As above, I think that this coudl be merged into the first sentence.
>
>
>
>Claise, et al.          Expires December 1, 2019               [Page 15]
>

>Internet-Draft           YANG Module Versioning                 May 2019
>
>
>   5.  The new extension "status-description" SHOULD be used for nodes
>       which are "obsolete" or "deprecated".

Should we indicate what information should be included:
- Reason for deprecation (if interesting)
- Replacement node (if known)
- Release/time that the node is anticipated to be obsoleted.

<RR> The last 2 points are  mentioned in the following bullets. I’ll add the 1st point.

Should we also indicate that "status-description" can be used with "status current" to provide forewarning that it could be deprecated, or does that mean that the node is already deprecated?

>
>   6.  For status "deprecated", the "status-description" SHOULD also
>       indicate until when support for the node is guaranteed.  If there
>       is a replacement data node, rpc, action or notification for the
>       deprecated node, this SHOULD be stated in the "status-
>       description".

I think that the first "SHOULD" should be a "MAY" because it is hard to foretell the future.  Alternatively, or perhaps in addition, it should be caveated with an "if known".
<RR> if known.

I think that this paragraph should also cover "reason for deprecated (if interesting)", and some of the status-description information also applies, and should be preserved when it becomes status-obsolete.


>
>   7.  When obsoleting or deprecating data nodes, the "deprecated" or
>       "obsolete" status SHOULD be applied at the highest possible level
>       in the data tree.  For example, when deprecating all data nodes
>       in a container, the "deprecated" status SHOULD be applied to the
>       container.  For clarity, the status MAY be added in all the
>       affected nodes but the status-description SHOULD be added only at
>       the highest level in the tree.

I would suggest rephasing to something like:

   7.  When obsoleting or deprecating data nodes, the "deprecated" or
       "obsolete" status SHOULD be applied at the highest possible level
       in the data tree with an appropriate status-description.  For
       clarity, status statement SHOULD also be applied to all descendent
       data nodes, but status-description does not need to be repeated
       if it does not introduce any additional information.
<RR> Good with me.

>
>   See Appendix A.2 for examples on how non-backwards-compatible changes
>   can be made.
>
>6.2.  Versioning Considerations for Clients
>
>   Guidelines for clients of modules using the new module revision
>   update procedure:
>
>   o  Clients SHOULD be liberal when processing data received from a
>      server.  For example, the server may have increased the range of
>      an operational node causing the client to receive a value which is
>      outside the range of the YANG model revision it was coded against.
>
>   o  Clients SHOULD monitor changes to published YANG modules through
>      their revision history, and use appropriate tooling to understand
>      the specific changes between module revision.  In particular,
>      clients SHOULD NOT migrate to NBC revisions of a module without
>      considering the specific NBC changes.

considering -> "understanding any potential impact of"
<RR> Ack.

Regards,
Reshad.

>
>   o  Clients SHOULD plan to make changes to match published status
>      changes.  When a node's status changes from "current" to
>      "deprecated", clients SHOULD plan to stop using that node in a
>      timely fashion.  When a node's status changes to "obsolete",
>      clients MUST stop using that node.

Thanks,
Rob