Re: [netmod] Obsolete feature - what does it mean?

"Rob Wilton (rwilton)" <rwilton@cisco.com> Thu, 28 February 2019 09:49 UTC

Return-Path: <rwilton@cisco.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7713B130E79 for <netmod@ietfa.amsl.com>; Thu, 28 Feb 2019 01:49:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Level:
X-Spam-Status: No, score=-14.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, 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
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 nx9jq_eDmlMG for <netmod@ietfa.amsl.com>; Thu, 28 Feb 2019 01:49:20 -0800 (PST)
Received: from alln-iport-6.cisco.com (alln-iport-6.cisco.com [173.37.142.93]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CA95F130E5B for <netmod@ietf.org>; Thu, 28 Feb 2019 01:49:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=23478; q=dns/txt; s=iport; t=1551347359; x=1552556959; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=k7fl+R/8F2F1gtTk21yHzY/jILS3YVa00LwsDmGwsic=; b=bQftO+ofg0CGu0bkULr6zYfW00rqPIydgUM0ZgNS8Rjik+ebmHQZkKzj UhN0ub/CDv1B8TVDMUvG511/C7Eh9phjt4vEarQVYs5UNW+50BCB3zDEF NDdT8U0BNZ8jbAF455QI3cMzEmgZUGXB1EtDKfkpiY7EMlYcwFPsA+td0 0=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0ADAAAvrndc/4cNJK1kGQEBAQEBAQEBAQEBAQcBAQEBAQGBUQQBAQEBAQsBgQ1IL2iBAycKg36IGo1aki6FchSBZwsBASOESQIXg3kiNAkNAQMBAQMBAwJtHAyFSgEBAQQjCkwQAgEIEAEEAQEoAwICAjAUCQgCBAENBQiDGYEOZA+rfoEviiYFjEgXgUA/g3Uugx4CgUkCTIJUglcCigoxggGDf4cKjCUJAodAiyAhjF2GP4MzhyqFVoxBAhEUgSgfOIFWcBWDJ4YKilNBMZEtgR8BAQ
X-IronPort-AV: E=Sophos;i="5.58,423,1544486400"; d="scan'208,217";a="241794533"
Received: from alln-core-2.cisco.com ([173.36.13.135]) by alln-iport-6.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Feb 2019 09:49:18 +0000
Received: from XCH-RCD-009.cisco.com (xch-rcd-009.cisco.com [173.37.102.19]) by alln-core-2.cisco.com (8.15.2/8.15.2) with ESMTPS id x1S9nIVf008403 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Thu, 28 Feb 2019 09:49:18 GMT
Received: from xch-rcd-007.cisco.com (173.37.102.17) by XCH-RCD-009.cisco.com (173.37.102.19) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 28 Feb 2019 03:49:17 -0600
Received: from xch-rcd-007.cisco.com ([173.37.102.17]) by XCH-RCD-007.cisco.com ([173.37.102.17]) with mapi id 15.00.1395.000; Thu, 28 Feb 2019 03:49:17 -0600
From: "Rob Wilton (rwilton)" <rwilton@cisco.com>
To: Kent Watsen <kent@watsen.net>, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
CC: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] Obsolete feature - what does it mean?
Thread-Index: AQHUzoX8sLOrgwMKb0+lEXSgf1InRaXz1yyAgAAMQYCAAFGwgIAACuQAgAAY1oCAAJ2wAA==
Date: Thu, 28 Feb 2019 09:49:17 +0000
Message-ID: <8277e305020d474294a09cb774eedee4@XCH-RCD-007.cisco.com>
References: <d0f6a34d-9218-b09b-5e9c-1747b1b780dc@ericsson.com> <20190227103303.emm3xj372rb7fx7t@anna.jacobs.jacobs-university.de> <2035f82c-bc0c-e5bb-40f2-efa6dcef6bde@ericsson.com> <010001692fb7a0c6-9a9ecc8c-f0b0-413c-92eb-30ea0d4b1834-000000@email.amazonses.com> <20190227164816.tlfqg4voabtdk7ey@anna.jacobs.jacobs-university.de> <01000169302cb03d-acbf34b5-56ba-40f0-8abc-2e938f5b0dfa-000000@email.amazonses.com>
In-Reply-To: <01000169302cb03d-acbf34b5-56ba-40f0-8abc-2e938f5b0dfa-000000@email.amazonses.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.63.23.61]
Content-Type: multipart/alternative; boundary="_000_8277e305020d474294a09cb774eedee4XCHRCD007ciscocom_"
MIME-Version: 1.0
X-Outbound-SMTP-Client: 173.37.102.19, xch-rcd-009.cisco.com
X-Outbound-Node: alln-core-2.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/lRF1Y9HH29ixHsFcOP-sY8QDIg0>
Subject: Re: [netmod] Obsolete feature - what does it mean?
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 28 Feb 2019 09:49:22 -0000

