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 <[email protected]> On Behalf Of Kent Watsen
Sent: 27 February 2019 18:17
To: Juergen Schoenwaelder <[email protected]>
Cc: [email protected]
Subject: Re: [netmod] Obsolete feature - what does it mean?




On Feb 27, 2019, at 11:48 AM, Juergen Schoenwaelder 
<[email protected]<mailto:[email protected]>>
 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 
<[email protected]<mailto:[email protected]>> 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




_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to