Re: [regext] Final review of draft-ietf-regext-org-06

"Linlin Zhou" <zhoulinlin@cnnic.cn> Fri, 25 May 2018 01:23 UTC

Return-Path: <zhoulinlin@cnnic.cn>
X-Original-To: regext@ietfa.amsl.com
Delivered-To: regext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 57739126C2F for <regext@ietfa.amsl.com>; Thu, 24 May 2018 18:23:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.89
X-Spam-Level:
X-Spam-Status: No, score=-1.89 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01] autolearn=ham autolearn_force=no
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 VkIoPTlwb-Ms for <regext@ietfa.amsl.com>; Thu, 24 May 2018 18:23:37 -0700 (PDT)
Received: from cnnic.cn (smtp13.cnnic.cn [218.241.118.13]) by ietfa.amsl.com (Postfix) with ESMTP id 2D8A61241F5 for <regext@ietf.org>; Thu, 24 May 2018 18:23:35 -0700 (PDT)
Received: from Admin-THINK (unknown [218.241.103.128]) by ocmail02.zx.nicx.cn (Coremail) with SMTP id AQAAf0ApMPCMZQdbk9b7AA--.20925S2; Fri, 25 May 2018 09:23:24 +0800 (CST)
Date: Fri, 25 May 2018 09:23:22 +0800
From: Linlin Zhou <zhoulinlin@cnnic.cn>
To: Pieter Vandepitte <pieter.vandepitte@dnsbelgium.be>, jgould <JGould@verisign.com>
Cc: regext <regext@ietf.org>
References: <E833D336-8BA0-4EF5-ACF1-87CB3E0F9F63@dnsbelgium.be>, <887D9DD8-85BC-4BFB-A637-2EED0E35FF07@verisign.com>, <2D6A3FA4-374C-49BA-A1D2-A0EEC0F5194F@dnsbelgium.be>
X-Priority: 3
X-GUID: 629B9602-E777-4297-9355-E90F01E37598
X-Has-Attach: no
X-Mailer: Foxmail 7, 2, 7, 21[cn]
Mime-Version: 1.0
Message-ID: <201805250923220432702@cnnic.cn>
Content-Type: multipart/alternative; boundary="----=_001_NextPart100263851055_=----"
X-CM-TRANSID: AQAAf0ApMPCMZQdbk9b7AA--.20925S2
X-Coremail-Antispam: 1UD129KBjvJXoW3Cr4kXF4ftF13GFWftw18Zrb_yoWDArWkpF Wft3yUAFWDXry7Xw4kZw47W34YyFs3JFZrGrnxXw1qyFn8KF1vvF10ya1YvFW7urZYq3s0 qw4jy3s3Can8uaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUmqb7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwV C2z280aVCY1x0267AKxVWxJr0_GcWle2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG67k0 8I80eVW5JVWrJwAqx4xG64kEw2xG04xIwI0_Jr0_Gr1l5I8CrVCF0I0E4I0vr24lYx0E2I x0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8 JwACjcxG0xvY0x0EwIxGrwACY4xI67k04243AVAKzVAKj4xxM4xvF2IEb7IF0Fy26I8I3I 1lc2xSY4AK67AK6w4l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2Iq xVAqx4xG67AKxVWUGVWUWwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r 1Y6r17MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY 6xkF7I0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWrZr1j6s0DMIIF0xvEx4A2js IE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_Gr1l6VACY4xI67k04243AbIY CTnIWIevJa73UjIFyTuYvjxUgO6JUUUUU
X-CM-SenderInfo: p2kr3zplqox0w6fq0xffof0/
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/CDvttMMOgXRbD7LRZr07lfGQcOo>
Subject: Re: [regext] Final review of draft-ietf-regext-org-06
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Registration Protocols Extensions <regext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/regext>, <mailto:regext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext/>
List-Post: <mailto:regext@ietf.org>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/regext>, <mailto:regext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 May 2018 01:23:41 -0000

Yes , I will merge all the comments into the next version. Thanks for review.

Regards,
Linlin


zhoulinlin@cnnic.cn
 
From: Pieter Vandepitte
Date: 2018-05-25 02:01
To: Gould, James
CC: regext@ietf.org
Subject: Re: [regext] Final review of draft-ietf-regext-org-06
I'm sorry to not have answered your questions up until now... @Linlin, do you take into account the remarks of James too?


