Andy, 

Thank you for posting draft-ietf-regext-rdap-extensions-15 that incorporates my 
feedback.  I include my feedback to draft-ietf-regext-rdap-extensions-14 below 
with comments prefixed with "JG15-" to indicate what has been addressed in 
draft-ietf-regext-rdap-extensions-15 to help the document shepherd.  

All the feedback has been addressed except for the strategies in the section 
5.4.3 "Considerations for Superseders" that need to be defined as 
non-exhaustive at a minimum and what makes a strategy compatible with STD95 
needs to be documented.  Both strategies in the draft are new and have no 
operational experience to reference for inclusion in the extensions draft.  I 
consider the "Overlapping Superseders" strategy as bad design for extension 
authors by creating a hard inheritance dependency from an extension successor 
to its predecessor. 
 
Section 2.2 “Syntax”:
 
OLD
 
Similarly, RDAP extensions MUST NOT define an extension identifier starting 
with a substring being an existing extension identifier appended with an 
underscore.
 
NEW
 
Similarly, RDAP extensions MUST NOT define an extension identifier starting 
with a substring of an existing extension identifier appended with an 
underscore.

JG15-Addressed
 
I recommend injecting some of Section 2.3 “Bare Extension Identifiers” into 
Section 2.2 and formally defining the ABNF for an RDAP extension identifier, 
which revises the “name” ABNF rule defined in Section 6 of [RFC 7480] and 
formally defines the RDAP extension (variable / element / parameter) ABNF.  A 
good name needs to be given to the RDAP extension elements that use the RDAP 
extension identifier as a prefix.
 
OLD
 
For this reason, this document updates the guidance of [RFC7480] regarding 
underscore characters: RDAP extensions MUST NOT use an underscore character in 
their RDAP extension identifier. Implementers should be aware that many 
existing extension identifiers do contain underscore characters.
 
NEW
 
This document updates the ABNF “name” rule in [RFC7480] to not allow the use of 
an underscore character in the RDAP extension identifier.   The revised ABNF 
[RFC5234] “name” rule is:
 
                name = ALPHA *( ALPHA / DIGIT )
 
Implementers should be aware that existing extension identifiers do contain 
underscore characters.

JG15-Addressed
 
Added at the end of section 2.2 that following to replace Section 2.3 “Bare 
Extension Identifiers”:
 
NEW (Replaces Section 2.3 “Bare Extension Identifiers”)
 
The [RFC 7480] ABNF “name” rule referenced JSON Names, where there was no 
requirement to include the suffix for JSON members, and Section 2.1 of [RFC 
9083] included the language “JSON responses SHOULD have member names prefixed 
with a short identifier followed by an underscore followed by a meaningful 
name”.  This contradiction led to the use of a Bare Extension Identifier, where 
a JSON member uses the extension identifier without the use of an underscore 
followed by a meaningful name.  That is, the extension identifier is used 
"bare" and not appended with an underscore character and subsequent names.
 
Consider the example in Section 2.5.2. Using the bare extension identifier 
pattern, that example could be written as:
{
  "rdapConformance": [
    "rdap_level_0",
    "exampleExt"
  ],
  "objectClassName": "domain",
  "ldhName": "example.com",
  "remarks":
  [
    {
      "description":
      [
        "Query the database."
        "JSON replaces the Whois."
        "Structured data flows."
      ]
    }
  ],
  "exampleExt":
  {
    "firstInitial": "R",
    "lastName": "SomePerson"
  }
}
 
While [RFC9083] is specific to JSON, the use of a bare extension identifier 
also applies to other identifiers of RDAP extensions, such as query parameters 
and object class names. Identifiers of an RDAP extension which need a prefix to 
avoid name collision with identifiers of other RDAP extensions or RDAP as 
specified in [RFC7480], [RFC9082], and [RFC9083] are referred to as namespaced 
identifiers.  prefixed identifiers are clearly syntactically distinguishable 
from identifiers defined by the core RDAP specifications, which provides more 
flexibility to implementers and helps with debugging and similar. 
 
The syntax for extension elements (JSON member, query parameters, object class 
name, HTTP headers, path segments, media type parameter, etc.) is defined by 
the “extension-element” ABNF rule:
 
extension-element = name “_” ALPHA *( ALPHA / DIGIT / “_” ) 
 
