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

Martin Bjorklund <mbj@tail-f.com> Thu, 08 November 2018 21:40 UTC

Return-Path: <mbj@tail-f.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 D76A7129385 for <netmod@ietfa.amsl.com>; Thu, 8 Nov 2018 13:40:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, 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 TjiyDBv3xDdk for <netmod@ietfa.amsl.com>; Thu, 8 Nov 2018 13:40:01 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id A6F8E12D4E8 for <netmod@ietf.org>; Thu, 8 Nov 2018 13:40:00 -0800 (PST)
Received: from localhost (h-255-177.A165.priv.bahnhof.se [176.10.255.177]) by mail.tail-f.com (Postfix) with ESMTPSA id 0B1001AE0936; Thu, 8 Nov 2018 22:39:58 +0100 (CET)
Date: Thu, 08 Nov 2018 22:39:57 +0100 (CET)
Message-Id: <20181108.223957.1204257041429418398.mbj@tail-f.com>
To: j.schoenwaelder@jacobs-university.de
Cc: netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <20181026093347.3yomg5bhwilassvf@anna.jacobs.jacobs-university.de>
References: <sa636st2a97.fsf@chopps.org> <01d5056d-7645-cb1d-6e88-fbdbeb8ebca4@cisco.com> <20181026093347.3yomg5bhwilassvf@anna.jacobs.jacobs-university.de>
X-Mailer: Mew version 6.7 on Emacs 25.2 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/6DJmLjZeAupQqIAms36sN4y8z5w>
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: Thu, 08 Nov 2018 21:40:04 -0000

Hi,

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> Let me add that there was large disagreement what a bug fix is in the
> design team. Hence, any text that talks about 'bug fixes' is ambiguous
> and of limited value to achieve consensus. (Or we may find consensus
> but then not agree on what we have found consensus on.)
> 
> To be more concrete, I learned that Rob's notion of a bug fix is very
> different from my notion of a bug fix. I think it is important for
> having a productive discussion to be aware of this.
> 
> For me, a bug fix is rather limited, i.e., fixing something where the
> correct intention was clear but the model did not properly capture the
> intention correctly, i.e., roughly what we can do with errata in the
> IETF. I think Rob understands bug fixes in a much broader sense,
> including fixes to what essentially are in my view module design
> errors.
> 
> With my narrow definition of bug fixes, bug fixes are essentially
> backwards compatible (even if they may violate RFC 7950 rules - but as
> long as the original intention was clear, we can be flexible).

I agree with this interpretation of a bug fix.  For example
fixing incorrect patterns (e.g. errata 3957 that Andy mentioned).



/martin



