Hi Jim,

> My recommendation is for draft-ietf-regext-rdap-extensions to clarify the policies associated with only Opaque Versioning by name and allow for other versioning schemes such as Point Versioning to handle it differently.

Full agreement here.

I also believe this is what draft-ietf-regext-rdap-extensions 5.4 actually does. 5.4.1 tells that extensions can choose to have own signalling of versioning and changes. "Whether the extension itself should define how versioning is handled within the extension documentation.". A reference to ietf-regext-rdap-versioning is given in 5.4.

Would it help to have a repeated specific reference to ietf-regext-rdap-versioning in 5.4.1 as well? Or a specific chapter below 5.4 to refer to "versioning handled by extension documentation" with a specific reference to ietf-regext-rdap-versioning as a non exclusive possibility?

Kind Regards,
Pawel

On 11.06.26 21:53, Gould, James wrote:

Pawel,

I don’t believe my understanding of the scope of the draft-ietf-regext-rdap-extensions matches yours. Initially draft-ietf-regext-rdap-versioning was meant to clarify the confusion in the base RDAP RFCs, since we spent a great amount of time debating the interpretation of the base RFCs.  I don’t believe the intent of draft-ietf-regext-rdap-extensions was to define a framework for EPP extensions.

The draft-ietf-regext-rdap-extensions  “Background” states:

   This document describes the requirements for RDAP extension definition and use, clarifying ambiguities and defining additional semantics and options that were previously implicit or under-specified, and places some constraints on the definition of RDAP extensions to prevent collisions with various extension mechanisms.

The draft-ietf-regext-rdap-extensions “Summary of Updates” states:

   This document does not update any core RDAP requests or responses nor does it update or obsolete any existing RDAP extensions. The updates in this document should require no changes to either client or server implementations.

The purpose of an extension like draft-ietf-regext-rdap-versioning is to define new functionality that did not exist, so it’s the correct place to work on extension versioning, which was agreed to not be explicitly defined in the base RDAP RFCs.  The existing extensions leverage what is called Opaque Versioning, which is supported by draft-ietf-regext-rdap-versioning and we have much more flexibility in an extension to provide additional functionality that is not supported by the defined scope of draft-ietf-regext-rdap-extensions.

Interoperability is based on knowing the interface.  A client expecting to use the new functionality of an extension should be capable of knowing the true interface supported by the server.  Use of the same extension identifier when you add functionality while maintaining backward compatibility impacts the interoperability of clients wanting to use the new features.  The new extension could support new query features and response features, so only focusing on breaking changes is an interoperability issue.  I have no issue with extensions supporting Opaque Versioning to change the Extension Identifier when there is any interface change, since that is the only signal available.  I agree that there should be no requirement to implement the versioning extension for existing or new RDAP extensions that use Opaque Versioning.  My recommendation is for draft-ietf-regext-rdap-extensions to clarify the policies associated with only Opaque Versioning by name and allow for other versioning schemes such as Point Versioning to handle it differently.  Extensions that support Point Versioning will have built-in fine grained versioning capability that does not require a change of the Extension Identifier.  There is no issue with non-supporting clients and servers, since Point Versioning extensions will include a normative reference to the versioning extension, which means that the versioning extension is a dependent requirement.

 --

JG


cid87442*[email protected]

*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: *"[email protected]" <[email protected]>
*Date: *Thursday, June 11, 2026 at 2:13 PM
*To: *James Gould <[email protected]>, "[email protected]" <[email protected]>, "[email protected]" <[email protected]>, "[email protected]" <[email protected]> *Subject: *[EXTERNAL] Re: [regext] Re: draft-ietf-regext-rdap-x-media-type and draft-ietf-regext-rdap-versioning Compatibility Topic 1: Query Identifiers

Hi Jim,

draft-ietf-regext-rdap-extensions is aimed to define the framework of RDAP extensions. This must include definition of the relations between versions of the same extension which will apply also to the extensions not aware or implementing draft-ietf-regext-rdap-versioning, like all we have in the IANA registry to date. It does belong there.

draft-ietf-regext-rdap-versioning cannot do it being an extension itself and without relation to extensions not implementing it (e.g. all existing to date).

Finally, not sure where you see a contradiction. A "breaking change" is a change of extension interface, the same as "non-breaking change" is a change to the interface. The difference is that for the first the clients shall be aware and update the code, for the seconds clients will continue working intact. RDAP is using loose convention to allow such expansion without breaking things. We should not cause operational burden of running several versions in parallel even if they are perfectly back compatible.

