Re: [netmod] example modules in 6087bis

Andy Bierman <andy@yumaworks.com> Wed, 18 January 2017 18:00 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 0214712954E for <netmod@ietfa.amsl.com>; Wed, 18 Jan 2017 10:00:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, 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 i-uIUkLNP627 for <netmod@ietfa.amsl.com>; Wed, 18 Jan 2017 10:00:25 -0800 (PST)
Received: from mail-qt0-x236.google.com (mail-qt0-x236.google.com [IPv6:2607:f8b0:400d:c0d::236]) (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 5861012954D for <netmod@ietf.org>; Wed, 18 Jan 2017 10:00:25 -0800 (PST)
Received: by mail-qt0-x236.google.com with SMTP id l7so21605027qtd.1 for <netmod@ietf.org>; Wed, 18 Jan 2017 10:00:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=zy0+HFKytZ/pm6nsE7lc2bz2EBHLlu58sc4CnTOTH5U=; b=alBUV0DSzeYqWWvb4MbaD7MQdkJk/05seTxAOI81A0fjRjiS84QgTNAu/2JO4PqYq1 fGweJjBA+AaoBybTQQ0sHhd0f/S85HpEpQft7gO02Ua/Gi54+DAnKWVDdlstE89nJgHW FLU8sXLlz80K4pl8yFKd+X0TvqHm3XSPoim5NQ7RZqYf/kCFG5rWqSXlVNnwYKfB8pJx N8k3P9AkXeyFDZGQVXv4m9KL8IdeE+GiDSaHZvwBiMBBbYYAR5BaU1lYgCRTSwlr+PG8 1cB9Iv9Xqvu/AI6iPdYWv6VwV9OSwy02QC7pQ3Z4dv5rB9ClGVFEql0+W/oVD8xaYq9n 5Iew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=zy0+HFKytZ/pm6nsE7lc2bz2EBHLlu58sc4CnTOTH5U=; b=PImpd5Aa8/KqP8w6yotV/KhNYtUFo1qegmTJN5KSSQdl5YSLIDS8b0TpSIrTCs3yT2 2PPFCUbVKw2wGgSY/IpuWxfYQh2ru7EusiXJNJdDvM9eMleEmxuUd4nvNjqAQPWfFZ8x 8gQtqn2BVxIpDZRTAV+OJRGCoItwOdeC4nQn+2Kg+6EyldDi6iT7+WV56j9d9PuQghdU CuEvIAVkN+dLnX7vGdjL4zIHusxYvwbnOmq6QWAu8Y79lqqxBfdO43Lr73Qd9cfPU3O2 2xJSFckXIf5NgT11RWiKyErSW+vuIpBQTaAJDQtYpof/lNsKKs1JW5cGs6cFpcZx0uQl qXMQ==
X-Gm-Message-State: AIkVDXJBOITFxHWJ25wN9FwLeAcd5E830bfedSf91GGJFArAoGpl4fn+KDSup5BUrtGUOxpPyZgJkGsQloIERg==
X-Received: by 10.237.59.203 with SMTP id s11mr4234031qte.46.1484762422245; Wed, 18 Jan 2017 10:00:22 -0800 (PST)
MIME-Version: 1.0
Received: by 10.12.145.66 with HTTP; Wed, 18 Jan 2017 10:00:21 -0800 (PST)
In-Reply-To: <c41146ec-3db9-1752-d32f-0367418c7e66@cisco.com>
References: <20170116.164803.729427888661667991.mbj@tail-f.com> <c41146ec-3db9-1752-d32f-0367418c7e66@cisco.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Wed, 18 Jan 2017 10:00:21 -0800
Message-ID: <CABCOCHRkFwDrQrGqk61nh-3fc+emtJEshdEMqA+G4r2YaKxwdg@mail.gmail.com>
To: Benoit Claise <bclaise@cisco.com>
Content-Type: multipart/alternative; boundary="94eb2c1907acc11c03054662306b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/tHDdvsS3eDK_DPuAqChEvpBoSyM>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] example modules in 6087bis
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.17
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, 18 Jan 2017 18:00:28 -0000

On Wed, Jan 18, 2017 at 9:12 AM, Benoit Claise <bclaise@cisco.com> wrote:

> Martin,
>
> Hi,
>
> It turns out that the recommendations on example modules are a bit
> unclear.  Different drafts do very different things.  Some examples:
> https://tools.ietf.org/html/draft-ietf-i2rs-yang-l3-topology-08#section-6.1.2
>
> This example module really looks like a real module.  It uses an
> IANA-controlled namespace, and the meta-statements indicate that this
> is a normative modules.  But the module does not use the <CODE> tags.
>
> https://tools.ietf.org/html/draft-ietf-netconf-restconf-18#appendix-C.1
>
> This module is better, but it is written to follow RFC 6087 rules
> (pass pyang --ietf), with the result that it contains a bit of "noise"
>
> It takes a lot of YANG experience to be able to distinguish what is noise
> or not.
>

I agree.  I see Martin's point though -- maintenance clauses like contact
and organization
are not really needed for examples.


> with some meaningless descriptions and meta-statements.  It also does
> not use <CODE> tags.
>
>
> A good example (IMO) is found inhttps://tools.ietf.org/html/rfc8022#appendix-C
>
> It uses descriptions when necessary (high s/n), no fake
> meta-statements etc.
>
> However, it might be a good idea to require example modules to have a
> "description" statement that explains what the module examplifies.
> For example, the example-rip could have:
>
>   description
>     "This example module demonstrates how the core routing data model
>      can be extended to support a new control-plane protocol.  It is
>      intended as an illustration rather than a real definition of a
>      data model for the Routing Information Protocol (RIP).";
>
>
>
> I think that 6087bis is clear when it says:
>
>   The guidelines in this document refer mainly to a normative complete
>   module or submodule, but may be applicable to example modules and
>   YANG fragments as well.
>
> I think this states that example modules do not have to pass pyang
> --ietf.
>
>
> In order to make this more clear, I suggest the following changes to
> draft-ietf-netmod-rfc6087bis-09
>
> In the Terminology section 2.4:
>
> NEW:
>
>   o  Example module:  A complete YANG module or submodule that is
>      intended to illustrate some specific aspect, but not intended for
>      actual use.
>
> It doesn't solve this issue, because https://tools.ietf.org/html/
> draft-ietf-netmod-rfc6087bis-09#section-4.2.1 says:
>
>  The <CODE BEGINS> convention SHOULD be used for complete example
>  modules, but not YANG fragments.
>
> That implies to me that we have 3 types:
> 1. *complete *example modules => I read it that they must pass pyang
> -ietf, SHOULD have <CODE BEGINS>
>     If there is <CODE BEGINS>, it's because people will want to extract
> it, and play with it. So the tools chain must work
> 2. the other example modules. No <CODE BEGINS>. I guess they don't pass
> pyang
> 3. YANG fragments. No <CODE BEGINS>. I guess they don't pass pyang
>
> In practice, 2 and 3 are the same. So we need just two definition
>
> Scrap "complete" would help but that's not enough:
>
>  The <CODE BEGINS> convention SHOULD be used for example
>  modules, but not YANG fragments.
>
> We only need to clarify 3 points
>     <CODE BEGINS>, yes/no
>     pyang, yes/no
>     pyang --ietf yes/no
>
> I guess we want, putting all this together:
>
>   o  Example module:  A complete YANG module or submodule that is
>      intended to illustrate some specific aspect, but not intended for
>      actual use. Example module MUST be valid according to RFC 7950,
>      except when they are used to illustrate some illegal constructs.
>      Example module MAY be valid according to the rules in this document.
>
>   o  YANG fragment:  A incomplete YANG module or submodule that is
>      intended to illustrate some specific aspect, but not intended for
>      actual use. YANG fragments MUST be valid according to RFC 7950,
>      except when they are used to illustrate some illegal constructs.
>
>
This is good
I prefer:
   - MUST use CODE BEGINS for a real module
   - MUST NOT use CODE BEGINS for an example module

   - MUST pass pyang --ietf for a real module
   - MUST pass pyang for example module

I have already received private emails about implementing the
example-jukebox
module in RESTCONF as part of the standard.  We already have operational
experience that people can be confused by the example modules, and
think they are supposed to be implemented for RFC compliance.


>
>  The <CODE BEGINS> convention SHOULD be used for example
>  modules that pass validation according to RFC 7950.
>
>  The <CODE BEGINS> convention MUST NOT be used for YANG fragment
>  and for example modules that are used to illustrate some illegal constructs
>  (therefore failing validation according to RFC 7950).
>
>
>
This text concerns me a little
We are not following the <CODE BEGINS> anywhere for examples.
the tools are extracting anything that starts "module blah".
IMO this makes it easier to confuse real and example modules.
I would prefer to consider only real modules as Code Components.

(We collect broken modules to test the compiler in modules/test/fail folder,
so even bad modules might be extracted.)



In section 4:
>
> NEW:
>
>    All normative modules or submodules, example modules or submodules,
>    and example YANG fragments MUST be valid according to RFC 7950,
>    except when they are used to illustrate some illegal constructs.
>
> We wouldn't need this if you take my proposal
>
> In Section 4.2.1 "Example Modules":
>
> NEW:
>
>   An example module SHOULD have a namespace on the form
>
>     o  http://example.com/<module-name> OR
>     o  urn:example:<module-name>
>
>   An example module SHOULD have a description statement that describes
>   that it is an example module, and what it examplifies.
>
>   An example module SHOULD NOT have any additional meta-statements
>   (i.e., "organization", "contact", or "reference").
>
>   An example module SHOULD use the "description" statement in any
>   definition where it is required to understand the example.
>
>
> Fine.
>
> Note that the RESTCONF RFC publication depends on this RFC6087bis
> convention. So let's quickly come to a conclusion.
>
> Regards, Benoit
>
>

Andy



> /martin
>
> _______________________________________________
> netmod mailing listnetmod@ietf.orghttps://www.ietf.org/mailman/listinfo/netmod
> .
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>