Hi,
please find my thoughts below.
Il 23/05/2022 21:26, Gould, James ha scritto:
Tom,
In reviewing the thread below, I'll summarize my thoughts below that
goes along with my response with Approach C to Jasdip:
1. It looks like there is consensus that the existing language in the
RDAP RFCs is unclear and there is a mix of cases that exist in the
RDAP Extension Registry. Creating something like the Guidelines
for Extending the Extensible Provisioning Protocol (EPP), in RFC
3735, is needed for RDAP.
[ML] Absolutely. Have always supported that. Such guidelines should be
written as soon as we reach a consensus on a first draft proposal since
this discussion is blocking the progress of the WG documents about RDAP
extensions.
1. It looks like there is consensus that the RDAP Extension Registry
ensures uniqueness of the identifiers and prefixes used by the
extensions for the rdapConformance, URI path segments, and JSON
response members. I believe the values of the “objectClassName”
needs to be included as well to support the definition of new RDAP
objects.
[ML] Agreed. I'm a bit doubtful about including query parameters as
proposed by Jasdip since it would break RFC8977 and RFC8982. This is
another reason why I don't support Approach A.
1.
2. It doesn’t look like there was an explicit attempt to define a
namespace feature in RDAP, like what exists with XML namespace
URIs and XML namespace prefixes. The only version signaling is
handled by the rdapConformance member of the JSON response. Based
on the practice that we followed with EPP extensions, we’ve been
using pointed version numbers (“0.1”, “0.2”, “0.N”) for the
namespace URIs up until the draft passed WGLC, resulting in
bumping the version to “1.0”. Supporting pointed version numbers
has proven to be useful during the development of the EPP
extensions, but since the ABNF in RFC 7480 doesn’t support the use
of a ‘.’, the ‘_’ needs to be used instead for pointed version
numbers.
[ML] IMO, ABNF in RFC7480 defines how extension identifiers rather than
rdapConformance values should be written. Anyway, if we agree on
Approach B or C, there is no need to drop pointed version numbers since
the rdapConformance values would be decoupled from the prefix values.
The only update needed (that wouldn't break the current RDAP responses
and related documents) would be the removal of "_0" suffix from the
registered extension identifiers related to RDAP profiles. On the other
hand, versions could be clearly identified and extracted from
rdapConformance values.
I recognize that the Approach C as is would accomplish backward
compatibility but would maintain the current mix of cases in in the RDAP
Extension Registry.
By the way, "cidr0" and "arin_originas0" would always appear a bit
misleading unless Approach A was adopted.
I'm more in favor of strictly defining the rules for this stuff once and
forever and correcting whereas it is necessary rather than opting for a
solution that saves the past but gives way to ambiguities.
1. For draft-ietf-regext-rdap-redacted, I view the registration of
the extension identifier “redacted_level_0_3” (target of
“redacted_level_1” after WGLC) that is returned in RDAP
Conformance as meeting the signaling needs. The registration of
the prefix “redacted” ensures uniqueness of the member included in
the JSON response. This could be addressed with the single RDAP
Extension Registry registration of “redacted”, where the
specification formally defines the full version included in the
rdapConformance member, but I feel inclusion of the separate full
identifier registration as being more explicit for signaling.
What happens when there is version 2 of the redacted extension,
should the RDAP Extension Registry only reference the latest
specification for the “redacted” prefix used in the
“rdapConformance”, or would it be better to include two versioned
identifiers (“redacted_level_1” and “redacted_level_2”) that link
to the associated specification in the RDAP Extension Registry? I
believe having both versions in the RDAP Extension Registry
provides benefit to the client. I recommend updating the
registered prefixes for the extension with the latest specification.
[ML] In principle I don't like the idea that we should register an
extension identifier for any version. We can use response links to
provide the user with documentation related to each version. However,
excluding Approach B, I prefer to support Approach C rather than Approach A.
That said, my response to James's last question is that it would be
better to include both the version identifiers, at least for a period,
even when the new version doesn't introduce any breaking change
compared to the old one.
This would signal the client about any version transition especially
when it involves the deprecation of a feature (e.g. a response field or
a path). In such a case, the old and the new should temporarily coexist.
Best,
Mario
1.
Thanks,
--
JG
James Gould
Fellow Engineer
[email protected]
<applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/[email protected]>
703-948-3271
12061 Bluemont Way
Reston, VA 20190
Verisign.com <http://verisigninc.com/>
On 5/19/22, 8:44 PM, "Tom Harrison" <[email protected]> wrote:
Hi James,
On Thu, May 19, 2022 at 06:36:59PM +0000, Gould, James wrote:
> On 5/19/22, 2:35 AM, "Tom Harrison" <[email protected]> wrote:
>> On Wed, May 18, 2022 at 11:59:05AM +0000, Gould, James wrote:
>>> On Wed, May 18, 2022 at 09:12:16AM +1000, Tom Harrison wrote:
>>>> The uniqueness aspect of the registry is fine, as is the 'null
>>>> suffix' part. I'm more concerned with the confusing way in which
>>>> the various documents interact in this respect and the fact that
>>>> two different 'types' of values will be registered (advisedly)
>>>> from now on.
>>>
>>> I don't believe there will be any confusion since the purpose of
>>> the registry is to ensure the uniqueness of the prefixes and
>>> identifiers used by the RDAP extensions and the purpose of the
>>> referenced specification is to define their usage.
>>
>> Having reviewed the relevant text again, I think I know what
>> happened here (which is relevant to what to do next). RFC 7480
>> has:
>>
>> For extensibility purposes, this document defines an IANA
>> registry for prefixes used in JSON [RFC7159] data serialization
>> and URI path segments (see Section 8).
>
> What's interesting is the first normative sentence of the next
> paragraph states "Prefixes and identifiers SHOULD only consist
> of...", where an identifier is not formally defined but there is
> clearly inclusion of both a prefix and an identifier.
But this doesn't of itself mean that the value of the 'prefix' is
distinct from that of the 'identifier'. If the original intent were
that both prefixes and identifiers be registered, then one or more of
artRecord, fred, platformNS and regType might have been registered in
that way, but they weren't. Whereas all current extensions can be
characterised as 'prefix' registrations, with some using the prefix
value as-is as the conformance value, and some adding version
information to that prefix for the purposes of the conformance value.
> We have a mix of prefixes and identifiers that exist in the RDAP
> Extension Registry (e.g., icann_rdap_response_profile_0 as an
> identifier, rdap_objectTag as a prefix for an identifier in the
> rdapConformance, paging that is used as a prefix and as an
> identifier in the rdapConformance).
I can see the distinction you are drawing here, but I think a better
way of framing it is simply that some extensions define additional
fields/paths, and in all of those cases those fields/paths are
prefixed with the extension identifier. Or in other words, the fact
that there are extensions where the prefix is the same as the value
used in rdapConformance does not of itself mean the registry is (or
was intended as) a dual prefix/identifier registry.
> It's unclear whether the registrations are intended to define a
> namespace or the values that are needed for uniqueness in the URI
> path segments and JSON response members.
Putting aside the change in 9083 in how the conformance value was
treated, it seems to me that there is plenty of text indicating that
namespacing was intended. Apart from all the mentions of 'prefixes',
and the way in which 'lunarNIC' is used in the documents, there is the
following from section 2.1 of 9083 that I don't think has been
mentioned before:
Servers that insert such unspecified members into JSON responses
SHOULD have member names prefixed with a short identifier
followed by an underscore followed by a meaningful name.
> I believe attempting to model a namespace in the RDAP Extension
> Registry for use across all elements defined in the extension is
> unneeded for REST, but that we only need to ensure that there is
> uniqueness across the extensions. There is nothing that restricts
> an extension for registering more than one entry in the RDAP
> Extension Registry to ensure uniqueness. I believe a versioned
> identifier for an extension has value for client signaling in the
> rdapConformance and to decouple the potential set of unique prefixes
> used for the URI path segments and JSON response members defined by
> the extension.
The existing model per my reading (again, putting aside the change in
9083) supports this for the most part, though. For a document like
redacted:
- there would be a single entry in the IANA registry with the
extension identifier 'redacted';
- versioned identifiers could be used as rdapConformance values, so
long as they were prefixed with 'redacted' (the associated
specification document link could be updated as new versions were
released); and
- 'redacted' would be used as a prefix throughout the responses
making use of those conformance values.
(Given the text from section 2.1 of 9083 above, I don't think it's
open to use 'redacted' with a 'null suffix', though: I hadn't noticed
that text before responding to your earlier mail on this point,
sorry.)
As far as registering multiple prefixes in the same document goes, I
don't see any problem with that, so long as the response includes
conformance values that either match or are prefixed with each of the
relevant extension identifiers (prefixes).
>> Later in that document:
>>
>> The purpose of this registry is to ensure uniqueness of extension
>> identifiers. The extension identifier is used as a prefix in
>> JSON names and as a prefix of path segments in RDAP URLs.
>
> Agreed, the uniqueness is the key requirement for the extension
> registrations. Here is a mix of the term identifier and prefix,
> which needs clarification. Earlier in RFC 7480 it refers to
> "Prefixes and identifiers", as opposed to simply one form. I see
> the need for both an identifier for signaling in the
> rdapConformance, which includes versioning, along with prefixes that
> are used path segments and response members. Is should be up to the
> specification to define the set of suffixes (null and non- null)
> that are used.
Per earlier comments, I think the existing model (putting aside the
change in 9083) supports this, save that null suffixes wouldn't be
permitted.
> Clients will not auto discover the prefixes to based on the value in
> the rdapConformance to match up the accepted set of path segments
> and the set of response members included in the response. If that
> was the intent, there would be a much more formal definition
> requirement in the protocol to support auto-discovery.
RFC 7483 was pretty clear about this:
When custom JSON values are inserted into responses, conformance
to those custom specifications MUST use a string prefixed with the
appropriate identifier from the IANA RDAP Extensions registry
specified in [RFC7480]
It's not like it's a complicated operation on the client side: the
client just has to find the extension identifier that is a prefix of
the conformance value.
>> Followed by an example registration:
>>
>> Extension identifier: lunarNic Registry operator: The Registry of
>> the Moon, LLC Published specification:
>> http://www.example/moon_apis/rdap Person & email address to
>> contact for further information: Professor Bernardo de la Paz
>> <[email protected]> Intended usage: COMMON
>>
>> lunarNic is not otherwise mentioned in RFC 7480. But RFC 7483 (not
>> 9083) has:
>>
>> When custom JSON values are inserted into responses, conformance
>> to those custom specifications MUST use a string prefixed with
>> the appropriate identifier from the IANA RDAP Extensions registry
>> specified in [RFC7480].
>>
>> with an example conformance value of "lunarNic_level_0". It then
>> goes on to give example lunarNic fields like
>> "lunarNic_beforeOneSmallStep". For a user looking at this prior to
>> the publication of RFC 9083, it looks like:
>>
>> - the prefix is what is registered as the extension identifier; -
>> if a conformance value begins with the prefix, then the response
>> is in accordance with the corresponding extension; - such a
>> response may contain new fields that begin with the prefix; and -
>> the relevant server may support additional paths that begin with
>> the prefix, per the extension documentation.
>
> What you're defining is equivalent to a namespace, which sounds
> reasonable but doesn't provide value to clients. Does it really
> matter to a client that an extension has an extension identifier of
> "foo" that chooses to define the URI path segment "foo_bar" in the
> specification and a set of response members of the form
> "foo_member_1", "foo_member_2", and "foo_member_N" in the
> specification? I see it being more valuable to have a versioned
> identifier for the extension, such as "foo_level_0" or "foo_level_1"
> for use in the rdapConformance, along with a set of unique URI path
> segments and response member prefixes in the registry (e.g., "bar",
> "member").
I can see the argument for changing how extensions work in RDAP. My
concern here is simply that I don't think the current text supports
this approach. Having a document progress that is not in accordance
with the current text, and establishes (at a minimum) a novel approach
to the use of the registry, seems like something that will further
confuse potential clients of the system. Additionally, the approach
I've proposed requires very little change to the redacted document (or
to any other pending extension document), and submitting an erratum
shouldn't take much time either.
>> If the change in 9083 is considered to be a mistake, and
registering
>> prefixes is considered acceptable, then possibly the simplest
option
>> is to:
>>
>> - submit an erratum against 9083;
>> - continue registering extensions, but register only the
prefixes;
>> and
>> - write a document clarifying all of this, as well as noting
>> conventions around versioning and so on, to avoid some of the
>> problems Patrick raised around namespacing and similar.
>>
>> This has some added benefits:
>>
>> - only one registry is needed; and
>> - the entries in the existing registry are all fine and do
not need
>> to be changed (so long as conformance values are permitted
to be
>> exact matches for extension identifiers, which doesn't seem
to be
>> problematic).
>>
>> It does mean that a given extension is restricted to a single
>> field/path prefix, but I'm not sure that that's a serious
problem, or
>> at least I don't think there are any documents pending that are
using
>> multiple prefixes.
>
> The proposal that I'm making doesn't require touching any of the
> existing registry entries, which has a mix of identifiers and
> prefixes. There is no restriction for a given extension to have a
> single field/path prefix.
On this point, I think you are right that a document can define
multiple field/path prefixes, so long as it includes multiple
conformance values that map to those prefixes and registers both
prefixes in the registry.
-Tom
_______________________________________________
regext mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/regext
--
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
_______________________________________________
regext mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/regext