[Lager] Fwd: AD review of draft-ietf-lager-specification-10
Asmus Freytag <asmusf@ix.netcom.com> Mon, 14 March 2016 07:35 UTC
Return-Path: <asmusf@ix.netcom.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 2D7FA12D96C; Mon, 14 Mar 2016 00:35:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.719
X-Spam-Level:
X-Spam-Status: No, score=-2.719 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); domainkeys=pass (384-bit key) header.from=asmusf@ix.netcom.com header.d=ix.netcom.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 ZBdmOPPz-qnP; Mon, 14 Mar 2016 00:35:13 -0700 (PDT)
Received: from elasmtp-mealy.atl.sa.earthlink.net (elasmtp-mealy.atl.sa.earthlink.net [209.86.89.69]) by ietfa.amsl.com (Postfix) with ESMTP id CDDFC12D939; Mon, 14 Mar 2016 00:35:12 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=dk20050327; d=ix.netcom.com; b=O0IkQeueC2zCFBpd7ckfqIPw+AkID7txWq5Z/lJzMUm7nIQlc6jOWly/nComfdNV; h=Received:Subject:References:From:To:X-Forwarded-Message-Id:Message-ID:Date:User-Agent:MIME-Version:In-Reply-To:Content-Type:X-ELNK-Trace:X-Originating-IP;
Received: from [71.35.115.182] (helo=[192.168.1.104]) by elasmtp-mealy.atl.sa.earthlink.net with esmtpa (Exim 4.67) (envelope-from <asmusf@ix.netcom.com>) id 1afN1c-0006gp-V8; Mon, 14 Mar 2016 03:34:49 -0400
References: <CALaySJJP0deDOxCs8YSPr72pfyRUsbZBVE9XO=_4d2AvEhVEtQ@mail.gmail.com>
From: Asmus Freytag <asmusf@ix.netcom.com>
To: lager WG <lager@ietf.org>, Barry Leiba <barryleiba@computer.org>, draft-ietf-lager-specification@ietf.org
X-Forwarded-Message-Id: <CALaySJJP0deDOxCs8YSPr72pfyRUsbZBVE9XO=_4d2AvEhVEtQ@mail.gmail.com>
Message-ID: <56E669B1.5090108@ix.netcom.com>
Date: Mon, 14 Mar 2016 00:35:13 -0700
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0
MIME-Version: 1.0
In-Reply-To: <CALaySJJP0deDOxCs8YSPr72pfyRUsbZBVE9XO=_4d2AvEhVEtQ@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------030003020505080800040806"
X-ELNK-Trace: 464f085de979d7246f36dc87813833b2857e9f10d2205ddce1e5a427878d8e70117822dd40f9afdd350badd9bab72f9c350badd9bab72f9c350badd9bab72f9c
X-Originating-IP: 71.35.115.182
Archived-At: <http://mailarchive.ietf.org/arch/msg/lager/KnXJP-377JmCyL3-hhL7Rz0nY3g>
Subject: [Lager] Fwd: 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: Mon, 14 Mar 2016 07:35:17 -0000
All, here are my notes describing the changes in response to the AD review They do not cover all points raised by Barry - (I've left alone most of the ones that involved sections that Kim wrote, except for some minor editorial fixes). The result is uploaded to the GitHub site for Kim to review and add his own changes. A./ -------- Forwarded Message -------- Subject: [Lager] AD review of draft-ietf-lager-specification-10 Date: Sun, 13 Mar 2016 14:57:15 +0000 From: Barry Leiba <barryleiba@computer.org> To: draft-ietf-lager-specification@ietf.org CC: lager@ietf.org 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" >" ==> changed 0649 to 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). ==> added (subtraction) after "difference" -- 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? ==> Moved 6.3.9 in before section 6.4.1. Touched surrounding text to make it flow and added further clarification. Also distinguishing "context rule" (anything invoked via "when") from parametrized context rule (anything using "anchor") Affected: sections 6.4, new 6.4.1 (old 6.3.9), new 6.4.2 (old 6.4.1) -- 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? ==> Because of symmetry and transitivity, all variant mappings form disjoint sets. In each of these sets, the source and target of each mapping are also variants of the sources and targets of all the other mappings. " (and some rewording of the remainder) ------------------------ 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. ==> fixed the one mentioned 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. ==> added that for the recommendation to list class elements in order -- 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 ==> incorporated as is. -- 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? ==> matched preceding "An LGR needs to .." Not super elegant, but parallel. -- 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 ...>> ==> while we state that everything is required unless noted, in this case noting the required nature of <data> seems fine. 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". ==> done A minor question: Why are you making the order significant? Why is that important? ==> see discussion - no text changes so far. -- 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". ==> "within" --> "part of" and associated changes. I also added the note: Metadata allow the LGR document to become fully self-documenting, for example if rendered in a human readable format by an appropriate tool. (I have written such a tool for LGR presentation and by picking up the metadata it can eliminate the need secondary documents for all but the most complex LGRs) 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 ==> incorporated I suggest that you put the element names in quotes in the sub-section titles. ==> not done - we played with "decorating" the section headers but abandoned that. My personal preference was to have all <elements> and "attributes" decorated as shown in this sentence. -- Section 4.3.7 -- Are there global "Unicode properties", or are we always talking about properties of a specific Unicode character? ==> The Unicode standard may drop "character" because in its context this is understood, likewise, when it drops the qualifier "Unicode" in its context it may be understood. 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 are not that many instances so, for the avoidance of doubt, I resolved all of them to "Unicode character properties" except if the source (Unicode Standard) appears in the same sentence. We want to be very specific that any other source of character properties cannot be used with the "property" attribute. There's a spurious "in" in the first sentence of the second paragraph. ==> fixed -- 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 ==> good suggestion. 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 ==>OK ==>Also added language why we recommend ordering the Char entries. -- 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 ==> OK 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. ==>moved. -- 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 ==>OK -- 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"? ==> yep. Found a few spare ones and put them in. -- 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 ==>OK -- 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. ==> not done - could use help locating -- 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). ==> we started out allowing only binary (or unary) operators. Unions from more than two sets proved a rather common case, so we dropped that restriction. However, internally in my tool, for example, I simply record that as a fully parenthesized expression involving pairs of classes. In over a year of using this schema for writing 40 or so LGRs, I've made only very limited use of any other operator. So the use case seems to not be there. (And I don't think I've used intersection at all) What I observe is that the situation where you define "consonants" and "vowels" is more common, than defining "letters" and then subtracting the consonants to get the vowels. But, having intersection, even if only pairwise, means that if some language needs it, any type of set operation can be composed, so if that language is notationally a bit more complex, it's not crippling. -- 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..." ==> hope you feel better now -- 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". ==> there seem to be regional differences in prepositions, I changed the verb 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 ==> OK -- 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 ==> OK -- 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. ==> because it's supremely ugly :), but I've put it in. -- Barry, ART Director _______________________________________________ Lager mailing list Lager@ietf.org https://www.ietf.org/mailman/listinfo/lager
- [Lager] AD review of draft-ietf-lager-specificati… Barry Leiba
- Re: [Lager] AD review of draft-ietf-lager-specifi… Marc Blanchet
- Re: [Lager] AD review of draft-ietf-lager-specifi… Asmus Freytag
- Re: [Lager] AD review of draft-ietf-lager-specifi… Martin J. Dürst
- [Lager] Fwd: AD review of draft-ietf-lager-specif… Asmus Freytag
- Re: [Lager] AD review of draft-ietf-lager-specifi… Barry Leiba
- Re: [Lager] AD review of draft-ietf-lager-specifi… Barry Leiba
- Re: [Lager] AD review of draft-ietf-lager-specifi… Asmus Freytag
- Re: [Lager] AD review of draft-ietf-lager-specifi… Kim Davies
- Re: [Lager] AD review of draft-ietf-lager-specifi… Marc Blanchet
- Re: [Lager] AD review of draft-ietf-lager-specifi… Alexey Melnikov