Hi Scott,

I'm concerned about injecting the version information into prefixes/identifiers as  I see some drawbacks in dealing with non-breaking changes, which hopefully should be the majority and usually don't require to manage a deprecation process.

For example, introducing a new property into a response extension would result in returning the same information twice (e.g. the response field "ext1_..." and response field "ext2_..." resulting from adding the new property to "ext1_..") .

To ensure interoperability, both the response fields should coexist for a period time so that the RDAP server could manage the sunset and then the deprecation of "ext1_..." as smoothly as possible.

Furthermore, according to a largely used best practice in versioning REST APIs, breaking changes should always result in a change to the major version number while non-breaking changes, such as adding new endpoints or new response parameters, do not require a change to the major version number.

Unfortunately,  injecting the version information into the prefixes/identifiers means that every change would break the RDAP server and would result in a change of the major version number !?!?

Really, this doesn't make sense to me.

Think the RDAP mechanism to implement and signal extensions should take vantage from an RDAP server being a REST service that returns a JSON (schemeless) content and, as such, it is possible to make many changes without breaking the REST contract with the client and  forcing the server to manage a deprecation process even when it is unnecessary.

Hope it could be helpful to evaluate the various approaches on the table from a practical perspective.


Best,

Mario


Il 25/05/2022 16:41, Hollenbeck, Scott ha scritto:

*From:* Gould, James <[email protected]>
*Sent:* Wednesday, May 25, 2022 10:23 AM
*To:* Hollenbeck, Scott <[email protected]>; [email protected]; [email protected]
*Cc:* [email protected]
*Subject:* Re: [regext] Extension Prefixes, JSON Values, and URI Path Segments

Scott,

My comments are embedded below with a “JG – “ prefix.

--

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/>

*From: *"Hollenbeck, Scott" <[email protected]>
*Date: *Wednesday, May 25, 2022 at 9:10 AM
*To: *James Gould <[email protected]>, "[email protected]" <[email protected]>, "[email protected]" <[email protected]>
*Cc: *"[email protected]" <[email protected]>
*Subject: *RE: [regext] Extension Prefixes, JSON Values, and URI Path Segments

*From:* Gould, James <[email protected]>
*Sent:* Wednesday, May 25, 2022 8:49 AM
*To:* Hollenbeck, Scott <[email protected]>; [email protected]; [email protected]
*Cc:* [email protected]
*Subject:* Re: [regext] Extension Prefixes, JSON Values, and URI Path Segments

Scott,

If the authors of 9083 feel that “lunarNIC_level_0” should be the prefix value “lunarNIC” instead of a versioned literal, then I’m confused on the true purpose of the RDAP Conformance member.  If the RDAP Conformance member is meant to signal the use of a namespace prefix and not a versioned literal, then why didn’t the base RFC RDAP Conformance value (“rdap” instead of “rdap_level_0”) and RFC elements (“rdap_domain” instead of “domain”) follow the same pattern?

