Re: [yang-doctors] guideline for enum and value?

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Wed, 14 February 2018 16:52 UTC

Return-Path: <j.schoenwaelder@jacobs-university.de>
X-Original-To: yang-doctors@ietfa.amsl.com
Delivered-To: yang-doctors@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 35C9B12D72F for <yang-doctors@ietfa.amsl.com>; Wed, 14 Feb 2018 08:52:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, T_RP_MATCHES_RCVD=-0.01] 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 0NpzCdYtDzaN for <yang-doctors@ietfa.amsl.com>; Wed, 14 Feb 2018 08:52:16 -0800 (PST)
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 0551812D0C3 for <yang-doctors@ietf.org>; Wed, 14 Feb 2018 08:52:16 -0800 (PST)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas5.jacobs-university.de (Postfix) with ESMTP id C6D8E6BA; Wed, 14 Feb 2018 17:52:14 +0100 (CET)
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 ARP3NYwl08VP; Wed, 14 Feb 2018 17:52:14 +0100 (CET)
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; Wed, 14 Feb 2018 17:52:14 +0100 (CET)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id 82DB420151; Wed, 14 Feb 2018 17:52:14 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id hA22pqBAlVfc; Wed, 14 Feb 2018 17:52:13 +0100 (CET)
Received: from elstar.local (unknown [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id CEC1420150; Wed, 14 Feb 2018 17:52:13 +0100 (CET)
Received: by elstar.local (Postfix, from userid 501) id A06F0424767A; Wed, 14 Feb 2018 17:52:13 +0100 (CET)
Date: Wed, 14 Feb 2018 17:52:13 +0100
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: "Einar Nilsen-Nygaard (einarnn)" <einarnn@cisco.com>
Cc: "Benoit Claise (bclaise)" <bclaise@cisco.com>, Martin Bjorklund <mbj@tail-f.com>, "yang-doctors@ietf.org" <yang-doctors@ietf.org>
Message-ID: <20180214165213.gu6dngw5c75j2sfh@elstar.local>
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Mail-Followup-To: "Einar Nilsen-Nygaard (einarnn)" <einarnn@cisco.com>, "Benoit Claise (bclaise)" <bclaise@cisco.com>, Martin Bjorklund <mbj@tail-f.com>, "yang-doctors@ietf.org" <yang-doctors@ietf.org>
References: <20180125.095921.224499312159563778.mbj@tail-f.com> <20180125091118.tjn5eiv2hzmc7k23@elstar.local> <dfb94426-c408-e215-e23b-539e127050a2@cisco.com> <20180125.120804.68412726225731762.mbj@tail-f.com> <0db2c4d1-ac4d-dcc6-b2b9-c580427a6a84@cisco.com> <20180214154740.l375k2kmodgvzvdx@elstar.local> <20180214155951.eqaskkjs67bt6zjc@elstar.local> <748E69BA-6AF6-405D-BAEC-CBB3DF58F70D@cisco.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <748E69BA-6AF6-405D-BAEC-CBB3DF58F70D@cisco.com>
User-Agent: NeoMutt/20171215
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/t0Ov54oiRhabQdjKlw97WpZ08Tw>
Subject: Re: [yang-doctors] guideline for enum and value?
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Email list of the yang-doctors directorate <yang-doctors.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/yang-doctors/>
List-Post: <mailto:yang-doctors@ietf.org>
List-Help: <mailto:yang-doctors-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 14 Feb 2018 16:52:18 -0000

Once again, see the CBOR encoding work where they do make use of the
enum value on the wire (draft-ietf-core-yang-cbor-05 section 5.6).

/js

On Wed, Feb 14, 2018 at 04:19:58PM +0000, Einar Nilsen-Nygaard (einarnn) wrote:
> For me it's about who the values of the enums are for, and the impact on model evolution in different places. The enum values are explicitly intended as for model implementers to use, and have no real meaning to model consumers as the canonical representation is the string identifier. However, once a value is assigned via a "value", that value may never change. I have seen developers naively assign explicit values from other sources (e.g. system header files on the OS) and then inadvertently see problems when they implement the model on top of a new OS, where the value matching the symbol is not the same, and so the developers just (illegally) changed the value in the value clause. This still has zero impact on the end consumer of the model, as they deal with the string, but is a backwards compatibility violation that need not have happened.
> 
> In general, I think embedding values that are primarily targeted to implementers of a model in what is also the external format is just not all that helpful.
> 
> Not a huge deal, but reduces coupling, reduces opportunity for inadvertent backwards-compatibility breakage, and encourages better implementation code/model hygiene as all parties will be encouraged to utilize symbols rather than flawed values. I would like to see both consumers and implementers of models get to the point where:
> 
> type enumeration { enum foo; enum bar; }
> 
> and
> 
> type enumeration { enum bar; enum foo; }
> 
> ...are ultimately treated the same and such that reordering of symbols doesn't break things. I've seen enough broken code based on order-dependent integer value assignments combined with people using the values instead of symbols to last several lifetimes, and anything we can do to remove opportunities for mistakes seems like a good thing.
> 
> Cheers,
> 
> Einar
> 
> On Feb 14, 2018, at 3:59 PM, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de<mailto:j.schoenwaelder@jacobs-university.de>> wrote:
> 
> On Wed, Feb 14, 2018 at 04:47:40PM +0100, Juergen Schoenwaelder wrote:
> 
> And:
> 
>  Do not use explicit 'value' statements, except if:
>     o the enum corresponds to some standard integer value, or
>     o you update the set of enums by inserting new enums in the middle of
> the list
> 
> I am not sure why we would recommend this.
> 
> 
> More specifically, I do not see why
> 
>  type enumeration { enum foo { value 0; }; enum bar { value 1; }; }
> 
> is to be avoided in favor of
> 
>  type enumeration { enum foo; enum bar; }
> 
> given that they mean the same and the first one is explicit and robust
> to changes while the second one must be handled with care (only append
> enums, never reorder enums). Yes, clueful YANG authors can handle the
> later fine as they will understand that if order changes are needed,
> you have to move to explicit value assignments. My fear is that not
> all YANG authors will be aware of this (but then many of those authors
> likely also do not read guidelines).
> 
> /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/>
> 

-- 
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/>