Kind Regards,
Pawel

On 11.06.26 18:36, Gould, James wrote:

    Pawel,

    I still don’t get the focus on breaking changes instead of
    extension interface changes.  Interoperability is not just about
    breaking changes but support for the interface changes.  RDAP is
    extensible and we don’t need to bake everything into
    draft-ietf-regext-rdap-extensions, since it’s updating STD 95. 
    We’ve extended EPP over 20+ years without having to update STD 69
    and I don’t see extension versioning requiring an update to STD
    95.  As pointed out previously, any point version extension should
    include a normative reference to the versioning extension and we
    can solidify that with language in the versioning extension, so
    there is no issue with non-supporting clients for point
    versioning.  The opaque versioning can include a change in the
    extension identifier when there is a change in the interface
    whether there is a breaking change or not.  We can work out the
    approach for transitioning to the new version of the opaque
    extension independent of having to update STD 95.

    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://secure-web.cisco.com/1I8Qtr4JTumizNd3ttCriErBS78MV-e7G8Mqt8y2ojVVICXuIlF2uxZX5BtDnCl1SVOqBdz0Bex1-j9v89EHyp5NwRU0ka9ZhVDXZG8oY4QiXOdjEda2V6gKN7uWzy2Zhlp50arGfRKX3Rf-Iy0yLncb5uBLnL1J9gO2XC1NOzeNZMV8riei4u01eBimI3KumozHkNxPhgSD_U7DAp8D6TyYdSanhxy5J1DiHi_aaDKKle1id-YuqrL3MqiOuegNbxsP2r0OAN6Jg4l-dDuMBzB88_zvrRyh2cpOYI-LFaB4/http%3A%2F%2Fverisigninc.com%2F>

    *From: *Pawel Kowalik <[email protected]> <mailto:[email protected]>
    *Date: *Thursday, June 11, 2026 at 12:20 PM
    *To: *James Gould <[email protected]>
    <mailto:[email protected]>, "[email protected]" <mailto:[email protected]>
    <[email protected]> <mailto:[email protected]>, "[email protected]"
    <mailto:[email protected]> <[email protected]>
    <mailto:[email protected]>, "[email protected]"
    <mailto:[email protected]> <[email protected]> <mailto:[email protected]>
    *Subject: *[EXTERNAL] Re: [regext] Re:
    draft-ietf-regext-rdap-x-media-type and
    draft-ietf-regext-rdap-versioning Compatibility Topic 1: Query
    Identifiers

    Hi Jim,

    The goal shall remain to make non-breaking changes possible and
    breaking changes visible - with or without versioning extension.

    I strongly believe most of the extensions will remain
    back-compatible, because it's healthy for the ecosystem. A
    coordinated version migration on scale of RDAP usage with multiple
    server instances and countless client instances not having any
    contract with each other is challenge comparable to DNS flag days.
    We don't want that happening for RDAP extensions.

    Having told that, an extension identifier as a signal of an
    extension still being back compatible despite new version rolled
    out is a reasonable choice which will work in all cases.
    Versioning extension as an additional information what the version
    actually is with a facility to request a certain version, is a
    useful addition, but still optional addition from the protocol view.

    draft-ietf-regext-rdap-extensions, as updating STD 95, is the only
    place where we can sharpen understanding of the contract between a
    client and the server as to what constitutes a breaking change and
    what not. Versioning extension draft cannot cover for it, unless
    it would also be an update to STD 95.

    Kind Regards,
    Pawel

    On 11.06.26 18:05, Gould, James wrote:

        Pawel,

        Thank you for defining what a breaking change is.  The phrase
        “parse the response or misinterpret the response” is very
        broad and would assume not to include the addition of
        members.  One issue is that many of the members are optional,
        so the lack of a member of an optional member should not be
        considered a breaking change. One aspect to consider is the
        viewpoint of a client that is expecting the new version of the
        extension, where if there is no signal (e.g., changing of the
        extension identifier for opaque versioning) of an interface
        change (e.g., adding new features and members) they may run
        into an issue with the broad “parse the response or
        misinterpret the response” language.  I believe it’s best to
        change the opaque versioning for any interface change and not
        for just breaking change of the new extension from the old
        extension version.  Adding new features is an interface change
        that warrants version signaling to me.

        I believe the approaches outlined in the sub-sections of 5.4
        draft-ietf-regext-rdap-extensions apply only to opaque
        versioning and need to be moved into
        draft-ietf-regext-rdap-versioning, where appropriate. I don’t
        agree with the approaches outlined in section 5.4.3 and
        section 5.4.4.  I believe it’s best for the server to support
        a default version of an extension and to support another
        version of the extension upon request, as defined in section
        3.2 of draft-ietf-regext-rdap-versioning (query parameter or
        media type parameter).  This approach has worked in EPP, where
        when the client supports multiple versions of an extension as
        defined by the login services, the server defaults to the
        latest version.  This was done for the DNSSEC extension and
        the registry fee extension.  Since RDAP doesn’t have the
        concept of login services, the server can default to the
        latest version of an extension and provide the information and
        the capability of the client to choose the version desired. 
        We can add the relationships of the opaque extension versions
        into draft-ietf-regext-rdap-versioning to help with this for
        opaque versioning in the /help response.

        Thanks,

         --

        JG


        cid87442*[email protected]

        *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://secure-web.cisco.com/1rCWVSrQwClgZQrFjfeQJfgwcyPH3PAnBUEOSSUx-JpwtAtcyF3BUH3KxJQiuHKGr_FgyKu8g0K47Z28AkCjRfiSKpo5VzcY93YfB8yvnGGwapWsnOIBvthmVZLu0ZiflXdnM6VRg7sVLyH4-K80Mh66zsz7vNWiWfxlAGsip-Ckpvr-zZnNn7SCt1gFN-i2snJs1lrurJ7lTIiwa1Nt9cALV4advw3Hg8AFzppmCOD6XSF44C7tyaZ3TL0cvHESO1kgCvBrvM70NBtW1rvUPXyzuz3tmBCQozlAutSpj724/http%3A%2F%2Fverisigninc.com%2F>

        *From: *Pawel Kowalik <[email protected]> <mailto:[email protected]>
        *Date: *Thursday, June 11, 2026 at 11:15 AM
        *To: *James Gould <[email protected]>
        <mailto:[email protected]>, "[email protected]"
        <mailto:[email protected]> <[email protected]> <mailto:[email protected]>,
        "[email protected]" <mailto:[email protected]>
        <[email protected]>
        <mailto:[email protected]>, "[email protected]"
        <mailto:[email protected]> <[email protected]>
        <mailto:[email protected]>
        *Subject: *[EXTERNAL] Re: [regext] Re:
        draft-ietf-regext-rdap-x-media-type and
        draft-ietf-regext-rdap-versioning Compatibility Topic 1: Query
        Identifiers

        Hi Jim,

        a breaking change is the one that makes the client to either
        not being able to
        make a valid request,  parse the response or misinterpret the
        response, which otherwise
        would work with the previous version of the extension.

        It may be a change to format, syntax or semantics of an
        existing field,
        removing or renaming or a field (both mandatory and optional -
        the latter would let client believe a value is not there which
        may have a semantic meaning).
        There are similar considerations related to path segments,
        request parameters and referrals.

        What I notice now is that draft-ietf-regext-rdap-extensions-12
        is in fact referring to a breaking change without really
        defining it.
        Only 5.4.2. is specifying what is a non-breaking change, which
        may imply that anything else is breaking. This may be fine, as
        long as 5.4.1 would tell it explicitly.

        Kind Regards,
        Pawel

        On 11.06.26 14:39, Gould, James wrote:

            Pawel,

            I want to understand what you're defining as a non-backward compatible change in RDAP, since most of the 
