[Lager] AD review of draft-ietf-lager-specification-10

Barry Leiba <barryleiba@computer.org> Sun, 13 March 2016 14:57 UTC

Return-Path: <barryleiba@gmail.com>
X-Original-To: lager@ietfa.amsl.com
Delivered-To: lager@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0111712D64C; Sun, 13 Mar 2016 07:57:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.35
X-Spam-Level:
X-Spam-Status: No, score=-2.35 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=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=gmail.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 8X_xf8DI-j-T; Sun, 13 Mar 2016 07:57:16 -0700 (PDT)
Received: from mail-yw0-x235.google.com (mail-yw0-x235.google.com [IPv6:2607:f8b0:4002:c05::235]) (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 9B73612D64B; Sun, 13 Mar 2016 07:57:16 -0700 (PDT)
Received: by mail-yw0-x235.google.com with SMTP id h129so140998405ywb.1; Sun, 13 Mar 2016 07:57:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:cc; bh=a7sVq+YzqduOM2tKQPiIAOjgizrFfs/NkeblQutqiRU=; b=PXmu6Rutw9jJBa1VzJZRTdZZ+wNyw+OrqLeHoJtIySrEvumwAqe0VDmTk7Ck9zPtcB i5AosXX8Xzlmn+M5BlpglBLJFno/4ZMjJoB9onTKi0/KrwvGYwqWkKTxOMvd9vxhnwnD ITKsXhZ1cQKC+bJ2odHS2tIpA+bsfuA+azZ4F8I5TVDh2NayFC30eBxakFdwqjEf9vo+ GEwKseho8LSlIPFsNxU1ThhPVsgiNcQVsduu04mu4YpBsVZIYOZ0DP5NIK8bPtLqZDuG u+DrazpomViwVmXuO7/XI7NV/rc0+2NjhC0mZtb7LmOpPAfem/XKceZSlefOfmAFYFJH E04Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:date:message-id:subject:from :to:cc; bh=a7sVq+YzqduOM2tKQPiIAOjgizrFfs/NkeblQutqiRU=; b=IJmHF6wXbAz+S6KN1OkIdOd83oB0equfd70KAXmOGQsJmNtKxTmBAwdt9M9hR0rOwH CR8ExBpqj/I+nDxycpI5y44Ye7pE9zAoxmPKS8jH0XycVV59eWP3LzfNrW+moZ08QueA dqSmniWHwyz2McaC9o4McIW8515aslXWjGs8W4w/Pa4sI5JoP1otL1A2D+eAi/2zejQ4 n7202MIYQ3R+4lYaV3ftKzuUxjbtIGWQZJPAMHek/36OkZBUSGNdyh3V6UlwsCXqdlqh 7MYdKXAqP9vYYKl/HKnRr3nr4UL206xgykeO3VjE6pTNV7iZdFZ6VPdVP5NQ8jg5lFQ+ svtg==
X-Gm-Message-State: AD7BkJLNx7Cu7nfVEk+6yd5ioNSstdDJJb7binbPBwajoqMKRr9UvPAskGOjzlg/zd/skLErPbjMilOCGu941g==
MIME-Version: 1.0
X-Received: by 10.129.0.65 with SMTP id 62mr9657590ywa.199.1457881035888; Sun, 13 Mar 2016 07:57:15 -0700 (PDT)
Sender: barryleiba@gmail.com
Received: by 10.83.78.193 with HTTP; Sun, 13 Mar 2016 07:57:15 -0700 (PDT)
Date: Sun, 13 Mar 2016 14:57:15 +0000
X-Google-Sender-Auth: 4DvR2GZRwdRI9DhHAir0D1IvGdg
Message-ID: <CALaySJJP0deDOxCs8YSPr72pfyRUsbZBVE9XO=_4d2AvEhVEtQ@mail.gmail.com>
From: Barry Leiba <barryleiba@computer.org>
To: draft-ietf-lager-specification@ietf.org
Content-Type: text/plain; charset="UTF-8"
Archived-At: <http://mailarchive.ietf.org/arch/msg/lager/whczAPI2hNOnKOWD5kScczlYNPE>
Cc: lager@ietf.org
Subject: [Lager] AD review of draft-ietf-lager-specification-10
X-BeenThere: lager@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Label Generation Rules <lager.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/lager>, <mailto:lager-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lager/>
List-Post: <mailto:lager@ietf.org>
List-Help: <mailto:lager-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lager>, <mailto:lager-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 13 Mar 2016 14:57:20 -0000

Hi, authors, shepherd, and working group.
Here's my AD review of draft-ietf-lager-specification-10.

I have a lot of comments, but most are just editorial things that I'd
like you to consider, but that won't delay last call.  I'm putting the
few substantive questions up here, and I'd like them answered before
we do last call.  Any other comments you can address before last call,
or in parallel with it.

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

These are the questions/comments that I'd like addressed now:

-- Section 5.3.5 --

   Two contexts may be complementary, as in the following example, which
   shows ARABIC LETTER TEH MARBUTA (U+0629) as a variant of ARABIC
   LETTER ALEF MAKSURA (U+0649), but with two different types.

       <char cp="0647" >
         <var cp="0629" not-when="arabic-final" type="blocked" />
         <var cp="0629" when="arabic-final" type="allocatable" />
       </char>

There's an error here: the text says "ALEF MAKSURA (U+0649)", but the
example says "<char cp="0647" >"

-- Section 6.2.5 --
Am I the only one who doesn't understand the distinction between
"difference" and "symmetric difference"?  I had assumed that
"difference" contained all those in one or the other, but not both...
but that seems to be what "symmetric difference" is (you say it's
xor).  Please explain (to me and in the document).

-- Section 6.3.9 --
I'm confused here, so maybe you can help me understand:
It seems to me that in this example, the ranges are defined in terms
of the "mixed-digits" rule, and that the rule is defined in terms of
the ranges.  How does such a self-referential thing work?

-- Section 8.5 --

   Because of symmetry and transitivity, all variant mappings form
   disjoint sets in which each of them is a variant of all other
   members.

I can't sort this one out.  "Each of them" appears to refer to each
set, and I don't know how a set can be a variant of a member.  But if
I instead assume that "each of them" is meant to refer to "all variant
mappings", then I don't understand what the sets have to do with
anything.  I'm also not following how the disjoint sets are formed in
the first place.  Can you explain/clarify?

-- Section 11.1 --
I'm amazed at how many drafts cite RFC 6838, but have not updated
their registration template to conform with it.  Please see RFC 6838,
Section 5.6, and make sure your template includes everything from
there.  Please also post the updated template and draft name to the
<media-types@ietf.org> list for review (this can be done in parallel
with last call, and doesn't have to delay things, but I'd like it to
be done).

-- Section 11.3 --
For Private Dispositions, what is the registration policy?  First Come
First Served?  You need to say.

-- Section 12 --

   If a system that is querying an identifier list (such as a domain
   zone) that uses the rules in this memo, and those rules are not
   implemented correctly, and that system is relying on the rules being
   applied, the system might fail if the rules are not applied in a
   predictable fashion.  This could cause security problems for the
   querying system.

First, I think you have an extra "that" after the parentheses.
Second, can you be more specific than "This could cause security
problems"?  What sort of problems?  How can they be mitigated?  This
needs to be something more than "bad implementations can result in bad
things."

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

These are the editorial things that can wait:

There are a number of number-agreement errors in the document (for
example, "A conditional context rules is a specialized form of WLE").
The RFC Editor will fix these, so I didn't call them out, but you
should be alert to that and fix them when you run into them.

Also throughout the document, you RECOMMEND listing things in
increasing order.  Remembering that RECOMMEND is synonymous with
SHOULD, which means that implementors need to understnd the
consequences of choosing not to abide by what you say, it's usually
best to explain.  In this case, I presume it's to minimize errors such
as duplication that can occur when things aren't sorted.  I suggest
explaining that once, early in the document somewhere.

-- Section 1 --

   This memo describes a method of using Extensible Markup Language
   (XML) to describe the algorithm used to determine whether a given
   identifier label is permitted, and under which conditions, based on
   the code points it contains and their context.

Total nit: Using "describe" twice in the same sentence is awkward, and
"describes a method ... to describe an algorithm ... to determine
whether ..." also feels awkward.  I'd split the sentence, but you can
take this suggestion or leave it, as you see best (I also prefer
"document" to "memo"):

REPLACEMENT PARAGRAPH
   This document specifies a method of using Extensible Markup Language
   (XML) to describe Label Generation Rulesets (LGRs).  LGRs are
   algorithms used to determine whether, and under what conditions, a
   given identifier label is permitted, based on the code points it
   contains and their context.  These algorithms comprise a list of
   permissible code points, variant code point mappings, and a set of
   rules that act on the code points and mappings.  LGRs form part of
   an administrator's policies.  In deploying internationalized domain
   names (IDNs), they have also been known as IDN tables or variant
   tables.
END

-- Section 2 --
I'm rather a stickler for parallel lists.  The format of this list is
set as "<noun> <has this attribute>", but item four is not parallel
("Provide the ability...").  Can you rephrase it so it is?

-- Section 4.2 --
You say that the "meta" and "rules" elements are optional, and we
assume that "data" is required because you don't say it's optional.
It's easy and clearer to say << This is followed by a required "data"
element ...>>

   A document MUST contain exactly one "lgr" element.  Each "lgr"
   element MUST contain zero or one "meta" element, contain exactly one
   "data" element, and contain zero or one "rules" element; and these
   three elements MUST be in that order.

Another total nit, with no response needed: In the second sentence, I
would remove the second and third "contain".

A minor question: Why are you making the order significant?  Why is
that important?

-- Section 4.3 --

   The "meta" element is RECOMMENDED to express metadata associated
   within the LGR.

This can be read two ways: that the presence of "meta" is recommended,
or that it is recommended that "meta" express something.  I think
you're aiming for the former.  I don't think "within" works here, and
I think you mean "with".  Also, the next section title introduces an
element that wasn't previously mentioned, and I have to look at the
section nesting to realize that it's meant to be a sub-element of
"meta".  I suggest this, with a pargraph break after it:

NEW
   The "meta" element expresses metadata associated with the LGR,
   and the element SHOULD be included.  The following subsections
   describe elements that may appear within the "meta" element.
END

I suggest that you put the element names in quotes in the sub-section titles.

-- Section 4.3.5 --

   The attribute SHOULD be a valid MIME
   type.

You correctly call it a "media type" in the first sentence of the
paragraph; we're trying not to use "MIME type" any more.  Please
change this to "The attribute SHOULD be a valid media type from the
IANA Media Types registry."  (You can optionally include a URL for
that: http://www.iana.org/assignments/media-types )

-- Section 4.3.6 --

   The "validity-start" and "validity-end" elements are OPTIONAL
   elements that describe the time period from which the contents of the
   LGR become valid (i.e. are used in registry policy), and the contents
   of the LGR cease to be used.

You're missing something here:

NEW
   The "validity-start" and "validity-end" elements are OPTIONAL
   elements that describe the time period from which the contents of the
   LGR become valid (are used in registry policy), and time when the
   contents of the LGR cease to be used, respectively.
END

One thing I'm unsure of, and that you might want to carify: When I
read "validity-end", I assume that it's the last valid date, and that
the LGR is valid on that date.  But the description says "the time
when the contents of the LGR cease to be used," which implies that
they are NOT valid on that date.  Which is it?

-- Section 4.3.7 --
Are there global "Unicode properties", or are we always talking about
properties of a specific Unicode character?  You use "character
properties" and "Unicode properties" apparently interchangably.
Please pick one throughout the document (I think "character
properties" is better) and use it consistently, lest people think
you're talking about two different things.

There's a spurious "in" in the first sentence of the second paragraph.

-- Section 5 --

   Discrete permissible code points or code point sequences are declared
   with a "char" element, e.g.

You neither show nor explain how code point sequences are declared
with a "char" element.  I suggest a forward reference, so readers
don't wonder, as I did:

NEW
   Discrete permissible code points or code point sequences are declared
   with a "char" element.  See Section 5.1 for the description of
   sequences.  A single code point example:
END

Or maybe you like this better?:

NEW
   Discrete permissible code points or code point sequences (see Section
   5.1) are declared with a "char" element.  A single code point example:
END

Also, you say that 'A "range" element has no child elements,' but you
say nothing about "char" elements.  Maybe add 'A "char" element may
have cild elements; see the subsections below for further
information.' ?

   Code points must be expressed in uppercase, hexadecimal, and zero
   padded to a minimum of 4 digits.  In other words, they are
   represented according to the standard Unicode convention but without
   the prefix "U+".

I think you kind of bury the lede here, and I would reverse the order
of the description (and, as it's a protocol requirement, I'd use
"MUST"):

NEW
   Code points MUST be represented according to the standard
   Unicode convention but without the prefix "U+": they are
   expressed in uppercase hexadecimal, and are zero-padded
   to a minimum of 4 digits.
END

-- Section 5.1 --

   In addition, doing so allows the choice of
   either specifying a prohibited or a required context.

You need to factor out "specifying" (or repeat it):

NEW
   In addition, doing so allows the choice of
   specifying either a prohibited or a required context.
END

The last paragraph doesn't belong in this section (it has nothing to
do with sequences).  Please move it up to the end of Section 5.

-- Section 5.2 --

May I suggest this?:

OLD
   The content condition is met when
   the rule specified in the "when" attribute is matched.
   Alternatively, a "not-when" attribute may be used for a rule that
   must not be matched.
NEW
   The content condition is met when
   the rule specified in the "when" attribute is matched or when
   the rule specified in the "not-when" attribute fails to match.
END

   In the following example no digit from either range must
   occur in a label that mixes digits from both ranges

"no digit must occur" is hard to parse; please make it "may occur", or
"is allowed" (and I'd put a comma after "ecample").

   If a contextual condition is not satisfied for any code point in a
   label, the label is invalid, see Section 7.5.

This is ambiguous: it can be read to mean that all code points have to
fail in order to make the label invalid (if there is no code point in
the label for which the contextual condition is satisfied).  Let's
rephrase to eliminate the ambiguity:

NEW
   If a label contains one or more core points that fail to satisfy
   a contextual condition, the label is invalid (see Section 7.5).
END

-- Section 5.3.2 --

   Making this relation explicit allows a generalization of the "type"
   attribute from directly reflecting dispositions to a more
   differentiated intermediate value that used in the resolution of
   label disposition.

Is there a missing or extra word around "value that used"?

-- Section 5.3.5 --

   While only a single "when" or "not-when" attribute MUST be applied to
   any "var" element, multiple "var" elements using the same mapping,
   but different "when" or "not-when" attributes MAY be specified.  The
   combination of mapping and conditional context defines a unique
   variant.

I don't think you mean the MUST the way it seems here.  You're not
saying that every "var" MUST have a "when" or a "not-when".  Rather,
you've phrased a MUST NOT as a MUST.  Let's turn it back into MUST
NOT:

NEW
   While a "var" element MUST NOT contain multiple conditions (it
   is only allowed a single "when" or "not-when" attribute), multiple
   "var" elements using the same mapping MAY be specified with
   different "when" or "not-when" attributes.  The combination of
   mapping and conditional context defines a unique variant.
END

-- Section 5.5 --

   Formally, it MUST correspond to
   the XML 1.0 Nmtoken (Name token) production.

Because conforming to Nmtoken is a requirement, it would be good to
have a citation to where in the XML spec Nmtoken is defined.

-- Section 6.2.5 --
I don't understand why "intersection" is limited to two classes: the
intersection of more than two sets is as well defined as the union is.
Please explain (at least to me).

-- Section 6.3 --
Pet peeve (sorry): Correct use of "comprises" is as a symonym of "is
composed of"... so "is comprised of" is, in correct usage, wrong and
nonsensical.  I know this is a lost battle, but I'd feel oh, so much
better if you would change "is comprised of" in Sections 6.3 and
Appendix A to "comprises", so "Each rule is comprised of a series of
matching operators..."

-- Section 7 and subsections --
This was a real slog to get through, and I'm quite sure I didn't
follow a lot of it.  I have to take your word that people who are
actually doing this stuff can follow it and get it right, including
all the variant stuff, including the reflexive variants and the
any-variant vs only-variants vs everything else.  I just can't imagine
needing to do anything complicated with this and actually getting it
right.  (This is just a comment; there's nothing actionable here.)

-- Section 9 --
Nit: in the first sentence, it's "cater to", not "cater for".

The second paragraph is confusing because of the "these" and "those"
and "this", and even the first paragraph suffers from a "these".  The
problem is this: does "these formats" refer to the ones in the cited
RFCs or the ones in this document?  See what I mean?

How about this (and did I get this right?):

NEW
   Both [RFC3743] and [RFC4290] provide different grammars for IDN
   tables.  The formats in those documents are unable to fully cater
   to the increased requirements of contemporary IDN variant policies.

   This specification provides a superset of the functionality
   provided by the older IDN table formats, so any table expressed
   in those formats can be expressed in this new format.  Automated
   conversion can be conducted between tables conformant with the
   grammar specified in each document.
END

-- Section 10 --
Transmission is not transmitted.  The LGR is.

OLD
   Transmission of a well-formed LGR in accordance with this
   specification SHOULD be transmitted with a media type of
   "application/lgr+xml".
NEW
   Well-formed LGRs that comply with this specification SHOULD be
   transmitted with a media type of "application/lgr+xml".
END

-- Section 11.1 --

   The media type "application/lgr+xml" should be registered to denote
   transmission of label generation rulesets that are compliant with
   this specification, in accordance with [RFC6838].

The last phrase is another dangling modifier: to what does it refer?
Put it closer to that:

NEW
   The media type "application/lgr+xml" should be registered in
   accordance with [RFC6838] as the type for transmission of label
   generation rulesets that are compliant with this specification.
END

-- Appendix A --

   In practice, any LGR that includes the hyphen might also contain
   rules invalidating any labels beginning, ending, and containing a
   hyphen in the third and fourth positions as required by [RFC5891].

Mm, then why didn't you put those in the example?  It seems to me that
getting the rules right is the hard part, and that using real-world
examples when you can would be helpful.

-- 
Barry, ART Director