Re: [netmod] New Version Notification for draft-verdt-netmod-yang-versioning-reqs-01.txt

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Sat, 27 October 2018 08:36 UTC

Return-Path: <j.schoenwaelder@jacobs-university.de>
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 CBACE12F1A6 for <netmod@ietfa.amsl.com>; Sat, 27 Oct 2018 01:36:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 rAy9nQ4KB9ZB for <netmod@ietfa.amsl.com>; Sat, 27 Oct 2018 01:36:34 -0700 (PDT)
Received: from atlas5.jacobs-university.de (atlas5.jacobs-university.de [212.201.44.20]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D11AF12D4E6 for <netmod@ietf.org>; Sat, 27 Oct 2018 01:36:32 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas5.jacobs-university.de (Postfix) with ESMTP id 91D77F79; Sat, 27 Oct 2018 10:36:30 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas5.jacobs-university.de ([10.70.0.217]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10032) with ESMTP id mz2V6kSU1IUW; Sat, 27 Oct 2018 10:36:28 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas5.jacobs-university.de (Postfix) with ESMTPS; Sat, 27 Oct 2018 10:36:30 +0200 (CEST)
Received: from localhost (demetrius4.jacobs-university.de [212.201.44.49]) by hermes.jacobs-university.de (Postfix) with ESMTP id 7BBE42003B; Sat, 27 Oct 2018 10:36:30 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius4.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id w1t2kk4TX2L9; Sat, 27 Oct 2018 10:36:29 +0200 (CEST)
Received: from exchange.jacobs-university.de (SXCHMB01.jacobs.jacobs-university.de [10.70.0.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "exchange.jacobs-university.de", Issuer "DFN-Verein Global Issuing CA" (verified OK)) by hermes.jacobs-university.de (Postfix) with ESMTPS id B4C3B2003A; Sat, 27 Oct 2018 10:36:29 +0200 (CEST)
Received: from anna.localdomain (10.50.218.117) by sxchmb03.jacobs.jacobs-university.de (10.70.0.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1591.10; Sat, 27 Oct 2018 10:36:29 +0200
Received: by anna.localdomain (Postfix, from userid 501) id 067D53002A1166; Sat, 27 Oct 2018 10:36:28 +0200 (CEST)
Date: Sat, 27 Oct 2018 10:36:28 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Andy Bierman <andy@yumaworks.com>
CC: "netmod@ietf.org" <netmod@ietf.org>
Message-ID: <20181027083628.tgymddbje3yp2lhy@anna.jacobs.jacobs-university.de>
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Mail-Followup-To: Andy Bierman <andy@yumaworks.com>, "netmod@ietf.org" <netmod@ietf.org>
References: <154005782323.13611.776830839788125372.idtracker@ietfa.amsl.com> <37f05b48-5fe7-82b4-ae32-9b856596e6a2@cisco.com> <1485DDD0-EB56-422D-A216-4A20F9B63A17@chopps.org> <a0392622-4405-8286-374b-effd652114cd@cisco.com> <sa636st2a97.fsf@chopps.org> <01d5056d-7645-cb1d-6e88-fbdbeb8ebca4@cisco.com> <20181026093347.3yomg5bhwilassvf@anna.jacobs.jacobs-university.de> <CABCOCHS6Vp6=HS6HPztDqojh=U84LuwbAJGB73HA01S9ukjfZg@mail.gmail.com> <20181026230148.xnv7kxgqd43abb7g@anna.jacobs.jacobs-university.de> <CABCOCHQUwFvLVz-kHPofNc6n4TG=+6Vj3dK87LqLrH=vtzVQcQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CABCOCHQUwFvLVz-kHPofNc6n4TG=+6Vj3dK87LqLrH=vtzVQcQ@mail.gmail.com>
User-Agent: NeoMutt/20180716
X-ClientProxiedBy: SXCHMB04.jacobs.jacobs-university.de (10.70.0.156) To sxchmb03.jacobs.jacobs-university.de (10.70.0.155)
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/Pq2tNYoVSeq3NLn5PLdlCE1b83M>
Subject: Re: [netmod] New Version Notification for draft-verdt-netmod-yang-versioning-reqs-01.txt
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: Sat, 27 Oct 2018 08:36:37 -0000

On Fri, Oct 26, 2018 at 04:36:26PM -0700, Andy Bierman wrote:
> On Fri, Oct 26, 2018 at 4:01 PM, Juergen Schoenwaelder <
> j.schoenwaelder@jacobs-university.de> wrote:
> 
> > On Fri, Oct 26, 2018 at 09:35:39AM -0700, Andy Bierman wrote:
> > >
> > > IMO requirements 3.1 and 3.2 are the most  important and have the most
> > > impact
> > > on the solution space. I do not agree with either of these requirements.
> > >
> > > Implementing multiple non-compatible revisions of a module on a server
> > > sounds hard,
> > > not to mention that it breaks RFC 7950 rules. The current protocols do
> > not
> > > support the
> > > ability to specify different versions of the same QName. This change
> > makes
> > > YANG validation
> > > much to difficult to specify and implement (as that has to be rewritten
> > as
> > > well).
> > >
> > > It is one thing to deploy rapidly changing, buggy YANG modules in order
> > to
> > > gain experience quickly.  It is quite another to complicate YANG and the
> > > protocols
> > > to preserve these interim mistakes, and bake into the standards the
> > notion
> > > that this
> > > is good engineering.
> > >
> >
> > So how do you think this conflict between more agility and client
> > stability should be handled? It seems you can't easily have both at
> > the same time. Are you saying that backwards compatibility to support
> > existing clients is not important?
> >
> >
> It depends on the data model and how broken it is in the replaced version.
> YANG validation is slow and complicated enough without pretending there
> are 8 or 10 separate schema trees within a datastore. It might be impossible
> for all constraints to be true in all schema trees at once.  It is a burden
> on operators
> and client developers to understand and properly manage multiple
> incompatible revisions
> of the same module
> 
> yang-library is a good example of a clean break.
> The /yang-library tree completely replaces the /modules-state tree.
> A server can easily support both subtrees.
> No new YANG or protocol features are needed at all.
> This was not a bugfix, just the normal instability in the IETF.
> 
> Even with this clean break, there could be external modules that have
> leafref
> or must/when that point at the /modules-state subtree.  They have to be
> rewritten
> to use /yang-library instead. But this can happen as needed since the old
> tree is unchanged.
> 
> For truly broken changes (e.g. change a node from a container to a list;
> change a leaf from type boolean to an enumerated type w/ 6 enums;
> remove or rename lots of existing nodes) the cross-references from external
> modules can easily be incorrect if used with the new version.
> 
> The NETMOD WG chose to add a new /yang-library tree instead of
> mangling the existing nodes. One design choice makes req. 3.1 easy and 3.2
> not needed.
>

       3.1  The solution MUST provide a mechanism to allow servers to
            support existing clients in a backwards-compatible way.

I believe 3.1 is exactly what we have today. If it is necessary to
make incompatible changes, you create new definitions. This allows
servers to support existing clients in a backwards-compatible way (as
long as the old and new definitions are not conflicting.)

       3.2  The solution MUST provide a mechanism to allow servers to
            simultaneously support clients using different revisions of
            modules.  A client's choice of particular revision of one or
            more modules may restrict the particular revision of other
            modules that may be used in the same request or session.

Today, the version number is effectively an (implicit) part of the
module name (plus the revision date for backwards compatible changes).
Hence, my understanding is that today's model does satisfy 3.2 as
well.

If we want to increase 'agility' in an attempt to make it easier to
deliver early designs and to fix them on the go, the costs will go up
somewhere. The extreme cases are:

1) The server can make changes to YANG modules in arbitrary ways and
   the clients have to adapt, i.e., clients have to pay the bill.

2) The server has to provide strict backwards compatibility in order
   to not break clients, i.e., servers have to pay the bill.

The question is whether there is a solution somewhere in the middle
that balances the costs and eases the process of adapting clients to
servers and vice versa. It might very well be that there is no sweet
point.

Unless we go for option 1) above, I believe 3.1 and 3.2 are valid and
important requirements.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <https://www.jacobs-university.de/>