On 21 May 2018, at 15:40, Gould, James <JGould@verisign.com> wrote:

Pieter,
 
Thanks for doing the detailed review.  I’ll let Linlin comment on the proposed wording changes.  I have feedback on some of the items below:
 
 
===
 
3.4.  Organization Status Values
 
I think you forgot to specify that
 
"linked" status MUST NOT be combined with either "clientLinkProhibited" or "serverLinkProhibited" status.
 
Or is this in case you want to block linking while there are still links? If so, it's useful to specify this:
 
A client or server MAY combine linked with either clientLinkProhibited or serverLinkProhibited if new links must be prohibited [...]
 
 
The purpose of the [client/server]LinkProhibited statuses are to prohibit additional links without impacting the existing links, so you second proposal would be the most appropriate.  

Ok

 
 
=== 
 
3.5.  Role Status Values
 
[…]
 
o  ok: This is the normal status value for an role that has no
      pending operations or prohibitions.  This value is set and removed
      by the server as other status values are added or removed.
 
⇒ There are no pending statuses for role statuses, so remove that part
 
Also here, I think you forgot to specify that
 
"linked" status MUST NOT be combined with either "clientLinkProhibited" or "serverLinkedProhibited" status.
 
This is related to the proposal on 3.4 above.  There is no need for the sentence “"linked" status MUST NOT be combined with either "clientLinkProhibited" or "serverLinkedProhibited" status.” since the [client/server]LinkProhibited statuses only prohibit future links.

Ok

 
 
4.1.2.  EPP <info> Command
 
Should we mention what happens in case the querying client is not the sponsoring client, or is too much policy?
 
Yes, I believe that returning the organization object and what organization object attributes to return is up to server policy.  Maybe it makes sense to add a sentence related to it being up to server policy.  


That would be great

 
[…]
   When an <info> command has been processed successfully, the EPP
   <resData> element MUST contain a child <org:infData> element that
   identifies the organization namespace.  The <org:infData> element
   contains the following child elements:
[…]
   o  Zero or more <org:status> elements that contains the operational
      status of the organization, as defined in Section 3.4.
 
⇒ this conflicts with the XML schema and 3.4, which states:
   An organization object MUST always have at least one associated
   status value.  The default value is "ok".
 
I agree that it should it should be “One or more <org:status> elements...” to match the XML schema.

Ok

 
 4.2.5. EPP <update> Command
[...]
Zero or more <org:role> elements that contains the role type, role
      statuses and optional role id of the organization
 
In my opinion the draft is still vague about which role sub-element of role is used for matching the role to be removed (I guess it is the role type, as it is the only required element). I would mention that:
 
E.g. in secDNS it is mentioned very explicit;
 
      The <secDNS:keyData> element is part of the Key Data Interface and
      is used to uniquely define the key data to be removed, by using
      all four elements -- <secDNS:flags>, <secDNS:protocol>, <secDNS:
      alg>, and <secDNS:pubKey> -- that are guaranteed to be unique.
      There can be more than one DS record created for each key, so
      removing a key could remove more than one DS record.
 
The role type is what is unique for the organization’s role.  There cannot be duplicate role types for an organization.  It would be clearer to specify “A <org:type> element contains the role type of the organization, as defined in Section 3.2.  The role type uniquely identifies the role to update.”.  

It would have helped me if that would have been included. It'd be nice if this text is added.

 
Good instructions for how to remove a contact, I would also add these instructies to parentId, voice, fax email and url:
An empty <org:___> element is supported to allow a type of
      ___ to be removed
 
===
 
Maybe it would be best to adopt the language from IETF-98 “Contact Postal Info Elements Discussion”, which included the proposal:
 
The <contact:chg> sub-elements do have replace semantics
Existing sub-element data deleted first and then set with updated data.
<contact:postalInfo> types treated independently
Exclusion of a <contact:postalInfo> type does not implicitely delete it.
<contact:postalInfo> type deleted via empty element
<contact:postalInfo type=”int/> or <contact:postalInfo type=”loc”/>
 
