Re: [regext] WG LAST CALL: draft-ietf-regext-rdap-reverse-search

Mario Loffredo <mario.loffredo@iit.cnr.it> Thu, 28 April 2022 08:58 UTC

Return-Path: <mario.loffredo@iit.cnr.it>
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 877B7C1595FB for <regext@ietfa.amsl.com>; Thu, 28 Apr 2022 01:58:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.746
X-Spam-Level:
X-Spam-Status: No, score=-3.746 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-1.857, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FgbGoR7rv2rg for <regext@ietfa.amsl.com>; Thu, 28 Apr 2022 01:58:48 -0700 (PDT)
Received: from smtp.iit.cnr.it (mx4.iit.cnr.it [146.48.58.11]) by ietfa.amsl.com (Postfix) with ESMTP id 08E57C1595E6 for <regext@ietf.org>; Thu, 28 Apr 2022 01:58:46 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by smtp.iit.cnr.it (Postfix) with ESMTP id C4F81B80851 for <regext@ietf.org>; Thu, 28 Apr 2022 10:58:44 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mx4.iit.cnr.it
Received: from smtp.iit.cnr.it ([127.0.0.1]) by localhost (mx4.iit.cnr.it [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sqPrAkf5nGWa for <regext@ietf.org>; Thu, 28 Apr 2022 10:58:41 +0200 (CEST)
Received: from [192.12.193.108] (pc-loffredo.staff.nic.it [192.12.193.108]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by smtp.iit.cnr.it (Postfix) with ESMTPSA id 221F4B802E5 for <regext@ietf.org>; Thu, 28 Apr 2022 10:58:41 +0200 (CEST)
Content-Type: multipart/alternative; boundary="------------XHXNXsCdhL54R0Lbi0hK3RF9"
Message-ID: <80667890-e6c6-1e46-06d8-d7b88ca22805@iit.cnr.it>
Date: Thu, 28 Apr 2022 10:56:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0
To: regext@ietf.org
References: <1A8E0C83-5F28-4387-8D05-EAAB8935E811@antoin.nl> <Yl1HJp9U/6rZeOVs@TomH-802418> <a895c102-8780-7389-2b0f-0ed26d78ad04@iit.cnr.it> <YmIsGKclMSpvuAt1@TomH-802418> <9850674f-7328-1688-8051-d91335785fa4@iit.cnr.it> <YmXVdlPZpqVOlQUP@TomH-802418> <458b0500-c684-ae38-cb03-0017bc5c8d4f@iit.cnr.it> <Ymnjs4DFFs+omYnr@TomH-802418>
From: Mario Loffredo <mario.loffredo@iit.cnr.it>
In-Reply-To: <Ymnjs4DFFs+omYnr@TomH-802418>
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/_1DKheKf_EGX-_YeOmrDx5zxHLo>
Subject: Re: [regext] WG LAST CALL: draft-ietf-regext-rdap-reverse-search
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.34
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: Thu, 28 Apr 2022 08:58:52 -0000

Hi Tom,

I really appreciated your effort in grouping the rdapConformance tags 
defined so far because I have always thought that there should be a 
document addressing the relationship between the rdapConformance tags  
and the proposed extensions.

Therefore, I encourage you to submit such document to the WG and I'll 
support its adoption.

My opinion is that the part of the rdapConformance tag about the version 
number (e.g. _0 or _level_0) should be left out from the possible rule 
tying the tag and the related extension for the following reasons:

1) A version number can be (normally is) a sequence of numbers separated 
by dots.  The rdap-redacted document presents a similar case (i.e. 
"redacted_0.1").

But a label including dots used as either the prefix or the exact match 
of an RDAP response extension couldn't be deserialized 
straightforwardly. Nothing particularly difficult to work around by 
using annotations or custom deserialization but why should we introduce 
such a complication?

2) Supposing that a subsequent version might change the structure of an 
existing response extension (maybe by adding some members), the backward 
compatibility should be guaranteed as much as possible.

It seems to me that including the version number as part of the name of 
a JSON field could cause breaking changes in the response structure.

3) Any subsequent version of an extension to requests and responses 
would cause both path segments and response fields to be renamed each 
time even if the update involved only one of them.


My conclusion is that, at least as regards response extensions, your 
rule could be arranged as in the following:


/- An rdapConformance tag contains the extension identifier and, 
optionally, the version number separated by "_" or "_level_" //
/

/- New fields (if present) must be prefixed with the extension identifier/


Finally, I'm very doubtful if it's worth having a similar rule about new 
paths but, at the same time, very curious to know others' opinions on 
this topic.

If there was consensus on applying your rule, the rdap-reverse-search 
document should be slightly changed, instead the rdap-openid document 
should be updated much more.


Best,

Mario


