Re: [netmod] adoption poll for yang-versioning-reqs-02
Andy Bierman <andy@yumaworks.com> Wed, 20 March 2019 13:48 UTC
Return-Path: <andy@yumaworks.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 AB4F612867A for <netmod@ietfa.amsl.com>; Wed, 20 Mar 2019 06:48:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20150623.gappssmtp.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 mpXtEqyfg54R for <netmod@ietfa.amsl.com>; Wed, 20 Mar 2019 06:48:34 -0700 (PDT)
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 008A312782C for <netmod@ietf.org>; Wed, 20 Mar 2019 06:48:33 -0700 (PDT)
Received: by mail-lf1-x130.google.com with SMTP id y18so1963992lfe.1 for <netmod@ietf.org>; Wed, 20 Mar 2019 06:48:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=g4xV9ubUyoOSkFnD+rOi+LBH/2SmPSIRfpHsQZHTOmQ=; b=hIZnLZH3pPV3XxP2Yubjbysd6CTLtl26pUiLOYfNfi2VDFtaM+XIrxmycNAJdB8QAo yhvsjRLYqFgfpyFxJ5JwM8cP/n6dyZnqDGXo46ZcjI78+7M3fN8L7T3VgmCoM5s5rz+m slscMAqwuoXTObzjnd7abkl5L5ti+AOa13Osxpf1jOYJ8xRAYYJrIht791ZxX2NfPezZ Fv+4kiAdvxOjorjcC0U1MPWHXdb4RZdZ5BFUAFh31M8iXCnFW/7Cy3DpWVZ9r4dGnV7m yZ1uHT0wvnAPziS9xDawuOdLWYDkitJOlss8s5KL/xJeMdwtQ4+PjZB63e2xdrDuASeL GI1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=g4xV9ubUyoOSkFnD+rOi+LBH/2SmPSIRfpHsQZHTOmQ=; b=k3trrQkb5cJbUrX60m9m+5/xT0VOuJBAxb5YDOoqoxqqquBTbfx0B0QQOLXmk/S9xZ zkvihI0jF3hIJr/J0nFv6ve+qclF2++IAsotATqYdcCN8z7peSMZH6LnGw+EavlXqcU2 psZ3uETjXj/0OugDbcn6rscua7kY/43J0IyFi1ZTpzJQSU+iWN7LO99uF6uVdLxxq54f bgrYFdgTss4sDptpK1xkN3T35nerzcVNreI/K5ru06Ve/je3A7T8YbS3I6BQZXAppuHv 3RiSu1AGRhInGl3Y94Yt1eyFV1pUHEgQLktGEZHxPlpwTCVL95H1wPo5CRwg4UOKUrJ2 d1Qw==
X-Gm-Message-State: APjAAAXGA7z046ouJyuMXfq+rdIwEWa99us5WnenW8bvxlitn3x2WcGn +dwCMiPvMq6dumQnHesibjvRnGgN7fUNy9tDCtsUVA==
X-Google-Smtp-Source: APXvYqzwEppUZNhfMDpNcNB0OdtfepM5B7fzSt0BARvZyFFo+O7nXCEDnfSH8UtgbOkS+Uthyt4hRhVH+kznY0oH4Rc=
X-Received: by 2002:ac2:569b:: with SMTP id 27mr17224494lfr.24.1553089711523; Wed, 20 Mar 2019 06:48:31 -0700 (PDT)
MIME-Version: 1.0
References: <0100016978b80dcd-31f317a5-443b-400a-98b3-2bfc91841bdc-000000@email.amazonses.com> <20190319.161229.1910835285804688041.mbj@tail-f.com> <aee7d9770a2c4570a3185a1ebeef4c36@XCH-RCD-007.cisco.com> <CABCOCHTsH_wk+MGQwSPA-JZCUiTT38ua-dsnoFgjO=r0U07veA@mail.gmail.com> <8871415dce7343a28afa25faf6080d8c@XCH-RCD-007.cisco.com>
In-Reply-To: <8871415dce7343a28afa25faf6080d8c@XCH-RCD-007.cisco.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Wed, 20 Mar 2019 06:48:20 -0700
Message-ID: <CABCOCHQX5i1a6zqOSc2ec3YJ=8Ugc6WeN4_uh6YqRq6jKrR1ig@mail.gmail.com>
To: "Rob Wilton (rwilton)" <rwilton@cisco.com>
Cc: Martin Bjorklund <mbj@tail-f.com>, "kent+ietf@watsen.net" <kent+ietf@watsen.net>, "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000008f5fc9058486e07b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/Z5grAbsayiX4WEvMc2OxPEbRc7k>
Subject: Re: [netmod] adoption poll for yang-versioning-reqs-02
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: Wed, 20 Mar 2019 13:48:40 -0000
On Wed, Mar 20, 2019 at 4:54 AM Rob Wilton (rwilton) <rwilton@cisco.com> wrote: > Hi Andy, > > > > Thanks for the comments. > > > > 1. Regular Semver 2.0.0 (as per semver.org) allows some branching. I.e. > you can create version 2.0.0 based of version 1.1.0, and then subsequently > create version 1.2.0 based of 1.1.0. So structure wise this would > logically look like: > > > > 1.0.0 > > | \ > > | 1.1.0 – 1.2.0 - … > > | > > 2.0.0 > > | > > > > I also raised https://github.com/semver/semver/issues/504 on the semver > 2.0.0 github to confirm that my interpretation is correct, and no one has > disputed it yet. > > > The numbering may allow it, but it is not really being used that way. I don't think the YANG standard needs to support branching in this way. > > > 2. Vendor software releases can have a very long support time (e.g. easily > 5+ years), with an expectation that bugs get fixed. Requiring that > customers upgrade their software (or perhaps hardware) to the very latest > software version to pick up a small bug fix is not realistic. This is > primarily why I think that the ‘m’ and ‘M’ are so important. They allow > for bug fixes in a way that Semver 2.0.0 simply does not. > > > > Semver 2.0.0 only allows for bugfixes in the implementation (by updating > the patch version number), but has the expectation that there are **never** > any non-backwards-compatible changes in the API, not even to fix a bug, > except at the tip of the development tree. > > > > In short, I think that vanilla Semver 2.0.0 is a good fit for open source > projects where you can just tell the client to update to the latest version > to pick up the fix. I don’t think that Semver 2.0.0 is so well aligned to > APIs that are required to be maintained for long periods of time. > > > > The alternative that Rob Shakir mentioned at IETF 103 in the context of > OpenConfig, which uses strict Semver 2.0.0, is to handle these bug fixes > using deviations. But it seems to be significantly more complex to manage > bug fixes using extra deviation modules rather than allowing the ‘m’ | ‘M’ > modifiers. Versioning would no longer limited to a module version number, > but require knowledge of the module version and set of deviations that are > applied to it. I would rather deviations are reserved to indicate whether > an implementation doesn’t match the module specification rather than use > them as a way of fixing bugs in the specification itself. > > > I agree that deviations should be used instead of branching. You can cherry-pick features from the latest very easily with deviations. IMO it is more accurate to say the implementation supports version X minus some features, rather than assigning some version string to mean the same thing. This approach can get out of control very quickly if multiple independent release trains exist. I prefer a linear development progression, and each implementation will identity its functionality the same way. > > 3. I agree that the use of Semver + packages + version selection does not > reduce the overall number of paths to a configurable property, but it does > ensure that there is only a single path to a configurable property within a > YANG datastore schema. So whichever version each client is using, they > only use a single path. I.e. mirroring the way that a classic programming > API might be versioned. > > > > Servers that wish to support this would have to map the data between > different YANG datastore schema versions. Not all mappings are possible, > but at least any cases where it is not possible can be detected and > reported to the client via an out of band mechanism. > > > > If the module content changes significantly between module versions that > mapping will be much harder than if the changes are minimal or backwards > compatible. So there is still a strong incentive for model writers to > minimize churn to the YANG models. > > > I don't think the versioning data nodes is a good idea. I have seen entire REST APIs be versioned, but not individual parameters within the API. How do you version the must/when/path references from other objects that point at the data node? Sounds way too complex to manage. > Thanks, > Rob > > > Andy > > > *From:* Andy Bierman <andy@yumaworks.com> > *Sent:* 19 March 2019 18:35 > *To:* Rob Wilton (rwilton) <rwilton@cisco.com> > *Cc:* Martin Bjorklund <mbj@tail-f.com>; kent+ietf@watsen.net; > netmod@ietf.org > *Subject:* Re: [netmod] adoption poll for yang-versioning-reqs-02 > > > > > > > > On Tue, Mar 19, 2019 at 9:38 AM Rob Wilton (rwilton) <rwilton@cisco.com> > wrote: > > Hi Martin, > > Thanks for the review and comments. > > A couple of points: > > 1) Lots of models outside those published in SDOs are already not > following the RFC 7950 revision rules. I think that it is better to have a > versioning scheme that reflects how YANG models are actually evolving > rather than have all vendor and OC YANG modules either just ignoring the > rules, or using clever tricks that strictly conform with the rules but go > against the spirit of them (e.g. just publish an entirely new set of YANG > modules for each release). Also noting that having a scheme that allows > non-backwards-compatible changes does not require that everyone uses them - > IETF could continue to always publish backwards compatible modules. The > obvious alternative here is that each vendor comes up with their own > versioning extension and ignores the RFC 7950 section 11 rules anyway, but > I'm not sure how that really helps client<->server interop. > > > > > > I do not support branching for YANG models so I do not supported modified > SEMVER. > > Adding a special character to the version string doesn't help the deployed > client code > > that stops working when the server code is upgraded. This is a quality > issue that > > each organization has to deal with the best they can. > > > > I do not object to the addition of a SEMVER field to a YANG module because > these version > > strings are familiar to users. It is possible to express import ranges > such as 1.2.* (any 1.2.x release) > > which are not possible with date strings. > > > > > > 2) I don't understand how the RFC 7950 approach of "deprecate a buggy > node, and replace with a working node" really works in practice, > particularly for configuration data nodes where you have two clients > interacting with a server, one interacting with the old path, and another > using the new path. Perhaps there is a robust scheme that works in all > cases, but it isn't obvious to me. Historically, for CLI we just translate > the CLI from old to new format and then return the new format when the > running config is requested. But that will still break an old client that > doesn't understand how to read the new CLI, even if the server supports > them writing via the old CLI. > > > > SEMVER does not reduce the number of paths to the underlying configuration > object. > > That problem does not change whether a new XPath absolute-path-expr is used > > or whether the same path is overloaded with semantics derived from > additional protocol parameters > > (e.g., versioning of each data node). I prefer the existing XPath solution > because it is explicit > > so the YANG reader can easily see the multiple paths, and no new protocol > work needed to support it. > > If there is an NBC change to an object then all XPath and leafref > references to it will probably break. > > That seems like a harder problem to solve than the original path > duplication problem. > > > > > > Even if there is a workable solution for this simple case, I suspect that > there are many slightly more complicated cases that don't work (e.g. > rekeying a list, changing defaults, incompatible types). > > In short, I don't agree with the premise that the current YANG versioning > schema using revision dates is working just fine, and no changes are needed. > > Thanks, > Rob > > > > Andy > > > > > -----Original Message----- > From: netmod <netmod-bounces@ietf.org> On Behalf Of Martin Bjorklund > Sent: 19 March 2019 15:12 > To: kent+ietf@watsen.net > Cc: netmod@ietf.org > Subject: Re: [netmod] adoption poll for yang-versioning-reqs-02 > > Hi, > > I have read this document, and I do not think it should be adopted. > > I object to the idea that we should allow non-backwards-compatible changes > to published YANG modules. > > The draft motivates this idea with: > > we must recognize that many YANG > modules are actually generated YANG modules (for example, from > internal databases) > > I do not agree that we should change what we allow in published modules > b/c of this. > > It also motivates this idea with: > > The points made above lead to the logical conclusion that the > standardized YANG modules have to be perfect on day one (at least the > structure and meaning), which in turn might explain why IETF YANG > modules take so long to standardize. > > I disagree with this. First of all, we have already published revision > two of several YANG modules (ietf-inet-types, ietf-yang-type, > ietf-interfaces, ietf-ip, ietf-routing, ...), so the statement that > "standardized YANG modules have to be perfect on day one" is simply not > true. > > Second, I don't think the upgrade rules are the reason it takes a long > time to standardize IETF models (I think it has to do with the process > itself, including the fact that models get reviews from many different > people with different background.) [BTW, is it true that drafts with YANG > models take longer time from wg -00 to published RFC than other drafts?] > > > This said, I think there are some important points that the draft raises, > and that I think we should continue to work on; specifically 2.3, 2.5, 2.6, > 2.7. But I don't think that these areas require changes to the versioning > scheme, and I think it is a mistake to include these areas in this draft. > > Some comments on section 4, The Problem Statement: > > o Any non-backwards-compatible change of a definition requires > either a new module name or a new path. This has been found > costly to support in implementations, in particular on the client > side. > > Yes I agree there is a cost associated with this. But I have come across > vendor modules that make NBC changes w/o introducing a new path, and this > is also costly to handle. > > o Since non-backwards-compatible changes require either a new module > name or a new path, such changes will impact other modules that > import definitions. In fact, with the current module versioning > scheme other modules have to opt-in in order to use the new > version. This essentially leads to a ripple effect where a non- > backwards-compatible change of a core module causes updates on a > potentially large number of dependent modules. > > This is by design. We cannot have a situation where a legal modification > to a module leads to other modules becoming invalid. > > o YANG has a mechanism to mark definitions deprecated but it leaves > it open whether implementations are expected to implement > deprecated definitions and there is no way (other than trial and > error) for a client to find out whether deprecated definitions are > supported by a given implementation. > > As I wrote above, I agree that this is a problem that should be solved. > But this is not a motivation for changing YANG versioning. > > o YANG does not have a robust mechanism to document which data > definitions have changed and to provide guidance how > implementations should deal with the change. While it is possible > to have this described in general description statements, having > these details embedded in general description statements does not > make this information accessible to tools. > > This might also be worth exploring, but this is not a motivation for > changing YANG versioning. > > > > /martin > > > > Kent Watsen <kent+ietf@watsen.net> wrote: > > Seeing as how we all need to read this draft anyways, in preparation for > our meeting in Prague, it seems like a good time for this poll. Thusly, > this email begins a 1-week adoption poll for: > > > > > > https://tools.ietf.org/html/draft-verdt-netmod-yang-versioning-reqs-02 > > <https://tools.ietf.org/html/draft-verdt-netmod-yang-versioning-reqs-0 > > 2> > > > > Please voice your support or objections before March 20. > > > > Note that this draft defines *requirements* and its intended status is > "Informational." I believe that it is good for WGs to formalize > requirements, even taking such drafts thru Last Call, in order to ensure > consensus on the requirements. This is the "adoption" call, to ascertain > if the WG agrees with that statement; if adopted, a separate "last call" > will be issued to ensure to correctness of the draft's content. > > > > Kent (and Lou and Joel) > > > > > > _______________________________________________ > netmod mailing list > netmod@ietf.org > https://www.ietf.org/mailman/listinfo/netmod > > _______________________________________________ > netmod mailing list > netmod@ietf.org > https://www.ietf.org/mailman/listinfo/netmod > >
- [netmod] adoption poll for yang-versioning-reqs-02 Kent Watsen
- Re: [netmod] adoption poll for yang-versioning-re… Balázs Lengyel
- Re: [netmod] adoption poll for yang-versioning-re… Joe Clarke
- Re: [netmod] adoption poll for yang-versioning-re… Rob Wilton (rwilton)
- Re: [netmod] adoption poll for yang-versioning-re… Reshad Rahman (rrahman)
- Re: [netmod] adoption poll for yang-versioning-re… Martin Bjorklund
- Re: [netmod] adoption poll for yang-versioning-re… Rob Wilton (rwilton)
- Re: [netmod] adoption poll for yang-versioning-re… Andy Bierman
- Re: [netmod] adoption poll for yang-versioning-re… Martin Bjorklund
- Re: [netmod] adoption poll for yang-versioning-re… Rob Wilton (rwilton)
- Re: [netmod] adoption poll for yang-versioning-re… Rob Wilton (rwilton)
- Re: [netmod] adoption poll for yang-versioning-re… Andy Bierman
- Re: [netmod] adoption poll for yang-versioning-re… Martin Bjorklund
- Re: [netmod] adoption poll for yang-versioning-re… Rob Wilton (rwilton)
- Re: [netmod] adoption poll for yang-versioning-re… Rob Wilton (rwilton)
- Re: [netmod] adoption poll for yang-versioning-re… Reshad Rahman (rrahman)
- Re: [netmod] adoption poll for yang-versioning-re… Kent Watsen
- Re: [netmod] adoption poll for yang-versioning-re… Andy Bierman
- Re: [netmod] adoption poll for yang-versioning-re… Kent Watsen
- Re: [netmod] adoption poll for yang-versioning-re… Lou Berger
- Re: [netmod] adoption poll for yang-versioning-re… Joel Jaeggli
- Re: [netmod] adoption poll for yang-versioning-re… Andy Bierman
- Re: [netmod] adoption poll for yang-versioning-re… Charles Eckel (eckelcu)
- Re: [netmod] adoption poll for yang-versioning-re… Kent Watsen
- Re: [netmod] adoption poll for yang-versioning-re… Martin Bjorklund
- Re: [netmod] adoption poll for yang-versioning-re… Andy Bierman
- Re: [netmod] adoption poll for yang-versioning-re… Reshad Rahman (rrahman)
- Re: [netmod] adoption poll for yang-versioning-re… Andy Bierman
- Re: [netmod] adoption poll for yang-versioning-re… Balázs Lengyel