members returned are optional and the protocol requires ignoring unrecognized members, which differs from a 
provisioning protocol.  Removing of a member should not break the client and renaming a member should similarly not 
break the client.  Changing of the extension identifier could break the client if they need the extension using the old 
extension identifier.  There is no way to foresee what will break a particular RDAP client.  The best that the protocol 
can do is to provide support for the version information and to enable the client to discover and to indicate what 
extension version is desired.  As pointed out previously, any RDAP extension that choses to use the point versioning 
type should include a normative reference to the versioning extension.  A client and server adding support for a point 
versioning extension needs to also add support for the versioning extension.  We can add language to the draft to 
reflect that requirement.  A similar case would be made if an extension decided to use another versioning type defined 
by the versioning extension (e.g., extension identifier versioning that Scott brought up; although no official name has 
been given), with the exception of the opaque versioning that is there for backward compatibility and as an option for 
those that chose that type going forward.  We may want to add relationships in the versioning extension for opaque 
version extensions to provide the visibility of changes, such as stating that "example1" is a successor of 
"example0" and that "example0" is a predecessor of "example1".  Would this he helpful?

            In summary, the onboarding support of the versioning extension 
should be handled by the normative reference from new RDAP extensions that 
choose to use a type other than opaque versioning, so there should be no 
non-supporting clients of a point versioning RDAP extension.

            Thanks,

