Hi Scott,

I absolutely get the need to be conservative when updating an Internet 
standard. Please allow me to explain why this would be a good evolution.

Section 5 of RFC 9082 says:

“Custom path segments can be created by prefixing the segment with a unique 
identifier followed by an underscore character (0x5F). For example, a custom 
entity path segment could be created by prefixing "entity" with "custom_", 
producing "custom_entity".”

IMO, this is necessary but not sufficient.

If there is an existing path with a segment “fuzz” for an existing extension 
“foo” and another extension “bar” comes along that has a need to create paths 
that start at the same level as the existing segment “fuzz”, then using the 
prepend-extension-id-and-underscore approach to create segment “bar_fuzz” is 
helpful. That would leave us with:

For an existing extension “foo”, paths “fuzz/…” and “fizz/fuzz/…”.
For a new extension “bar”, paths “bar_fuzz/…” and “fizz/bar_fuzz/…”.

Now, the Extensions draft says:

“While [RFC9082] describes the extension identifier as a prepended string to a 
path segment, it does not describe the usage of the extension identifier as a 
path segment which may have child path segments. This document updates 
[RFC9082] to allow the usage of extension identifiers as path segments which 
may have child path segments.”

By this use-extension-id-as-segment-for-child-segments approach, we could 
replace paths “bar_fuzz/…” and “fizz/bar_fuzz/…” with:

“bar/fuzz/…” and “fizz/bar/fuzz/…”

The only difference is replacing ‘_’ with ‘/’ after “bar”, and still retaining 
de-confliction.

This is essentially what’s done in Reverse Search with path 
“{searchable-resource-type}/reverse_search/{related-resource-type}?<search-condition>”.
 For example:

“domains/reverse_search/entity?...”

where “reverse_search” is used as the path segment and “entity” as a child 
segment. Respectfully, the prepend-extension-id-and-underscore approach would 
be rather clumsy here.

My main point being that there are use cases where the 
prepend-extension-id-and-underscore approach is not a natural fit when defining 
path segments. In fact, we “discovered” the 
use-extension-id-as-segment-for-child-segments approach in the act of penning 
the Extensions draft. We have been extremely careful in picking the changes and 
clarifications for that draft.

Thanks,
Jasdip


From: Hollenbeck, Scott <shollenb...@verisign.com>
Date: Tuesday, October 8, 2024 at 7:48 AM
To: Jasdip Singh <jasd...@arin.net>, a...@hxr.us <a...@hxr.us>, regext@ietf.org 
<regext@ietf.org>
Subject: RE: [regext] Re: Comments Regarding 
draft-ietf-regext-rdap-extensions-04
From: Jasdip Singh <jasd...@arin.net>
Sent: Monday, October 7, 2024 4:52 PM
To: Hollenbeck, Scott <shollenb...@verisign.com>; a...@hxr.us; regext@ietf.org
Subject: [EXTERNAL] Re: [regext] Re: Comments Regarding 
draft-ietf-regext-rdap-extensions-04



Caution: This email originated from outside the organization. Do not click 
links or open attachments unless you recognize the sender and know the content 
is safe.

Scott,



From: Hollenbeck, Scott <shollenb...@verisign.com>
Date: Monday, October 7, 2024 at 4:15 PM
To: Jasdip Singh <jasd...@arin.net>, a...@hxr.us <a...@hxr.us>, regext@ietf.org 
<regext@ietf.org>
Subject: RE: [regext] Re: Comments Regarding 
draft-ietf-regext-rdap-extensions-04

...


I've read draft-ietf-regext-rdap-extensions-04 completely and have several 
comments to share. An overarching comment is that any update to Standard 95 
responses means that the modified responses will not be consistent with 
"rdap_level_0". A new identifier will be needed. I'd very much prefer to avoid 
updates to Standard 95 unless there's an absolute necessity to do so.