Unfortunately a deviation is not a good fit to mark that an obsolete node is implemented.

Assuming that I’m reading RFC 7950 correctly, it doesn’t allow you to “deviate add” a data node, nor can you change the status (e.g. from obsolete to deprecated).  So, I think that we would need to change the capabilities of the deviate statement in YANG Next if we wanted to go down this path.  Although, I’m not actually convinced that it is really required/helpful.

My thoughts on this:

1) Deprecated nodes should always be implemented, i.e. effectively handled the same as if they were status "current" but annotated that they will disappear in future. Perhaps this can be changed by fixing the language (e.g. in YANG Next) and/or through a "deprecated-nodes-implemented" leaf reported in YANG library (e.g. in the Semver draft).

2) Obsoleted nodes SHOULD NOT be used by a client, and SHOULD NOT be implemented by a server.  I think that RFC 7950 pretty much says this today anyway.

I don't think that it helps to force a server to remove them.  The Semver draft also has a leaf to indicate whether or not all obsolete nodes are implemented, but I'm not that convinced that it is truly useful.  In that I think that the rules above still give implementation flexibility but should still be sufficient for reasonable interop.

Thanks,
Rob


From: netmod <netmod-bounces@ietf.org> On Behalf Of Kent Watsen
Sent: 27 February 2019 18:17
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Cc: netmod@ietf.org
Subject: Re: [netmod] Obsolete feature - what does it mean?




On Feb 27, 2019, at 11:48 AM, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de<mailto:j.schoenwaelder@jacobs-university.de>> wrote:

On Wed, Feb 27, 2019 at 04:09:17PM +0000, Kent Watsen wrote:




On Feb 27, 2019, at 6:16 AM, Balázs Lengyel <balazs.lengyel@ericsson.com<mailto:balazs.lengyel@ericsson.com>> wrote:

feature oldFeature {
 status obsolete;
}
leaf myTimer {
 if-feature oldFeature ;
 mandatory true;
 config true;
 status current;
 type string;
}
So should I configure myTimer or not? I assume yes, correct?

This issue is captured here: https://github.com/netmod-wg/yang-next/issues/27, which was updated as of this morning with this very example.

Of course, the problem is in RFC 7950:

  o  "obsolete" means that the definition is obsolete and SHOULD NOT be
     implemented and/or can be removed from implementations.

I recommend replacing "SHOULD NOT be implemented" with "is not implemented".

When an IETF WG decides to obsolete something, I am forced to break
old clients because of this decision? Note sure this makes business
sense (says an academic).

There is a huge difference between modules where the implementors have
change control over the modules and modules where change control is
far outside the implementors hands and where clients and servers are
implemented by different organizations in an open and largely
uncoordinated way. We always have to keep this in mind when we create
rules.

The SHOULD NOT allows a server implementor to take a well-informed
decision that there are old clients you care about and that this makes
a business case for supporting obsolete definitions on a server.

Another aspect here is that we do not make a clear distinction between
server and client. It can very well be that "deprecated" and
"obsolete" mean slightly different things to servers and
clients. (Servers tend to have a natural desire to not break clients
unnecessarily.)



But a server can choose to not implement that revision of the module or, with https://github.com/netmod-wg/yang-next/issues/63 deviate the "status" statement.

I want "obsolete" to mean as it does everywhere else: out of use, no longer supported, not expected to work, etc.

Perhaps there is a line between having "status obsolete" versus disappearing the node altogether?   Maybe within the same "major" version (to use a sem-ver term), "obsolete" leaves it to the server's discretion, whereas the next major version disappears the node?

If so, then there should be a way for the server to indicate which discretionary choices it made.   I'd suggest that "obsolete" defaults to "not-implemented" and thus only servers that want to continue support for the node need to indicate anything.  A deviation would be a good fit for this.

Kent // contributor