Subject: [netmod] module capabilities section

From: Andy Bierman <[email-masked]>
Date: Tue, 01 Sep 2009 08:43:11 -0700

Hi,

I think sec. 5.6.4 should be more clear about
the conformance for the module capability content.
This is a critical component of the many complex
features, and it MUST be complete and correct
for NETCONF/YANG to have any real chance at interoperability.

Sec 5.6.4.1:

All revisions of all modules that are used within
the server MUST be announced in the <hello> because
import-by-revision and include-by-revision are optional
to use, and therefore ambiguous.

Even all 'typedef' modules like ietf-yang-types are not
safe to use without a revision date.  Assuming the client
will guess the right file for 'import footypes' is broken.
Without a namespace, there is no way to verify that the
client and server both picked the same 'footypes'.

The current text says:

   Modules that do not contribute any data definitions, rpcs,
   notifications, or deviations to the device MAY be advertised in the
   <hello> message.

This is incomplete and non-deterministic data.
Maybe humans don't care about that, but it is a big deal
to automation-based applications.
(Some humans have noticed that incomplete and
non-deterministic data wastes time.)

Sec 5.6.4.2:

It should be clear that the server MUST announce all features
it supports for a given module, if any.

Sec 5.6.4.3:

It should be clear that the server MUST announce all deviations
it has loaded for a given module, if any.

The deviation module MUST be advertised as a capability.
It cannot just be identified as deviations=foo'.
It should be obvious that these modules are subject to
the same module name collisions as any other module.

Not so obvious -- the server MUST support every mandatory-to-implement
YANG construct in a deviations module, since it is just like any other.

   <capability>
      string-for-uri-nobody-can-remember:module=X&revision=2009-02-01&deviations=Y
   </capability>

   <capability>
      string-for-uri-nobody-can-remember:module=Y&revision=2009-02-01
   </capability>

------------------------------

General:

Using a complete and deterministic data-set is
fundamental to automation of manual IT labor.
If others want to use NETCONF as a human interface
that's fine, but that should not be the limit of NETCONF's utility.

Many classes of applications are not just simple
front-ends for a human to read and type,
and incomplete data is a killer for all those apps.
IMO, the amount of bandwidth being saved is
a million times cheaper than the labor hours for
looking up all the missing data, or over-paying experts
to know all the esoteric details without looking them up.

Andy

---

From: David Partain <[email-masked]>
Date: Thu, 3 Sep 2009 10:15:58 +0200

Good day, 

Thanks, Andy, for the thorough analysis of the module capabilities section.  
Would it be possible for you to provide "OLD" -> "NEW" suggestions?  I find 
it easier to understand what you want to change with a concrete proposal.

Thanks.

David

On Tuesday 01 September 2009 17.43.11 Andy Bierman wrote:
> string-for-uri-nobody-can-remember:module=X&revision=2009-02-01&deviations=
>Y </capability>
>
>    <capability>