[regext] Re: draft-ietf-regext-rdap-x-media-type and draft-ietf-regext-rdap-versioning Compatibility Topic 1: Query Identifiers

Pawel Kowalik <kowalik@denic.de> Thu, 18 June 2026 17:44 UTC

Return-Path: <kowalik@denic.de>
X-Original-To: regext@mail2.ietf.org
Delivered-To: regext@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 17CA51038EFED for <regext@mail2.ietf.org>; Thu, 18 Jun 2026 10:44:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1781804668; bh=LEnfRS35BZdVMCF2fZMjX2VfW02fr0iKMNyPxsXsATA=; h=Date:From:Subject:To:References:In-Reply-To; b=tsma5uu0GPVx8K1Kq/3RvurTO7KJevmvE238ahmxMxuT7ji185BFiuZIsvLUZ5Sy+ FVkB45jXDnGPxZrpmm69flela/S2noAkHR0CEzACP1JhUl2Y3jBEFB1059hOfIR0m/ PD5vRe0EP0KL5L5c+cuG+jps22O1DYK+SRJbthr0=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.799
X-Spam-Level:
X-Spam-Status: No, score=-2.799 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=denic.de
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V3I9VlIuH03J for <regext@mail2.ietf.org>; Thu, 18 Jun 2026 10:44:27 -0700 (PDT)
Received: from mout-b-112.mailbox.org (mout-b-112.mailbox.org [195.10.208.42]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 38BF11038EFDB for <regext@ietf.org>; Thu, 18 Jun 2026 10:44:27 -0700 (PDT)
Received: from smtp102.mailbox.org (smtp102.mailbox.org [10.196.197.102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-b-112.mailbox.org (Postfix) with ESMTPS id 4gh7Q91lB9zDvNp; Thu, 18 Jun 2026 19:44:17 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denic.de; s=MBO0001; t=1781804657; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=LEnfRS35BZdVMCF2fZMjX2VfW02fr0iKMNyPxsXsATA=; b=owDSFlLIGTzsiP7ecfAJlhIiU9knW8qXVcGwyWaPXRSgTcc/5/mKdPjhk+4BiYtFtFi+uG vmWI+oAS3DnaTGIQy5DOCIVnl66sI87xFeiBEKA8kKFqDUD6oVuEbNXgWuko996c2wqAdg MlvtnA0bNb1IilWZ2XNPvHsqtRpDispS2Hrcy2SeOZQqe1+OncOz4mqRA28Cj1RVQpfegb 5mWx+QH4hRypYX1tDH9jrol1N2M4NmkEfxkVcfHW76lzDC+UW3obU+59W5uth9u2xFGgSK 8UwztCtaaB90cQANV1QtpVhV7sbvde0T+Pg8feW/svA6YHxrJ4XZHUBAKtZiEg==
Message-ID: <1a7aaee2-b6a3-4f65-8786-38ab6f55c389@denic.de>
Date: Thu, 18 Jun 2026 19:44:15 +0200
MIME-Version: 1.0
From: Pawel Kowalik <kowalik@denic.de>
To: Mario Loffredo <mario.loffredo=40iit.cnr.it@dmarc.ietf.org>, Andy Newton <andy@hxr.us>, "Gould, James" <jgould@verisign.com>, "regext@ietf.org" <regext@ietf.org>
References: <2331E2EC-2724-4180-AE01-40E60EAE6BBC@verisign.com> <5b0fe67c-694c-4b0d-85e9-05cfe80d0a05@hxr.us> <3D0593A4-C893-4162-B3D8-ED38AD14A1F4@verisign.com> <8fdba77c-3f25-4e01-901d-8f797756a4e4@hxr.us> <A4A667C6-3CCF-428F-B134-89F72634C3A4@verisign.com> <eac5c1c1-9ade-423e-a283-191070e6968e@hxr.us> <8B84D932-D73E-4CEA-A137-B823C71F3CC7@verisign.com> <7b950404-daeb-4f57-a313-d4b92bf62669@hxr.us> <cfc38d89-3a99-4269-8b1b-e684dc344511@iit.cnr.it> <b863f9e4-1457-4f3c-b3a9-c83bf7392f6c@denic.de> <638BB998-8BC8-48DC-B715-9D33B987E80B@verisign.com> <38958367-d5b1-4f25-b52a-f0a85fb79112@denic.de> <835BCF2B-9B09-4A86-AE80-9A8C24E917F7@verisign.com> <5ca19b9e-7c0f-4dab-b9ae-2ee3b28c6a06@hxr.us> <243d05bb-5185-4061-be9f-ff7e10de4698@iit.cnr.it> <b17f27d3-9649-40c7-985a-c7351fc22dca@hxr.us> <e7b7e67a-c567-4f42-a39a-c77d594e0988@iit.cnr.it> <f8f3d039-e7d0-4452-ae45-e01b45c0caef@hxr.us> <831c687d-0034-49a2-8737-ce8cad4b340a@iit.cnr.it>
Content-Language: en-GB, de-DE
In-Reply-To: <831c687d-0034-49a2-8737-ce8cad4b340a@iit.cnr.it>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha-512"; boundary="------------ms010405010005090209010608"
X-MBO-RS-META: gen58h1tjjoxi8h6zz5meksjiw7ooc3j
X-MBO-RS-ID: 7942e3c9fa301a6dbf4
Message-ID-Hash: GT754CEFNRH5EKMUBBJEK6ZQO2PEBKJB
X-Message-ID-Hash: GT754CEFNRH5EKMUBBJEK6ZQO2PEBKJB
X-MailFrom: kowalik@denic.de
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-regext.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [regext] Re: draft-ietf-regext-rdap-x-media-type and draft-ietf-regext-rdap-versioning Compatibility Topic 1: Query Identifiers
List-Id: Registration Protocols Extensions Working Group <regext.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/mBGrZROHoeh01TCcCwsDZcpcfGI>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Owner: <mailto:regext-owner@ietf.org>
List-Post: <mailto:regext@ietf.org>
List-Subscribe: <mailto:regext-join@ietf.org>
List-Unsubscribe: <mailto:regext-leave@ietf.org>

Hi Mario,

Picking some of your examples with my comment:

   "risk_ext": {
     "score": {
       "value": 0.72,
       "scale": "0-1"
     },
     "level": "medium"
   }

PK> This one, as being breaking within realm of risk_ext extension shall 
require risk_ext to change to new extension identifier (e.g. risk_ext2). 
This is what 5.4.1 of draft-ietf-regext-rdap-extensions tells.

Keeping risk_ext shall be only allowed if risk_ext implements own 
signalling of version changes which would make the change non-breaking 
in this context. draft-ietf-regext-rdap-versioning is describing such 
solution.
This is a possibility, however I don't think we should encourage such 
solutions or assume them default, which would in end effect make 
implementation more complex (e.g. simple curl | jq script won't work 
anymore).

"risk_ext": {
   "score": 72,
   "level": "medium",
   "normalizedScore": {
     "value": 0.72,
     "scale": "0-1"
   }
}

PK> this is a non-breaking change which shall be allowed to keep 
extension identifier unchanged. This is where 5.4.2. applies.

"risk_ext": {
   "score": 72,
   "level": "medium"
},
"risk_ext2": {
   "score": {
   "value": 0.72,
   "scale": "0-1"
   },
   "level": "medium"
}

PK> and this is a possible migration model if new extension identifier 
is introduced. As per 5.4.3.

Kind Regards,
Pawel

On 18.06.26 10:33, Mario Loffredo wrote:
> Hi Andy,
>
> sorry for the late reply.
>
> Please find my comments embedded below prefixed with [ML2].
>
> Il 10/06/2026 18:34, Andy Newton ha scritto:
>> Hi Mario,
>>
>> On 6/10/26 10:14 AM, Mario Loffredo wrote:
>>>> No clients do this today. But this confirms my earlier assertion 
>>>> that what is being attempted with the versioning draft is not 
>>>> backwards compatible with everything deployed today.
>>> [ML] I'm sorry, but I don't understand why you think the versioning 
>>> extension is backwards-incompatible.
>> Likewise, I don't understand why you and James are not comprehending 
>> the points that I and others have made in this thread. But 
>> miscommunication happens with complex topics. That is why I asked 
>> that the version draft include some query/response examples of how a 
>> client is suppose to handle backwards incompatibility.... both for a 
>> client that supports this versioning extension and one that does not. 
>> James seems more interested in discussing the conceptual definition 
>> of a breaking change, but since you are also one of the authors would 
>> it be possible for you to provide those examples to help clarify this 
>> discussion?
>
> [ML2] I think we can agree that a breaking change is challenging 
> whatever will be the versioning scheme, opaque, point or other.
>
> So every change should be made additive whenever possible.
>
> Hope to make myself clear with an example.
>
> Assume to have an extension called risk_ext like:
>
>   "risk_ext": {
>     "score": 72,
>     "level": "medium"
>   }
>
> risk_ext.score is an integer from 0 to 100.
>
> Not let's suppose to turn risk_ext.score into an object. This is 
> intentionally incompatible with the original version.
>
> A first point versioning approach to risk_ext v2 implmenetation 
> assuming that a non-versioning client parses the response extension 
> defensively could be:
>
>   "risk_ext": {
>     "score": {
>       "value": 0.72,
>       "scale": "0-1"
>     },
>     "level": "medium"
>
>   }
>
> but the cleanest non-breaking point versioning approach  would be 
> mostly a server-side compatibility policy like:
>
> "risk_ext": {
>   "score": 72,
>   "level": "medium",
>   "normalizedScore": {
>     "value": 0.72,
>     "scale": "0-1"
>   }
> }
>
> This would work regardless of whether clients supported the versioning 
> extension and seeems to me to be perfectly equivalent to opaque 
> versioning approaches such as:
>
> "risk_ext": {
>   "score": 72,
>   "level": "medium"
> },
> "risk_ext2": {
>   "score": {
>   "value": 0.72,
>   "scale": "0-1"
>   },
>   "level": "medium"
> }
>
> or
>
> "risk_ext_score": 72,
> "risk_ext_level": "medium",
> "risk_ext2_score": {
>   "value": 0.72,
>   "scale": "0-1"
> },
> "risk_ext2_level": "medium",
>
> On the other hand, point versioning would work much better than opaque 
> versioning in handling non-breaking changes (no data duplication, no 
> transition to manage) which are supposed to be the most frequent.
>
>
>>
>>>>> If a server implements the versioning specification, a client can 
>>>>> not only check which extensions, but also which versions of those 
>>>>> extensions are implemented by the server.
>>>> And what will the client do with that information? I have asked 
>>>> this question multiple times and have yet to get an answer.
>>> [ML] Clients may notice that a backwards-compatible change has 
>>> occurred, as explained in Section 5.4.5 of the rdap-extensions draft.
>>>
>>> They can also clearly determine the relationship between two 
>>> versions of an extension that differ by a backwards-incompatible 
>>> change, as explained in Section 5.4.
>> Nothing in Section 5.4.x says a client dynamically changes behavior 
>> upon receiving versioning information. When you say "They can also 
>> clearly determine the relationship between two versions of an 
>> extension", then what? What is client software suppose to do with 
>> that information?
>
> [ML2] The versioning_help member provides the full list of supported 
> extensions and their available versions, enabling self-configuring.
>
> The versioning_data member tells the client exactly which version of 
> each extension was used to produce the response, enabling conditional 
> parsing and fallback handling.
>
> During transitions between extension versions, clients can operate 
> with multiple versions in parallel, automatically detect when a server 
> has completed its migration, and plan their own upgrades without 
> service interruption.
>
>
> Hope I answered your questions.
>
>
> Best,
>
> Mario
>
>
>>
>> -andy
>>
>> _______________________________________________
>> regext mailing list -- regext@ietf.org
>> To unsubscribe send an email to regext-leave@ietf.org
>