Re: analysis of YANG vs. RELAX NG

Ladislav Lhotka <lhotka@cesnet.cz> Mon, 03 December 2007 14:33 UTC

Return-path: <discuss-bounces@apps.ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1IzCMV-0006bc-HM; Mon, 03 Dec 2007 09:33:31 -0500
Received: from discuss by megatron.ietf.org with local (Exim 4.43) id 1IzCMU-0006bA-6P for discuss-confirm+ok@megatron.ietf.org; Mon, 03 Dec 2007 09:33:30 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IzCMT-0006ax-ON for discuss@apps.ietf.org; Mon, 03 Dec 2007 09:33:29 -0500
Received: from office2.cesnet.cz ([195.113.144.244]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1IzCMT-0007Sl-6D for discuss@apps.ietf.org; Mon, 03 Dec 2007 09:33:29 -0500
Received: from [198.18.175.153] (unknown [207.236.117.226]) by office2.cesnet.cz (Postfix) with ESMTP id C30B3D80098; Mon, 3 Dec 2007 15:33:25 +0100 (CET)
Subject: Re: analysis of YANG vs. RELAX NG
From: Ladislav Lhotka <lhotka@cesnet.cz>
To: j.schoenwaelder@jacobs-university.de
In-Reply-To: <20071203140846.GB17536@elstar.local>
References: <953beacc0711271504y7aea5f21jc301ccad886d3611@mail.gmail.com> <474D9194.3060103@ericsson.com> <953beacc0711281025w4d993dd7u77d729111074496c@mail.gmail.com> <20071128.230244.254578150.mbj@tail-f.com> <63F8A418-6AF0-4205-ACC7-53A8C7BC6A73@osafoundation.org> <47512728.6040201@gmx.de> <517bf110712021242v43c462f0v86267f591e5cdfbd@mail.gmail.com> <1196690162.5874.13.camel@missotis> <20071203140846.GB17536@elstar.local>
Content-Type: text/plain; charset=utf-8
Organization: CESNET
Date: Mon, 03 Dec 2007 15:33:24 +0100
Message-Id: <1196692404.5874.36.camel@missotis>
Mime-Version: 1.0
X-Mailer: Evolution 2.12.1
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 52f7a77164458f8c7b36b66787c853da
Cc: discuss@apps.ietf.org
X-BeenThere: discuss@apps.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: general discussion of application-layer protocols <discuss.apps.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=unsubscribe>
List-Post: <mailto:discuss@apps.ietf.org>
List-Help: <mailto:discuss-request@apps.ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/discuss>, <mailto:discuss-request@apps.ietf.org?subject=subscribe>
Errors-To: discuss-bounces@apps.ietf.org

Juergen Schoenwaelder píše v Po 03. 12. 2007 v 15:08 +0100:
> On Mon, Dec 03, 2007 at 02:56:02PM +0100, Ladislav Lhotka wrote:
> > Tim Bray p????e v Ne 02. 12. 2007 v 12:42 -0800:
> > > I've been staying off this thread because I don't understand what a
> > > NETCONF is or what you'd do with one.  But Julian's point is massively
> > > important.  If you're going to design your own modeling language, you
> > > need to spend a *lot* of time thinking about the extensibility model.
> > > It's really easy to get wrong.  -Tim
> > 
> > Indeed. An extensibility problem in YANG is IMO the leaf statement. It
> > is encoded as an XML element but the fact that it is declared as leaf
> > effectively makes it into an XML attribute: It is impossible to extend
> > it (e.g., add a qualifying subelement) without changing the leaf into
> > container. In a RELAX NG schema, if properly designed, such an extension
> > wouldn't have to touch the parent schema.
> 
> Leafs carry data and we strongly dislike mixed contents in NETCONF. So
> this is actually a YANG feature and not a bug.

It doesn't necessarily mean mixed content, just changing

<anel>XYZ</anel>

into

<anel>
  <anel-qual>ABC</anel-qual>
  <anel-value>XYZ</anel-value>
</anel>

Or, alternatively, the qualification info can be encoded in an
attribute, which doesn't seem to be possible in YANG at all. I know,
attributes are also frowned upon, but sometimes such a flexibility comes
handy - and, after all, in some situations the extra attribute can be
understood as metadata.

>  
> > Another problem might be the default statement in leaves (or it is
> > proper to say leafs here?:-) or typedefs. What if a standard data model
> > defines an item, say a hello timer, with such a default, but an
> > implementation wants to use another value for the default? Should it
> > come up with another schema?
> 
> No. There can only be one standard default. If you are thinking about
> reusable groupings, then defaults can actually be changed wherever you
> apply a grouping as far as I know.

Protocols specifications in RFCS usually say that a particular default
value SHOULD be something. So an impementation might have a reason for
using something else. In such cases, the standard data model thus cannot
use the default statement, right? 

Lada

-- 
Ladislav Lhotka, CESNET
PGP Key ID: E74E8C0C