Re: analysis of YANG vs. RELAX NG

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Thu, 29 November 2007 20:06 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 1IxpeN-0005fU-OS; Thu, 29 Nov 2007 15:06:19 -0500
Received: from discuss by megatron.ietf.org with local (Exim 4.43) id 1IxpeM-0005em-9H for discuss-confirm+ok@megatron.ietf.org; Thu, 29 Nov 2007 15:06:18 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IxpeL-0005ca-Uk for discuss@apps.ietf.org; Thu, 29 Nov 2007 15:06:17 -0500
Received: from hermes.jacobs-university.de ([212.201.44.23]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1IxpeJ-0006oD-Is for discuss@apps.ietf.org; Thu, 29 Nov 2007 15:06:17 -0500
Received: from localhost (demetrius.jacobs-university.de [212.201.44.32]) by hermes.jacobs-university.de (Postfix) with ESMTP id 425DE8A263; Thu, 29 Nov 2007 21:06:14 +0100 (CET)
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 32275-01-2; Thu, 29 Nov 2007 21:06:09 +0100 (CET)
Received: from elstar.local (elstar.iuhb02.iu-bremen.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 74FEA8A259; Thu, 29 Nov 2007 21:06:05 +0100 (CET)
Received: by elstar.local (Postfix, from userid 501) id 042EE4034C4; Thu, 29 Nov 2007 21:06:04 +0100 (CET)
Date: Thu, 29 Nov 2007 21:06:04 +0100
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Rohan Mahy <rohan.mahy@gmail.com>
Subject: Re: analysis of YANG vs. RELAX NG
Message-ID: <20071129200604.GD12255@elstar.local>
References: <20071127.130355.18118495.mbj@tail-f.com> <953beacc0711271504y7aea5f21jc301ccad886d3611@mail.gmail.com> <474D9194.3060103@ericsson.com> <953beacc0711281025w4d993dd7u77d729111074496c@mail.gmail.com> <474E83A4.3050000@ericsson.com> <953beacc0711291100lfe8cb6xeba5ac28b091b6fb@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <953beacc0711291100lfe8cb6xeba5ac28b091b6fb@mail.gmail.com>
User-Agent: Mutt/1.5.17 (2007-11-01)
X-Virus-Scanned: amavisd-new 2.3.3 (20050822) at jacobs-university.de
X-Spam-Score: 0.0 (/)
X-Scan-Signature: d0bdc596f8dd1c226c458f0b4df27a88
Cc: discuss@apps.ietf.org
X-BeenThere: discuss@apps.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: j.schoenwaelder@jacobs-university.de
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

On Thu, Nov 29, 2007 at 11:00:55AM -0800, Rohan Mahy wrote:
 
> I am proposing that you could combine syntax and semantics, or you can layer
> one on top of the other. Right now YANG is neither pure semantics, nor pure
> syntax. For example the distinction between the leaf-list and list objects
> in YANG is pretty syntactic. (One of the YANG team's "little-rules").
> Likewise, creating containers automatically is a syntactic construction.
> (Another "little-rule", but at least this one is explicit). Defining new
> data types in YANG is completely gratuitous syntax.

Perhaps it helps me if you can define what you consider syntactic and
what semantic. Having your definition will help me to understand what
you have in mind and where you draw the line.

I must note that types have been extremely successful in terms of
actual reuse in the SMI world. You may consider data types "gratuitous
syntax" but they are damn useful from our experience in writing data
models.
 
> I think having semantics for configuration information in general
> would be a boon for the IETF, as we have several protocol that are
> used for configuration.  Providing a way to describe semantics of
> common configuration concepts like default values, list keys,
> constraints among non-parent-child objects, all looks like great
> work to me, but I don't want to this so tied to NETCONF that I
> cannot use it elsewhere for other configuration data.
>
> I also don't want this rigidly attached to a specific syntax either.
> A lot of existing XML-based data formats use attributes
> extensively. Some XML-based languages (ex: GML) implement the
> equivalent of leaf-list using a single attribute with whitespace
> separated values (there is even a built-in data type (called "list")
> to handle this case).

There are specific reasons why YANG does not support white space
separated lists. I am sure Phil is happy to tell you how much fun
these white space separated values can be and why we prefer to have
every value within its own element in an instance document. (Well,
actually even RFC 4741 states that subtree filtering on list content
and mixed content is not supported.)

I have been involved in a project where we tried to develop a data
modelling language (called SMIng) that is protocol independent. From
this experience, I have serious doubts that semantics decoupled from
syntax will work anytime soon. There are relative obvious issues where
for example the underlying naming system impacts the way you can
formulate expressions.  And then there are issues that only pop up
once you really do it in practice, e.g. dealing with exceptions or
errors. (In YANG, you can say that a violation of a given constraint
leads to a specific NETCONF error report. Once you all do this in a
decoupled semantics layer, you end up having to abstract the
error/exception reporting mechanisms, which in my experience does not
make the result necessarily easier to use). My personal eye opener in
the SMIng project happened when started to move from toy examples to
model something of moderate complexity (we picked DiffServ at that
time because it actually has a nice informal information model plus a
MIB module which does supports configuration).

But don't get me wrong, I do not want to discourage anyone from trying
it - perhaps there are people who can solve this challenge. My only
concern is that it will take years to get it done with no clear signs
upfront that it will actually work. The YANG mission is much less
ambitious and down to earth, simply driven by the goal to create a
vendor independent domain specific data modeling languages that can
replace proprietary solutions that have already been created.

/js

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