Subject: [netmod] draft-ietf-netmod-yang-instance-file-format-01 terminology

From: Juergen Schoenwaelder <[email-masked]>
Date: Thu, 7 Feb 2019 16:32:12 +0100

Hi,

I just stumbled across the terminology defined in
draft-ietf-netmod-yang-instance-file-format-01 and I have several
questions:

   Design time: A time during which a YANG model and the implementation
   behind it is created.  Sometimes in other documents this period is
   divided into design and implementation time.

Assuming that design time and implementation time are the same seems
to be odd. In the IETF, it is quite common that there is a significant
difference between design time and implementation time. So what is
mean here? Since the term is rarely used (I found two occurances),
perhaps clarify what is meant where this term is used and do not
introduce a new term. However, if the term is defined, then I suggest
that we use semantics that align with the common use of the term.

   Instance Data Set: A named set of data items that can be used as
   instance data in a YANG data tree.

Why do we need this term? How is this different from data tree defined
in RFC 7950?

   o  data tree: An instantiated tree of any data modeled with YANG,
      e.g., configuration data, state data, combined configuration and
      state data, RPC or action input, RPC or action output, or
      notification.

In which sense is this a 'named set'? Or is the intention here to
define a named set of YANG data trees? If a term is needed, would
'Instance Data' not be simpler and align better with Instance Data
File? Also note that 'instance data' is defined later as 'data that
could be stored in a datastore and whose syntax and semantics is
defined by YANG models'. So how does 'instance data' related to
'instance data set' and 'data tree'? Can we simplify things?

   Target YANG Module: A YANG module for which the instance data set
   contains instance data, like ietf-yang-library in the examples.

I am not sure I like 'target'. It seems to me that instance data is
expected to conform to a schema defined by a collection of YANG
modules and you probably want to express that (but 'target' I find
misleading - data does not target a module).  Whatever we choose at
the end, we need to make sure that the terminology across related
documents (YANG, NMDA, YANG Library, ...) is consistent.

The leaf target-ptr triggers questions as well. If there is a choice
between two things, perhaps using a YANG choice is a more natural way
of expressing this than inventing special notations. I am also not
sure if it is a good idea to hardcode the name ietf-yang-library. Why
can I not just refer to any schema defining YANG modules? This way, we
have the freedom to create ietf-yang-library-2 if we ever want to. Do
implementations have to follow target-ptr arbitrarily deep? Do they
have to detect circular references (well they better do I guess).

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

---

From: Balázs Lengyel <[email-masked]>
Date: Tue, 19 Feb 2019 13:13:42 +0000

Thanks for the comments. See below!

On 2019. 02. 07. 16:32, Juergen
Schoenwaelder wrote:

Hi,

BALAZS: Following your suggestion I removed
the term.

(I do not know if we really have a "common use". For me (Ericsson)
anything from specification, to SW development to testing is
considered design time.)

BALAZS: Instance data set is more than just
a data tree: it includes metadata and MAY include additional
items

like XML attributes for implementation specific use. Also the
validation rules are less strict as partial data sets are
allowed.

BALAZS: Instance data is used as a general
term. "Instance data set" is a specific representation of
instance data, that

has a specific format (XML or JSON)

must be decorated with specific meta
data and

must have an identity (name +
revision-date/timestamp)

has a specific scope (partial data sets
are allowed)

Even for an unchanged data tree, you may
record different instance data sets e.g. representing the same
data tree at different times, thus signifying it has not
changed.

BALAZS: Agreeing with you, it will be
changed to choice. That also makes finding the

used method explicit. It also makes it easier to add new methods
later.

I will make it possible to use other YANG
modules.

Could you propose a better name instead of
"target"? IMO the concept is needed. It could be called "target"
or "instantiated" or "data-defining" or  ???

IMHO terms like "used", "referenced", "relevant" are to generic
and used for too many ways.

/js

--
Balazs Lengyel Ericsson Hungary Ltd.
Senior Specialist
Mobile: +36-70-330-7909 email: [email-masked]