Implementers should be aware that existing extension elements use Bare 
Extension Identifiers.

JG15-Addressed
 
Section 2.3 “Bare Extension Identifiers”:
 
I recommend moving into Section 2.2 “Syntax” as described above, since the 
formal definition of the extension-element ABNF rule cleanly defines what 
designers need to use going forward in place of defining what designers must 
not do. 

JG15-Addressed
 
Section 2.5.1 “Basic Requirements”
               
I don’t recommend mirroring the “harshMistressNotes” with the “In space,”, 
“nobody can hear you scream” example from RFC 9083 in 
draft-ietf-regext-rdap-extensions, even though I believe it’s a reference to 
the book “The Moon is a Harsh Mistress”.  I recommend neutralizing the example 
in draft-ietf-regext-rdap-extensions.  Replicating the RFC 9083 is not needed 
and providing the required use of the “rdapConformance” could be provided alone 
with a neutralized example:
 
OLD
 
[RFC9083] states: Clients of these JSON responses SHOULD ignore unrecognized 
JSON members in responses.
 
This document updates this guidance…
 
NEW
 
[RFC9083] states: Clients of these JSON responses SHOULD ignore unrecognized 
JSON members in responses.
 
As Section 4.1 of [RFC9083] requires the use of the "rdapConformance" data 
structure, and the "objectClassName" string is required of all object class 
instances, the complete example from [RFC9083] would be with a change the last 
“lunarNIC” member:
 