> With Rob's notion of bug fixes, we have to handle them as part of the
> versioning system since they may be non-backwards compatible.
> 
> /js
> 
> On Fri, Oct 26, 2018 at 10:17:48AM +0100, Robert Wilton wrote:
> > Hi Chris,
> > 
> > 
> > On 25/10/2018 18:42, Christian Hopps wrote:
> > > 
> > > Hi Rob,
> > > 
> > > We've more privately discussed the bug-fix scenario and I'm sympathetic
> > > to it; however, the requirement as written does not restrict itself to
> > > fixing module definition bugs (e.g., a pattern or other value
> > > constraint) in some small but incompatible way -- instead it's wide open
> > > and it will be [ab]used that way.
> > I think that everyone on design team agrees that non-backwards-compatible
> > changes should be minimized and should really only to used for bug fixes
> > where it is anticipated that clients should not be affected.
> > 
> > We want to allow non-backwards-compatible changes at the head of the
> > development tree, but again, I think that everyone agrees that keeping it
> > backwards compatible where possible is a good goal.
> > 
> > However, I think that there will be cases where a vendor decides that it is
> > right for an enhancement or non backwards compatible change to be made to an
> > already released module.  I agree that this is highly undesirable and an
> > abuse of the rules, but I don't believe that whatever versioning scheme we
> > come up with will prevent vendors from doing this.  So then the question
> > becomes: Is it better to pretend that this scenario will never happen,
> > design the versioning scheme so that it cannot be expressed, which probably
> > just means that clients will not be able to detect when vendors do this by
> > cheating the rules!  Or is it better to accept that this will sometimes
> > occur, provide strong guidance as to why this is bad practice and should be
> > avoided, but have a versioning scheme that still allows this to be expressed
> > (in a bounded way)?  I.e. even if the vendors are doing something that is
> > less than ideal, at least the clients can spot where they have done this.
> > 
> > ---
> > 
> > A separate concern that we had about ties this strictly to bug fixes is that
> > some one will ask for a definition of a bug fix.  The design team tried this
> > but we couldn't even agree what a bug fix is, let alone agree with a single
> > definition of a bug fix as it related to a YANG module.  So our conclusion
> > was that perhaps it is better not to tie the requirements themselves to bug
> > fix vs enhancement, because the boundary between the two is too vague, and
> > module writers will bend the rules.
> > 
> > So I see that the rules should be:
> >  - backwards compatible bug fix  - this is fine.
> >  - non backwards compatible bug fix - this is fine if it is pragmatically
> > expected to not impact any clients, but careful consideration is required if
> > it might break clients.
> >  - backwards compatible enhancement - not ideal, but pragmatically OK.
> >  - non backwards compatible enhancement - this is bad and should be avoided.
> > 
> > But if we don't want to define the difference between a bug fix vs
> > enhancement then I think that you end up with the most general requirement
> > being that we do want to allow for non-backwards-compatible changes in
> > released modules to accommodate the bug fix scenario, but the expectation
> > (and guidance) will be that they should only be used for bug fixes.
> > 
> > 
> > > 
> > > For example:
> > > 
> > > > Here is what I am afraid the vendors want here: A developer on
> > > > release train X can easily change some data structure and then push
> > > > the change into an automated system which generates a new YANG
> > > > module definition and revs a version number -- all done! They don't
> > > > have to deal with the inertia of making this change in their release
> > > > train Y or Z and they don't have to treat modules as a stable API
> > > > they are exporting, b/c they now have these new wonderful versions
> > > > from this work. Meanwhile we the users now have to deal with N forks
> > > > with all the various little incompatible changes random developers
> > > > at the company wanted to make without having to coordinate with
> > > > their coworkers/other internal teams. Now multiply this by M
> > > > vendors. It's a nightmare. It shouldn't be what we are optimizing
> > > > for, let alone making a requirement.
> > > 
> > > Regarding enhancements, these are features, and are naturally
> > > augmentative. I find it hard to believe we have a pressing
> > > need/requirement to support non-backward compatible changes to existing
> > > modules in order to support enhancements.
> > I agree.  It was a backwards compatible enhancement that I was considering.
> > 
> > Thanks,
> > Rob
> > 
> > 
> > > 
> > > Thanks,
> > > Chris.
> > > 
> > > 
> > > Robert Wilton <rwilton@cisco.com> writes:
> > > 
> > > > Hi Chris,
> > > > 
> > > > I think that there are two things driving this requirement:
> > > > 
> > > > What I regard as the key one, is that we want to be able to support
> > > > the software
> > > > that we have shipped. In particular, we may need to fix bugs
> > > > (perhaps at the
> > > > operators request) to a YANG model that has already been released.
> > > > I.e. I think
> > > > that there are some scenarios, where forking a YANG module, although
> > > > undesirable
> > > > is the right thing to do to include a fix. I don't believe that
> > > > features or
> > > > deviations help solve this problem.
> > > > The two alternative solutions to being able to fix bugs, neither of
> > > > which I
> > > > think is pragmatic, that I can think of are:
> > > > (i) Vendors ensure that their YANG modules are perfect before they
> > > > ship in a
> > > > release.
> > > > (ii) If a bug is reported, operators are happy to wait until the bug
> > > > has been
> > > > fixed in the current development release, and will migrate to that
> > > > latest
> > > > release to pick up the fix.
> > > > 
> > > > The second thing driving this requirement is that vendors sometimes
> > > > get asked
> > > > for enhancements to existing releases, perhaps because the latest
> > > > development
> > > > release is too far out, or ask for an enhancement on the current
> > > > train to be
> > > > back ported to an older release.
> > > > 
> > > > So, aiming to have stable YANG modules, trying a lot harder to avoid
> > > > non-backwards-compatible changes, and keeping new functionality to
> > > > the head of
> > > > the development I completely agree with you on. But I still believe
> > > > that there
> > > > are some valid scenarios, that should be limited as much as
> > > > possible, where it
> > > > is necessary to make changes that sometimes break these rules, and
> > > > having a
> > > > limited scheme that clearly indicates where such breakages have
> > > > occurred is
> > > > probably better that the status quo of where the modules get
> > > > changed, but the
> > > > operator doesn't get any useful indication of what type of changes
> > > > are being
> > > > made.
> > > > 
> > > > Thanks,
> > > > Rob
> > > > 
> > > > 
> > > > On 25/10/2018 16:26, Christian Hopps wrote:
> > > > > 
> > > > > > On Oct 20, 2018, at 1:55 PM, Joe Clarke <jclarke@cisco.com> wrote:
> > > > > > 
> > > > > > * New requirement 1.4 for supporting over-arching software releases
> > > > > [ I read this as supporting various different module versions
> > > > > based on a vendor's different software release trains. If this
> > > > > is wrong then the rest of this doesn't apply and I would just
> > > > > ask for the text to be update to clarify what it means. ]
> > > > > 
> > > > > How many operators/users have asked for this or indicated it's a
> > > > > requirement for them?
> > > > > 
> > > > > What problem is intractable without this requirement being met,
> > > > > and what is the cost of this requirement on the actual users?
> > > > > 
> > > > > I have pushed back multiple times on this b/c I believe this
> > > > > "requirement" is really being pushed to make it easier for
> > > > > vendors (a small affected group) to develop their software at
> > > > > the cost of their users (the much larger affected group) who
> > > > > would then have to deal with multiple trains of the same module.
> > > > > 
> > > > > 
> > > > > We already have features and deviations why are they not enough
> > > > > to deal with functionality that is present or not in various
> > > > > software release/devices?
> > > > > 
> > > > > FWIW I'm not against making it easier to develop software, but
> > > > > we have to be mindful if we are just pushing the cost (and
> > > > > magnifying it greatly) to other people in the community.
> > > > > 
> > > > > Thanks,
> > > > > Chris.
> > > > > 
> > > > > _______________________________________________
> > > > > 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
> 
> -- 
> 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/>
> 
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>