This draft does not change the RDAP data model and all updates are either 
backwards compatible and/or codify existing practices, many of them made by 
this working group. As there are no changes to the RDAP data model and this 
draft is dealing with extensions and not the core of RDAP, can you provide 
specific examples of these inconsistencies?

[SAH] The data model might not be changing, but that's not the only 
consideration. Recall this sentence from Section 4.1 of RFC 9083: "The string 
literal "rdap_level_0" signifies conformance with this specification". It 
doesn't say anything about the data model. I interpret that sentence to mean 
that if RFC 9083 changes, "rdap_level_0" continues to signify conformance with 
RFC 9083, NOT with whatever updates it.

Also, I'd like to point out that this working group has not updated 
"rdap_level_0" even when making changes to the core RDAP data model, as the 
move from PS to IS did in fact change the core RDAP data model but did not 
change the identifier.



With regard to interoperability between a client and a server, what is changing 
that is incompatible? What core RDAP JSON or query is changing? Can you provide 
specific examples?

This document updates the core RDAP specs for two reasons: 1) they define the 
rules around extension registrations, many of which this working group has 
repeatedly broken, and 2) there are areas of those documents concerning 
extensions that are very ambiguous. But this document changes nothing with 
regard to current interoperability between a client and server.

Also, changing that identifier signals a new version of the protocol, which 
this is not, and introduces an incompatibility with any current software that 
relies on it. I don't know the extent of that incompatibility, but I suspect at 
the very least many conformance tools will break.

[SAH] A specific example: I have a server that implements the foobar extension, 
RFC 7480, 9082, and 9083. It expects to receive query path segments that 
include "foobar_". It receives a query that includes "foobar/fizz". It doesn't 
recognize that path segment, so the query fails. That's protocol breakage.



[JS] Servers work from an expected lookup or search path per the definitions in 
a supported extension. Therefore, "foobar/fizz" should be as much a valid 
expectation if so defined in an extension, as long as namespace collisions are 
prevented.



That said, "foobar_a/b" would be needed for an extension if another extension 
already defines "a/b" for the same base path. E.g., "domains/foobar_a/b" for 
extension "foobar" to de-conflict from "domains/a/b" for extension "a". For an 
example of "domain/a/b" path for extension "a", see 
https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-rir-search-09#name-path-segments-2.

[SAH] This is precisely why we have issues with extensions that aren't 
following the guidance in the core specs. Those that define their own extension 
identification mechanisms can cause problems. "foobar/fizz" isn't valid per the 
existing core specs, and should not be defined as such in an extension 
specification.



Would you like regext to revisit Reverse Search?

Some of the RIRs have or are in the process of implementing Reverse Search and 
RIR Search. There was plenty of discussion on the current extension identifiers 
for Reverse Search and RIR Search, and their use. I cannot think of any good 
technical reason to disallow "foobar/fizz", and IMO grandfathering such paths 
would be pragmatic. We could further clarify usage scenarios for "foobar_fizz" 
versus "foobar/fizz" in the Extensions draft.

[SAH] We should be prepared to revisit any extension that deviates from the 
core specifications. I get that there are people who are implementing these 
extensions. There are many more people that have implemented Standard 95.

Jasdip



P.S. Let me also re-post one other comment I made earlier:

[SAH] Yes, that's what I'm advocating for. I'd rather change the non-conforming 
Proposed Standard extensions than update an Internet Standard to validate them. 
Updating the Proposed Standard will be far more disruptive than updating the 
optional extensions.

[JS] To Andy's disruption point, it is a balance between the extent of 
grandfathering existing extensions and clarifying for the future extensions.

[SAH] If there's a way to do that without updating Standard 95, fine. Stick to 
clarifications. Keep in mind, though, that once you've allowed a second form of 
extension identification (identifiers without prefixes), you're opening up the 
possibility of even more extension identification schemes. Any clarifications 
should attempt to eliminate that possibility.

Scott


_______________________________________________
regext mailing list -- regext@ietf.org
To unsubscribe send an email to regext-le...@ietf.org

Reply via email to