{
  "rdapConformance": [
    "rdap_level_0",
    "lunarNIC"
  ],
  "objectClassName": "domain",
  "handle": "ABC123",
  "ldhName": "example.com",
  "lunarNIC_beforeOneSmallStep": "TRUE THAT!",
  "remarks":
  [
    {
      "description":
      [
        "She sells sea shells down by the sea shore.",
        "Originally written by Terry Sullivan."
      ]
    }
  ],
  "lunarNIC_spaceNotes":
  [
    "In space,",
    "nobody can hear you."
  ]
 
JG15-Addressed

Section 2.5.5 “rdapConformance Population”
 
Nit – I recommend naming the Section 2.1.1 extension identifiers for clarity, 
so readers don’t need to follow the reference to determine the type of 
extension being referenced.  It’s not perfectly clear whether the   
 
OLD
 
A strict interpretation of this wording where “construction of the response” 
refers only to the JSON structure would rule out the use of Section 2.1.1 
extension identifiers
 
NEW
A strict interpretation of this wording where “construction of the response” 
refers only to the JSON structure would rule out the use of profile extension 
identifiers [Section 2.1.1]

JG15-Addressed
 
It’s not clear from the guidance whether the profile extension identifiers are 
expected to be returned in the response, which I believe they should based on 
“understand the semantic meaning of the content within the JSON”.  I recommend 
making this explicit, since the profile extension identifiers were raised as an 
interpretation issue with:
 
OLD
 
…a response MUST include in the "rdapConformance" array only those extension 
identifiers necessary for a client to deserialize the JSON and understand the 
semantic meaning of the content within the JSON, and each extension identifier 
MUST be free from conflict with the other identifiers with respect to their 
syntax and semantics.
 
NEW
 
…a response MUST include in the "rdapConformance" array only those extension 
identifiers necessary for a client to deserialize the JSON and understand the 
semantic meaning of the content within the JSON, which includes the profile 
extension identifiers.  Each extension identifier MUST be free from conflict 
with the other identifiers with respect to their syntax and semantics.

JG15-Addressed
 
Section 5.3 “Extensions Referencing Other Extensions”
 
Nit – I recommend naming the Section 2.1.1 extension identifiers for clarity. 
 
OLD
 
As stated in Section 2.1.1, ….
 
NEW
 
As stated for profile extensions [Section 2.1.1], …

JG15-Addressed 
 
Should there be guidance to include a normative reference in a dependent 
extension to the other extension for clarity to the client and server that 
there is a dependent relationship between the two extensions?  This could go 
further by including language in the extension defining the dependent 
relationship explicitly.
 
OLD
 
…extensions may rely on other extensions by stipulating the usage of those 
other extensions.
 
NEW     
 
…extensions may rely on other extensions by stipulating the usage of those 
other extensions.  Dependencies between extensions MUST be defined using a 
normative reference in the dependent extension and SHOULD include an explicit 
description of the dependency. 

JG15-Addressed and we agreed to change the SHOULD to a MUST. 
 
Section 5.4 “Extension Versioning”
 
I like the formal definition of the terms “revision” and “replacement”.  This 
helps a great deal in clarifying the guidance.
 
The last paragraph references a 2011 blog post, MNOT-VERSIONING. This could be 
perceived as a normative reference. As far as I can tell, the guidance from the 
post was never included in an RFC, so I recommend removing the reference 
entirely, to reduce confusion.  The extensions draft should provide guidance 
based on RDAP extension definition experience and operational experience.  I 
agree with “Backwards-compatible changes should be favored over incompatible 
ones.”, but I don’t believe that “Newer versions of extensions are not to break 
existing clients” is realistic based on the progression of RDAP extensions in 
the working group. This would also require protocol designers to reliably 
predict what client implementers will do, which is not possible.
 
RDAP is a stateless protocol and doesn’t have a predefined set of clients, 
which may expect different versions of an RDAP extensions (old or new).  RDAP 
is defined to ensure that clients are resilient to change by requiring clients 
to ignore unknown JSON names. Extension designers need to consider versioning 
throughout the maturity of the extension, which includes determining when to 
change the extension identifier and whether to use a versioning extension, or 
its own versioning technique.  Clients need to be aware of the extension 
interface supported by the server, which can include breaking and non-breaking 
changes.  Below is my recommendation for the language in the draft.
 
 
OLD
 
Versioning of RDAP extensions is expected to follow the general principles 
described in [MNOT-VERSIONING]:
* Newer versions of extensions are not to break existing clients.
* Backwards-compatible changes should be favored over incompatible ones
 
NEW
 
Versioning of RDAP extensions needs to be considered with the following goals:
* Backwards-compatible changes should be favored over incompatible ones
* Changes to the extension interface should be transparent to the client by 
changing of the extension identifier (replacement above), use of a versioning 
extension such as draft-ietf-regext-rdap-versioning, or defining versioning 
directly into the extension.

JG15-Addressed by replacing the MNOT-VERSIONING reference with a paragraph 
associated with interoperability and not policy.  I'm good with the new 
language.
 
Section 5.4.1 “Breaking Changes in Revisions”
 
In reviewing the list of breaking changes, I have the following feedback to the 
list items:
 
“Contracting a set of values when that set is not defined in an IANA registry 
to be found in a protocol element in a request” – Wouldn’t this be considered a 
non-breaking change unless it was a value provided by the client in the query?  
The client would support a superset of values, so the removal of one of the 
values should not break a client expecting the old interface.

JG15-Not an issue.  
 
 
Section 5.4.3 “Compatibility of Replacements”
 
I view this section as providing guidance or considerations to extension 
implementers and designers for replacements (e.g., when an extension identifier 
changes).  I recommend using the term “Considerations” in the title to make it 
clear the goal of the section.
 
OLD
 
Title: Compatibility of Replacements
 
NEW
 
Title: Extension Replacement Considerations

JG15-Addressed, by changing Compatibility of Replacements to Considerations for 
Superseders
 
I like scoping the sub-sections of Section 5.4.3 with “replacements”, which as 
when the extension identifier changes.  We need to ensure that the strategies 
are explicitly not considered.  Considering that designers and implementers may 
take different approaches that listed in the sub-sections, to clarify this I 
would add the word “non-exhaustive” to the last sentence.
 
OLD
 
Strategies for using a replacement in a transition are described below.
 
NEW
 
The non-exhaustive list of considerations for using a replacement in a 
transition are described below:
 
JG15-Not addressed, " Strategies for using a replacement in a transition are 
described" was replaced with "Known strategies compatible with [RFC7480], 
[RFC9082], and [RFC9083] below."  It's unclear how these strategies are 
"compatible" with STD95.  The draft should define what makes a strategy 
compatible with STD95 that we can match other strategies against.  I requested 
in our mailing list thread to add the strategy " Standalone Superseders with 
Versioning", which I'm willing to provide the content for.  

Section 5.4.3.1 “Non-overlapping Replacements”
 
This is certainly an option, but I haven’t seen an instance where this has been 
implemented in new versions of an RDAP extension.  I don’t have an issue 
included this consideration if the sub-sections of 5.4.3 are defined as a 
non-exhaustive list of considerations.

JG15-May have been addressed.  The non-exhaustive language was not added to the 
draft for the list of strategies, but the section does include the term 
considerations.  I want to confirm that if a strategy is used that does not 
include one of these two strategies will be it considered non-compliant, since 
I wouldn't recommend using these strategies based on my operational experience 
of transitioning between EPP extension versions.  
 
Section 5.4.3.2 “Overlapping Replacements”
 
I don’t support this consideration for the extension authors, since extension 
replacements can have overlapping structures, but defining an inheritance 
hierarchy between extension replacements does not allow for the extension 
replacements to stand on their own.  This will add a permanent inheritance 
dependency between RDAP extensions that should be avoided. 
 
The versioning extension did add relationship (“predecessor” and “successor”) 
support between the extensions, where the server can define the supported set 
of opaque extensions, their relationship, and when the extension will start and 
end being supported.  If the concept of “Overlapping Replacements” is supported 
by the working group, then a relationship type will need to be added, such as 
“inherited” in this case.

JG15-Not addressed.  I don't support the "Overlapping Replacements" as a 
strategy for extension authors.  I have never seen an example of this for the 
definition of a successor RDAP extension and I believe creating an inheritance 
dependency between extension versions to be a bad design.  Can other working 
group members weigh in on this prior to including the strategy in the draft.  


-- 

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 8/13/26, 3:09 PM, "Andy Newton" <[email protected] <mailto:[email protected]>> wrote:


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. 


Hi all,


This latest version take into account the conversations concerning this draft 
before IETF 126,
the instructions from the chairs during the meeting at IETF 126,
and the most recent list discussions.


In those most recent discussions, I pushed back on the issue of the 
MNOT-VERSIONING reference but in the end removed it anyway.


-andy, no hats


On 8/13/26 2:57 PM, [email protected] <mailto:[email protected]> 
wrote:
> Internet-Draft draft-ietf-regext-rdap-extensions-15.txt is now available. It
> is a work item of the Registration Protocols Extensions (REGEXT) WG of the
> IETF.
> 
> Title: RDAP Extensions
> Authors: Andy Newton
> Jasdip Singh
> Tom Harrison
> Name: draft-ietf-regext-rdap-extensions-15.txt
> Pages: 32
> Dates: 2026-08-13
> 
> Abstract:
> 
> This document describes and clarifies the usage of extensions in
> RDAP.
> 
> The IETF datatracker status page for this Internet-Draft is:
> https://secure-web.cisco.com/1ZESAWGT_97OMjca58tItvkXI8s3EDDab5ZWRrqRC9pIBRgjJym4IS10HFNEdEoAPg7uJhzB2ffyX7UiOoz89wVpCUZZqn_wxficUtXHrNW5-VXAo27wGvCw6auoqwCfJPMQdvTKZAMFOdWzb0QvQ4mtfmLqD8PGPHcSE3bpZJPM0x1hRzc6CmNAFjsxppnbc4jDI7J5ZVKDU-8KzpXfj6WrFXp7iWzwjY67t1jy8KdkWGDunMv4mGj4V-cn5DGvDvgBUf3CT3mDjy4AdiaCJSQkkdV9VResq38jE7TAxfG-7gclARUNuQHCk8JdsCQ2L/https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fdraft-ietf-regext-rdap-extensions%2F
>  
> <https://secure-web.cisco.com/1ZESAWGT_97OMjca58tItvkXI8s3EDDab5ZWRrqRC9pIBRgjJym4IS10HFNEdEoAPg7uJhzB2ffyX7UiOoz89wVpCUZZqn_wxficUtXHrNW5-VXAo27wGvCw6auoqwCfJPMQdvTKZAMFOdWzb0QvQ4mtfmLqD8PGPHcSE3bpZJPM0x1hRzc6CmNAFjsxppnbc4jDI7J5ZVKDU-8KzpXfj6WrFXp7iWzwjY67t1jy8KdkWGDunMv4mGj4V-cn5DGvDvgBUf3CT3mDjy4AdiaCJSQkkdV9VResq38jE7TAxfG-7gclARUNuQHCk8JdsCQ2L/https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fdraft-ietf-regext-rdap-extensions%2F>
> 
> There is also an HTML version available at:
> https://secure-web.cisco.com/1ebEM9onEz-Eqx4XIHm2pOwkRfNkjc4TgTcSWR1n_1vsZXBvVAU7L96yviKA-U2K4AZ2dUlnXWmqpej2xjUw72U01iANFO8Md7YD5ph4Ey6QhlFbM1PCULRkkC9WWcHEyb2MvIot35L3LcdzDAWrx1jWdLLmBFtzOQ0zTtsKRAezeex5CV8f3f5GvFKc_-dh4ZkaKayl5_8Rn5zdTZbi7W47IKC_71T6JPpCm5aNS4M-gQpb6G7grdH_UpIvD3ggyz0npakSbDSVeU4cpEgidE6zGS5Hlp2CCzu13P9LarSeKQNbl2pTjz-uYAGfICaGE/https%3A%2F%2Fwww.ietf.org%2Farchive%2Fid%2Fdraft-ietf-regext-rdap-extensions-15.html
>  
> <https://secure-web.cisco.com/1ebEM9onEz-Eqx4XIHm2pOwkRfNkjc4TgTcSWR1n_1vsZXBvVAU7L96yviKA-U2K4AZ2dUlnXWmqpej2xjUw72U01iANFO8Md7YD5ph4Ey6QhlFbM1PCULRkkC9WWcHEyb2MvIot35L3LcdzDAWrx1jWdLLmBFtzOQ0zTtsKRAezeex5CV8f3f5GvFKc_-dh4ZkaKayl5_8Rn5zdTZbi7W47IKC_71T6JPpCm5aNS4M-gQpb6G7grdH_UpIvD3ggyz0npakSbDSVeU4cpEgidE6zGS5Hlp2CCzu13P9LarSeKQNbl2pTjz-uYAGfICaGE/https%3A%2F%2Fwww.ietf.org%2Farchive%2Fid%2Fdraft-ietf-regext-rdap-extensions-15.html>
> 
> A diff from the previous version is available at:
> https://secure-web.cisco.com/19q6THm6kavl-oeMaKEG4edj6FBUY6A-6aX31zhLz23IFw1L32Opj0r7UMociT437Tuew1DtOELadfI_IXoKngbN3PVT-P-bF5DBaphCzL9UFuRgdhcBq6e7ZuubFtan-arWOPU9B3lJsYxHoBgzG9QqsV3qRaDeS_oeBDyoKJ62FC8xCgO-H5XErDRHHLHaodWaCE_KFOWC0ysTqClRxh_0grLVM_euFcjzzITIMpXW2YRtMuguFVTwbTeTn78Ajxgulnxnk0TY6ZQODunZCDUkAyFGxt8zlT38u9EhnK8KAX3U295DeBSiOy_PzxLLL/https%3A%2F%2Fauthor-tools.ietf.org%2Fiddiff%3Furl2%3Ddraft-ietf-regext-rdap-extensions-15
>  
> <https://secure-web.cisco.com/19q6THm6kavl-oeMaKEG4edj6FBUY6A-6aX31zhLz23IFw1L32Opj0r7UMociT437Tuew1DtOELadfI_IXoKngbN3PVT-P-bF5DBaphCzL9UFuRgdhcBq6e7ZuubFtan-arWOPU9B3lJsYxHoBgzG9QqsV3qRaDeS_oeBDyoKJ62FC8xCgO-H5XErDRHHLHaodWaCE_KFOWC0ysTqClRxh_0grLVM_euFcjzzITIMpXW2YRtMuguFVTwbTeTn78Ajxgulnxnk0TY6ZQODunZCDUkAyFGxt8zlT38u9EhnK8KAX3U295DeBSiOy_PzxLLL/https%3A%2F%2Fauthor-tools.ietf.org%2Fiddiff%3Furl2%3Ddraft-ietf-regext-rdap-extensions-15>
> 
> Internet-Drafts are also available by rsync at:
> rsync.ietf.org::internet-drafts
> 
> 
> _______________________________________________
> regext mailing list -- [email protected] <mailto:[email protected]>
> To unsubscribe send an email to [email protected] 
> <mailto:[email protected]>


_______________________________________________
regext mailing list -- [email protected] <mailto:[email protected]>
To unsubscribe send an email to [email protected] 
<mailto:[email protected]>



_______________________________________________
regext mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to