*/[SAH] The values described in the RDAP specifications aren’t extensions. As such, the extension mechanisms aren’t applicable./*

*//*

JG – The question is associated with the purpose of the RDAP Conformance.  If the intent of the RDAP Conformance is to signal the set of prefixes used in the response in place of the list of extension literals, then the base RFCs should have followed the intent.  There is no existing language in the RFCs that requires consistency between the entries in the RDAP Conformance and the prefixes used by the extension.

*/[SAH] “RDAP conformance” is intended to identify the specification(s) associated with elements found an in RDAP response. That’s why the registry of values includes identification of the associated specification./*

*//*

Changing the purpose of the RDAP Conformance values would invalidate the use of the literals registered for the RDAP profile.

*/[SAH] No, it wouldn’t. The RDAP profile doesn’t register extension elements./*

*//*

JG – If the RDAP profile doesn’t register extension elements, do the RDAP Profile literals belong in the RDAP Extension Registry?  I believe the RDAP Profile literals has value to the client and therefore should be in the RDAP Extension Registry and represented as an entry in the RDAP Conformance, but that would violate the intent of the RDAP Conformance values as prefixes and not versioned literals.

*/[SAH] Yes, the values should be registered. Including them in the rdapConformance section of an RDAP response describes how that response was formed. There’s value in that even if the response doesn’t contain any extension elements./*

If there is consensus to define the RDAP Conformance as containing only prefixes to ensure the consistency of values, then the RFC 9083 normative sentence below needs to be revised to change “string literal value” to “prefix”:

When custom JSON values are inserted into responses,

conformance to those custom specifications MUST be indicated by

including a *prefix* value registered in the IANA RDAP

Extensions registry specified in [RFC7480 <https://datatracker.ietf.org/doc/html/rfc7480>].

I believe it’s best for the RDAP Conformance to reflect a versioned literal at the level of the extension specification to indicate to the client what version of the extension is supported instead of attempting to define the extension namespace prefixes. The RDAP Extension Registry can ensure the uniqueness of the prefixes and contain the list of versioned extension literals.  This should be handled by the definition of draft like the RFC 3735 “Guidelines for Extending the Extensible Provisioning Protocol (EPP)” that is focused on all the forms of RDAP extensibility (e.g., object extensibility, request and response attribute extensibility, policy signaling).  I don’t believe the base RFCs thought through the extensibility deep enough to tweak via errata.

*/[SAH] The registered prefix/identifier can in fact contain version information. That’s exactly what I’m doing in the federated authentication draft./*

*//*

JG - Injecting versioning into the extension elements adds brittleness when backward compatible version changes are made.  Including the versioning in the RDAP Conformance provides the signaling, and the registered prefixes ensures uniqueness.  Artificially linking the two adds brittleness with no perceived value. draft-ietf-regext-rdap-openid would be cleaner by registering “roidc_level_0” for the RDAP Conformance value and a single prefix “roidc” value used for the set of extension elements (“roidc_id”, “roidc_session”, “roidc_iss”, “roidc_session”, “roidc_openidcConfiguration”).  The individual extension elements could be registered as well but based on the number and use of something generic like “id”, it may be best to group them using a single prefix.

*/[SAH] I can only say that I disagree. There’s more value in consistency and simplicity. It makes life *much* easier for a client if the value registered with IANA is the same value that’s used to identify extension elements. If changes are made in the future, you just need to register a new value./*

*//*

*/I agree that this all needs to be clarified. The first step is to document the areas that require clarification as errata. Then we write a draft that addresses the errata./*

--

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/>

*From: *"Hollenbeck, Scott" <[email protected]>
*Date: *Wednesday, May 25, 2022 at 8:07 AM
*To: *James Gould <[email protected]>, "[email protected]" <[email protected]>, "[email protected]" <[email protected]>
*Cc: *"[email protected]" <[email protected]>
*Subject: *RE: Re: [regext] Extension Prefixes, JSON Values, and URI Path Segments

*From:* Gould, James <[email protected]>
*Sent:* Tuesday, May 24, 2022 4:37 PM
*To:* [email protected]; [email protected]
*Cc:* Hollenbeck, Scott <[email protected]>; [email protected]
*Subject:* Re: Re: [regext] Extension Prefixes, JSON Values, and URI Path Segments

Approach A – “tight coupling” and Approach B “lack of tight coupling “ treats the RDAP Conformance value not as hint to the specifications used in the construction of the response, as defined in section 4.1 of RFC 9083, but instead as defining the prefix value of the extension elements (URI path segments, JSON response members, and objectClassName values).  My read of the RDAP Conformance is that version is material and there doesn’t need to be any direct link between the literal values in the RDAP Conformance with the prefixes used for the extension elements.  If the versioning of the RDAP Conformance needed to cascade down to the extension elements, why didn’t the base RDAP RFCs cascade the version “rdap_level_0” down to all the base RFC elements?  What would happen if a new version of RDAP was created, with the RDAP Conformance value of “rdap_level_1”, should all of the RFC elements embed the version “_1” version as well, as in “domain_1”, “domains_1”?  I believe the answer is “no”.  The example provided for the fictional registry of the Moon is “lunarNIC_level_0” and not simply the prefix “lunarNIC”.  We already have examples of pure RDAP Conformance literals that don’t relate to extension element prefixes with the RDAP profile identifiers, which certainly have value to the client. */[SAH] The authors of 9083 believe that the “lunarNIC_level_0” example is an error. It should be “lunarNIC” so that the IANA-registered value, the rdapConformance value, and the prefix used in examples is consistent. We’re currently looking at everything that needs to be documented as errata; this will be one of the items./* My recommendation is to separate the RDAP Conformance values from the registration of the prefixes used for the extension elements, which can be registered separately for uniqueness.  We get full version signaling in the RDAP Conformance member and we get full support for a mix of extension elements that are registered for uniqueness.  I don’t see a compliance issue with the language in the RDAP RFCs with Approach C taken in draft-ietf-regext-rdap-redacted and I don’t see any technical issues that will impact the client by having a versioned RDAP Conformance registration (“redacted_level_0_3” with a future value of “redacted_level_1”) and a registration of the “redacted” member that is used in the JSON response.  Does anyone see any explicit compliance issues or technical issues with this?
*/[SAH] See above./*
*//*
*/Scott/*

_______________________________________________
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

Reply via email to