The elements supported by the <org:add> and <org:rem> are the list elements <org:contact>, <org:role>, and <org:status>.  The individual attributes (postalInfo can be considered two separate attributes “int” and “loc”) are updated using the <org:chg>.  Maybe the introduction sentence “An OPTIONAL <org:chg> element containing the following element, where at least one child element MUST be present”, can be revised to clarify how the simple elements and complex child elements added, updated, or removed via the <org:chg> element.  How about something like “An OPTIONAL <org:chg> element used to add, update, and delete non-list organization attributes.  An empty <org:chg> sub-element (<org:parentId>, <org:voice>, <org:fax>, <org:email>, and <org:url>, <org:postalInfo> with “type” attribute) is used to remove it and a non-empty sub-element is used to replace it.  For the <org:postalInfo> complex sub-element, the types (“int” and “loc”) are treated independently with replace semantics, where the <org:postalInfo> sub-element data is deleted first and then set with the update data.  The <org:chg> element MUST contain one of the following child elements:”.     
 
There is one big item with my proposal in supporting the removal of the simple <org:postalInfo> sub-elements using empty elements in that the XSD does not support empty elements with the following type definitions:
 
parentId - eppcom:clIDType
  <simpleType name="clIDType">
    <restriction base="token">
      <minLength value="3"/>
      <maxLength value="16"/>
    </restriction>
  </simpleType>
voice – org: e164Type
  <complexType name="e164Type">
            <simpleContent>
              <extension base="org:e164StringType">
                        <attribute name="x" type="token" />
              </extension>
            </simpleContent>
  </complexType>
  <simpleType name="e164StringType">
            <restriction base="token">
              <pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?" />
              <maxLength value="17" />
            </restriction>
  </simpleType>
fax – org:e164Type
Same as voice
email – eppcom:minTokenType
  <simpleType name="minTokenType">
    <restriction base="token">
      <minLength value="1"/>
    </restriction>
  </simpleType>
url – anyURI
Does support empty element
 
The alternative is to make removal explicit with the <org:rem> element by supporting a list of empty elements to remove instead of using the <org:chg> element with empty elements.  For example, the <org:rem> element can support removing elements from the list attributes and can be used to remove the non-list attributes with empty elements (<org:parentId>, <org:voice>, <org:fax>, <org:email>, and <org:url>, <org:postalInfo> with “type” attribute).  This is different from the semantics for RFC 5733.  If this is the case, should the <org:add> element only be capable of adding list items or should it be used to add non-existing attributes. 
 
Thoughts? 
 

To be honest, I think it is OK as it is now. An empty postalInfo to remove it, otherwise, to update it, provide the complete contents of the postalInfo (if I understand it well). It's pretty intuitive


 
===
 
Shouldn't we have a section like RFC 5731, 5732, 5733 regarding offline review of requested actions?
 
===
 
Yes, that makes sense.
 
===
 
Do we need to remove the Change Log section?
 
===
 
The change log will get removed prior to publication by the RFC Editor. 
 
===
 
XSD maxOccurs opinion:
 
<element name="status"
            type="org:statusType" maxOccurs="9"/>
 
Why 9? I would set this to unbounded. A client may send an org create with 10 times clientDeleteProbited. It should just work.
 
I thought the same thing, but if you do the math, the maximum number of unique statuses is 9.  The statuses are unique and there should be no duplicates.  If you look at the RFC 5733, the statuses are defined with a maximum, which is being mirrored here based on the unique set of organization statuses.   

I can live with a 9

 
 
===
 
XSD sequence anti pattern
 
 
we keep on copying old XML schema's, and hence, for data structures we keep on using xsd:sequence (ordered) instead of xsd:choice. If order is not important (which is the case in this draft and a lot of other RFCs), don't enforce it. It makes implementation and testing often unnecessarily harder.
 
I don’t view the use of XSD sequence as an anti pattern.  I believe the sequence makes implementation and testing easier and not harder. 

I'm trying to understand how it makes implementation and testing better. When parsing XML without XML to object binding libraries? 


 
 
===
 
Model issue: because org:name is part of org:postalInfo, and org:addr is also part of org:postalInfo but required, it is impossible create an organization with a name, but without address... I think this must be possible as this was one of the first discussions in the mailing list: reseller in a separate object vs. or simply add ID and name to a domain. 
 
Proposal: move org:name to a higher level (it's not the name belonging to the address of the org, but the name belonging to the org itself)
 
How about simply making the addr element in the org:postalInfoType optional (minOccurs=”0”) and add OPTIONAL to the references to <org:addr> in the text?


This would be a huge improvement. @Linlin, can you change this in both XSD and text?

Kind regards

Pieter