Il 28/04/2022 02:45, Tom Harrison ha scritto:
> Hi Mario,
>
> On Tue, Apr 26, 2022 at 08:17:18AM +0200, Mario Loffredo wrote:
>> Il 25/04/2022 00:55, Tom Harrison ha scritto:
>>> The structure looks fine to me, but assuming that the
>>> "reverse_search_properties" field name is prefixed with
>>> "reverse_search" because of the "reverse_search_0" rdapConformance
>>> value, then either the field name should be
>>> "reverse_search_0_properties", or the rdapConformance value should
>>> become "reverse_search", so that the field is prefixed with the entire
>>> rdapConformance value.
>>>
>>> (Semi-related: on looking at the relevant rdapConformance content in,
>>> 7480 has (section 8.1):
>>>
>>>       The extension identifier is used as a prefix in JSON names and as
>>>       a prefix of path segments in RDAP URLs.
>> [ML] According to the response extension example in RFC9083 (see
>> "lunarNIC"), the prefix does not include the version info (in that case
>> "_level_0").
>>
>> Therefore, it seems better to call the metadata field
>> "reverse_search_properties".
>>
>> The same rule has been followed for the "redcated" extension.
> I'm not sure this is the right way to go.  The current set of
> registered extensions can be grouped together like so:
>
>   - 1.
>      - rdapConformance is an exact match for the extension identifier
>      - 1.1
>          - New fields are prefixed with the extension identifier
>          - New paths are prefixed with the extension identifier
>              - arin_originas0
>      - 1.2
>          - New fields are prefixed with the extension identifier
>          - No new paths are defined
>              - cidr0
>              - paging
>              - sorting
>              - subsetting
>      - 1.3
>          - rdapConformance is an exact match for the extension identifier
>          - No new fields are defined
>          - No new paths are defined
>              - icann_rdap_response_profile_0
>              - icann_rdap_technical_implementation_guide_0
>              - nro_rdap_profile_0
>              - nro_rdap_profile_asn_flat_0
>              - nro_rdap_profile_asn_hierarchical_0
>              - rdap_objectTag
>              - redirect_with_content
>
>   - 2.
>      - rdapConformance is prefixed with the extension identifier
>      - 2.1
>          - New fields are prefixed with the extension identifier
>          - New paths are prefixed with the extension identifier
>              - fred
>      - 2.2
>          - New fields are prefixed with the extension identifier
>          - No new paths are defined
>              - artRecord
>              - platformNS
>              - regType
>
> The extensions in category 2 are not registered correctly, inasmuch as
> the rdapConformance value used for the extension must be an exact
> match for the extension identifier in the registry, as opposed to
> being prefixed with the extension identifier (see e.g.
> https://www.rfc-editor.org/errata/eid6310).  If the rdapConformance
> value in each of those cases were updated to be the extension
> identifier, then each extension in category 2 would fall into the
> corresponding subcategory in category 1, and the rules followed by
> every extension would then be:
>
>   - rdapConformance is an exact match for the extension identifier
>   - New fields (if present) are prefixed with the extension identifier
>   - New paths (if present) are prefixed with the extension identifier
>
> which aligns (IMHO) with the previously-quoted text from RFC 7480, as
> well as the following:
>
>      6.  Extensibility
>      
>         For extensibility purposes, this document defines an IANA
>         registry for prefixes used in JSON [RFC7159] data serialization
>         and URI path segments (see Section 8).
>
> as well as guaranteeing that different extensions occupy different
> namespaces, which has other positive effects (e.g. a client seeing an
> unknown rdapConformance value could extract all fields/paths prefixed
> with that rdapConformance value from the response, for further review
> by a user).
>
> It's true that the above reading does not accommodate the use of
> lunarNIC in RFC 9083, where the rdapConformance value includes
> _level_0 but the fields are prefixed with lunarNIC only.  However, an
> alternative set of rules which covered the use of lunarNIC in that
> document would be:
>
>   - rdapConformance is an exact match for the extension identifier
>   - New fields are prefixed with an arbitrary string, defined in the
>     extension
>   - New paths are prefixed with an arbitrary string, defined in the
>     extension
>
> which is considerably less useful for clients.  Since the lunarNIC
> case seems like the exception rather than the rule, I think it makes
> sense to use the former reading, at least for extensions that are yet
> to be finalised.  (Assuming the lunarNIC text is incorrect, possibly
> it can be addressed by an erratum, and even if the category 2
> extensions can't be changed now, at least the set of extensions in
> that category doesn't have to expand.)
>
> -Tom

-- 
Dr. Mario Loffredo
Technological Unit “Digital Innovation”
Institute of Informatics and Telematics (IIT)
National Research Council (CNR)
via G. Moruzzi 1, I-56124 PISA, Italy
Phone: +39.0503153497
Web:http://www.iit.cnr.it/mario.loffredo