--
            JG

            James Gould

            Fellow Engineer

            [email protected] 
<applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/[email protected]> 
<mailto:applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/[email protected]>

            703-948-3271

            12061 Bluemont Way

            Reston, VA 20190

Verisign.com<http://verisigninc.com/> <http://secure-web.cisco.com/1Kjr6vhSbc6njskjsjxYUi8KOFBKvIdnK5vQS1s-v9N_MZgjrFSRd7H4cD5hSR3JwXrsUZH3uWbMODqllqDA_qQLPZyKaR_ZVfSQzOBflD8eyfzbXB24RJX_ydzGn2tZ8wgNERl7kArCNiBXSzczkggIK_gbQC_Fp6_VmOMkN4jBVPK5L6xfnuG6pNbUPpU2cRqYmqRKUIPS8mAwKP8IDzKPfxpV-sX-k1MxUrwo-zoqoH4piLBOW3vZ7CrkamXk08Gv58QJNOlJJ0ysyCyWt7v0rHYiaNoDeqkQCtHOBg-Y/http%3A%2F%2Fverisigninc.com%2F>
            On 6/11/26, 8:06 AM, "Pawel Kowalik" <[email protected] 
<mailto:[email protected]> <mailto:[email protected]>> wrote:

            Hi Jim,

            the question is about a scenario:

            - existing extension in version 1 in production, no versioning 
deployed

            because not yet specified (applied to any of existing extensions to 
date)

            - the extension upgrades to version 2, which is not back-compatible 
with

            1, assuming extension identifier does not change as you propose and 
argument

            How would this scenario work for

            a) a client which implements versioning draft vs. client which does 
not

            b) a server which implements versioning draft vs. client which does 
not

            It's a simple matrix 2x2.

            You may add additional example of the same if version 2 has a hard

            requirement for implementers to also implement versioning.

            Kind Regards,

            Pawel

            On 11.06.26 13:45, Gould, James wrote:

                Andy,

                Inclusion of some query/response examples for supporting and 
non-supporting clients are reflected in the following 
draft-ietf-regext-rdap-versioning figures:

                1. Non-supporting - Figure 8: RDAP Domain Lookup Response with 
No Client Specified Versioning

                2. Supporting - Figure 9: RDAP Domain Lookup Response with 
"point_ext1-0.1" Extension Version

                3. Supporting - Figure 10: RDAP Domain Lookup Response with 
"point_ext1-0.1" and "opaque_ext2" Extension Versions

                The only indication for the server whether the client is non-supporting or supporting is 
based on the inclusion of the Extension Versioning Request in Section 3.2. From an implementation 
perspective, a client will receive the "versioning_data" member that can be used by the supporting 
client to understand the extension versions included in the response and can be used for troubleshooting by a 
non-supporting client. The "versioning_data" member is in addition to the 
"rdapComformance" member and can be easily mapped based on indexing by the extension identifier.

                Since we have no experience with an extension transition in 
RDAP, we can look to the experience with an extension transition in EPP, which 
has been done many times. In EPP, our implementation was to return a default 
version based on the latest supported version of an extension. If a client does 
not support the latest supported version, based on the login services, the 
server returns the earlier supported version of the extension. For RDAP, the 
server can return the latest supported version of the extension and allow for 
the client to specify an earlier version of an extension using the Extension 
Versioning Request (query parameter or media type parameter) in Section 3.2 of 
draft-ietf-regext-rdap-versioning. The /help can also be used for automatic 
discovery of the extension versioning or manually for troubleshooting issues. 
The discovery can be done infrequently (e.g., daily), since the RDAP servers 
don't change their extension versions very often.

                I hope this helps.

                Thanks,

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

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

Reply via email to