Pawel,

Hopefully one of the RDAP extensions will open your eyes to the value, as the 
Registry Fee Extension in EPP did for me.  I agree that adding the third 
“temporal” version type will add confusion.  It or any other versioning type 
can be added in the future if there is a driving need for it.

In the -02 draft, we did add “rdap_level_0” as an opaque extension in the 
“versioning_help” and “versioning” members.  We also added the following 
paragraph in Section 4.1, which would support the use of semantic versioning 
(or other versioning type) of a subsequent version of RDAP itself.

The string literal "rdap_level_0" included in the RDAP Conformance data 
structure, defined in Section 
4.1<https://rfc-editor.org/rfc/rfc9083#section-4.1> of 
[RFC9083<https://www.rfc-editor.org/info/rfc9083>], is a special form of Opaque 
Versioning that signifies the version of the RDAP protocol itself. The 
"rdap_level_0" literal is treated as a Opaque Extension Version 
Identifier<https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-versioning#opaque-versioning-identifier>
 (Section 
4.1.1<https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-versioning#opaque-versioning-identifier>)
 and included in both the "versioning_help" 
member<https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-versioning#versioning-help-member>
 (Section 
3.3.2<https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-versioning#versioning-help-member>)
 and the "versioning" 
member<https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-versioning#versioning-member>(Section
 
3.3.3<https://datatracker.ietf.org/doc/html/draft-ietf-regext-rdap-versioning#versioning-member>).
 Future versions of the RDAP protocol, such as "rdap_level_1", can be defined 
in the future and is treated as a string literal in a similar fashion as 
"rdap_level_0", but MAY use a different Versioning Type.

We may want to include the “rdap_level_0” extension identifier and reserve the 
“rdap” extension identifier in the RDAP Extensions Registry for the future.  
Thoughts?

Thanks,

--

JG

[cid87442*image001.png@01D960C5.C631DA40]

James Gould
Fellow Engineer
jgo...@verisign.com<applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/jgo...@verisign.com>

703-948-3271
12061 Bluemont Way
Reston, VA 20190

Verisign.com<http://verisigninc.com/>

From: "kowa...@denic.de" <kowa...@denic.de>
Date: Friday, November 15, 2024 at 6:55 AM
To: James Gould <jgo...@verisign.com>, "mario.loffr...@iit.cnr.it" 
<mario.loffr...@iit.cnr.it>, "jasd...@arin.net" <jasd...@arin.net>, 
"regext@ietf.org" <regext@ietf.org>
Subject: [EXTERNAL] Re: [regext] Re: RDAP versioning draft feedback


Hi Jim,

See my response to Mario's Email for my take on semantic versioning itself. 
TL;DR; Not fully against it but aware that the value is more limited than is 
assumed. But keep it the only variant.

And yes, building versioning into the main protocol and declaring it rdap-1.1 
would be an approach I would support. As this would be a non-breaking change it 
should not break any client, shouldn't it? This way we may also define the same 
versioning schema for rdap itself, which is now not a part of the draft.

Kind Regards.

Pawel
On 14.11.24 17:15, Gould, James wrote:
Jasdip,

I believe that we can agree to disagree on the value of semantic versioning.  
There are some within the working group that do believe that there is a need 
for semantic versioning in support of implementing new versions of RDAP 
extensions while they’re not finalized and introducing new RDAP extension 
versions that may not be backward compatible.  The semantic versioning provides 
for the needed level of isolation and having the meta-data and support within 
RDAP has value.  There is nothing forcing an RDAP extension author to support 
semantic versioning, but if they do support semantic versioning, it’s 
completely backward compatible to what’s defined within the base RDAP RFCs.  If 
I foresee many revs of the extension during development, I recommend semantic 
versioning to encourage development with the needed client features (meta-data 
and providing their preference in the query).  That is my recommendation, which 
is not included in the versioning draft.  We’ve even discussed bumping of RDAP 
itself (rdap_level_0 to rdap_level_1 or better yet rdap with semantic 
versioning rdap-0.X moving to rdap-1.0 or rdap-1.X moving to rdap-2.0).

The versioning draft supports both opaque and semantic versioning for the 
extension authors to decide on.  Should we add the third “temporal” versioning 
type that we discussed at IETF-121 now in the versioning draft or wait to 
define it if and when its needed?  I get the sense that if we’re discussing the 
use of semantic versioning, adding a third versioning type is unneeded.  
Thoughts?

Thanks,

--

JG

[cid:image002.png@01DB3737.54727DC0]

James Gould
Fellow Engineer
jgo...@verisign.com<applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/jgo...@verisign.com>

703-948-3271
12061 Bluemont Way
Reston, VA 20190

Verisign.com<http://secure-web.cisco.com/1WKDx6Y2vw7Qm_0N3VoPZtV8CliLyDXfcKEFT5Cf7x-EgKw5apgkm-F9DsEt0ikcZjph41hvMp7kMVRrOF7rsctiQm81j0bvzwl-GBkEV34j61sO_yXogmKMTbMKz2BZQg7aaiV2EQf-35wRGdsh3ffCbuoVemmLV7UIvRIRcXyYA_aRMC-ieIcAPDT07wToZFlJwnFjGgqgr4DcuDc-MVzd-HUiJZYJZwRZqUttwkm2jTvJ2tBcH1W6Bq7rsBHzXC2E0PEoXWWo2JSmLzuRmtPZs8A5cmDjN3Om3LlggesQ/http%3A%2F%2Fverisigninc.com%2F>

From: "kowa...@denic.de"<mailto:kowa...@denic.de> 
<kowa...@denic.de><mailto:kowa...@denic.de>
Date: Thursday, November 14, 2024 at 10:01 AM
To: Mario Loffredo 
<mario.loffr...@iit.cnr.it><mailto:mario.loffr...@iit.cnr.it>, James Gould 
<jgo...@verisign.com><mailto:jgo...@verisign.com>, 
"jasd...@arin.net"<mailto:jasd...@arin.net> 
<jasd...@arin.net><mailto:jasd...@arin.net>, 
"regext@ietf.org"<mailto:regext@ietf.org> 
<regext@ietf.org><mailto:regext@ietf.org>
Subject: [EXTERNAL] Re: [regext] Re: RDAP versioning draft feedback


Hi Mario,

I would really like to see how many versions we envision to be facing in the 
lifecycle of an extension.

We are talking here not of version of an application software, but of a 
specification. So not every server change would lead to deprecation process. 
The specifications do not rotate that often to justify semantic versioning. 
Especially the draft defines own semantic versioning instead of taking just the 
one from 
https://semver.org/<https://secure-web.cisco.com/19t6tkaB5-w46rJG4AqdwU7thmx8de8AX_4wTdz2v4lU1KJSxdPY7Hh1Lg52kzSuMNoAwLzhck0UKX0AEiuDTLGYcShsc5AZxvzOXhQXCNL66kPTxkz2latb0_DjxiinA9qIy_W3dN-GlPO2ZLdjLwGXSiV18kbBvQMqgE3hbdQHHxpR-AFuDDWR_ln7IXOu-pUsihvhAtama9sMtsBCKnUicbxaeWmwkCOpoxCtM5-sbi6TpjOgW_bTAloEZf-SP0nV0tu6E99TP_kEchTJwgdtHnamZzERUofukJ9YuVsw/https%3A%2F%2Fsemver.org%2F>
 which means custom development to be compliant.

If there is no-braking change then the version is just informational for the 
client.

If there is a breaking change then the client must be aware of the version it 
supports and this can be covered likely with the same effect by taking new 
extension identifier. Also here range compatibility, that semantic versioning 
brings, is likely more than needed for the use case.

Kind Regards,

Pawel
On 12.11.24 12:18, Mario Loffredo wrote:

Hi Pawel,


Il 12/11/2024 08:27, kowa...@denic.de<mailto:kowa...@denic.de> ha scritto:

Hi Jim,

Looking forward to more motivation information from the authors then and Andy.

Adding yet another versioning type seems to me going into direction of even 
more complexity. My argument was rather to just stay with opaque and restrain 
from defining anything beyond that.




Based on the fact that the use of opaque versioning results in managing a 
deprecation process at every server change, I believe that semantic versioning 
goes into direction of less complexity.

AFAIK changes on REST APIs are most likelty additive as the must is to avoid 
breaks as much as possible, likewise I expect the same trend in RDAP.

Hence, IMO semantic versioning would be preferable.


Best,

Mario





I would like also to feedback on this particular issue of normative MUSTs in 
"start" and "end" attributes.

> [JG] I’m not clear why removing an expired version from the list of returned 
> with a normative MUST poses an issue.  A client would know based
> on the normative MUST that any “end” extension version identifiers would not 
> have already expired.  Clients will know in-band when an
> extension version identifier is going to be supported or going to be removed. 
>  This does come into play when a server is implementing an
> Internet Draft that goes through many versions.  An example is changing the 
> versioning extension from version “0.2” to “0.3” in draft-ietf->
> regext-rdap-versioning-02.

From the draft:

"start:" - [...] Once the date and time has passed, the "start" member MUST be 
removed.

"end" - [...] Once the date and time has passed, the extension version object 
MUST be removed and the extension object MUST be removed if the last extension 
version object is removed.

There seems to be a lot of focus put on time as the prime dimension when the 
versions are phased in or out. I would argue it is the only way of doing it or 
even if this is the common operational practice these days.

In case of "end" it shall communicate, that after this date the extension 
version may not be available anymore. It should remain purely informative and 
tell the client: "if you are using this extension, you likely have a problem 
beyond this date. Take care to move to a newer version or other functionally 
equivalent extension". No more than that. Operationally the operator may for 
example want deploy a new version of RDAP server without support for this 
particular extension version after this date, not to break this promise, so it 
should be just OK to have a version supported beyond the date announced as 
"end".

Similar for "start", if this ought to be an information when operator would 
start supporting the version and be an indicator that the version is not yet 
there, but will be... eventually. The operator should be able and allowed to 
deploy it even before this date or also after. Other aspect is if the operator 
will even have enough information to provide "start" date if the RDAP server 
software would be coming from a third party and the software provider wouldn't 
be able to tell when the operator would deploy the new version, so it would 
have to be a kind of configuration option that the operator would have to 
maintain.

So if the new version of the extension is deployed, the "start" date would just 
disappear. So I would rather state the "start" MUST NOT be announced for an 
already supported extension version. Or would that also not always be true? For 
example if the operator would like to have an extension version supported, but 
as "preview" or "beta"? Would "start" then indicate an official support? Just 
don't get me wrong - I'm not trying to add even more features, rather to state 
that "start" is either operationally difficult, misleading or semantically not 
precise enough to be useful. So let's rather drop it.

Just a proposal: maybe the whole lifecycle could be done much easier just 
providing a simple status field to the extension version: "deprecated", 
"productive" (default if not provided), "beta".  For "deprecated" maybe 
"supportedUntil" could be useful.



And one more thing.

The draft is about extension versioning. How about RDAP version itself? If the 
argument would be that clients need all of those functionality of versioning 
for interoperability, wouldn't it be to the same way applicable to the protocol 
itself? It would be useful for the clients if there would be one mechanism same 
for protocol and extensions, not two.

Kind Regards,

Pawel


On 11.11.24 18:52, Gould, James wrote:
Pawel,

Pawel, thank you for your feedback.  The co-editors of the versioning and 
x-media drafts met at IETF-121 and agreed to the following:


  1.  Add reason language to the semantic versioning section.  Andy Newton is 
going to provide the use case information that is associated with his 
experience with investigating RDAP issues.
  2.  Look to add more meta-data in the /help response.  Andy Newton to provide 
sample JSON for the additional meta-data.
  3.  Update x-media to reference the Extension Version Identifier ABNF in 
versioning, which will ensure compatibility.
  4.  Add support for temporal versioning, based on RFC 
3339<https://secure-web.cisco.com/1KefTmY9x7qHmzIVAJVnx41CkQ0r8JQVrIsH5Xp2hPlbyOwip3EIa2nXQmI-1qz_EkZkTkmxDKsDoDpxkLgmOZk6LwjfHuIqp2k6pvwKWwnF0g2elA7HfVa5aHMeeeKbAPGiuQqHnifg_wRxTeowbbVAoUoNmzuK2vGWOcP1d1TrBCCBJbBAjnepS7b3DqnEB5cvm5qO17l9GUrkk6_fCBZfvL6mdciDhKhUoj2qBt9stT1ibcfkiWO4LM65jly8aav_otFzH5sRp_6ddxXZkzQmI3wtsC9pMNg-yVr-jcow/https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc3339>.

     *   It would be good to get your feedback with adding a third versioning 
type, since you asked the question about the need to define and register the 
versioning types.
     *   To answer your question, we know that there are two types of 
versioning (opaque and semantic) discussed thus far, but there may be other 
types considered in the future.  Adding the temporal version type would provide 
another example.

  1.  “rdapx” to be added in the RDAP Extensions Registry for x-media.
  2.  x-media to look to use “rdap-x+json” in the accept header and to use the 
existing “rdap+json” in the content-type header.  Andy Newton will check with 
SMEs on this.
  3.  Agreed to keep the x-media and versioning drafts separate with normative 
reference between them.

I provide additional responses to your feedback embedded below, prefixed with 
“[JG]”.

--

JG

[cid87442*image001.png@01D960C5.C631DA40]

James Gould
Fellow Engineer
jgo...@verisign.com<applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/jgo...@verisign.com>

703-948-3271
12061 Bluemont Way
Reston, VA 20190

Verisign.com<http://secure-web.cisco.com/1fa6zxWFjes8yVno3pZMPDu-7wyyuqTdtaYxGJWfKE3ak75bJsfGAvfZAcfSYB4t5O6XQx8xkuAw0ykXRhiJZctpRU0PNqhv9b8SbEQ_JCZR716qz7b7K7pq3ObTSPM7WpjNdbOinQ1ZcV3ne_3mO7DrdVZgBCqEs2sQMReZ9sk9Nsr-9SN-sq4pld72HPjBZwm0b8tB-4vbQX-KLuJyMkX3zE6GVkLmwEHxelhqus2929QSGCOuPIX4WYFC-WxH6OV2vC1Fmg0oFu5-V9mLUS7mu0rcaAfgNVnlxTuO2Qhc/http%3A%2F%2Fverisigninc.com%2F>

From: "kowa...@denic.de"<mailto:kowa...@denic.de> 
<kowa...@denic.de><mailto:kowa...@denic.de>
Date: Monday, November 11, 2024 at 12:02 PM
To: James Gould <jgo...@verisign.com><mailto:jgo...@verisign.com>, 
"jasd...@arin.net"<mailto:jasd...@arin.net> 
<jasd...@arin.net><mailto:jasd...@arin.net>, 
"regext@ietf.org"<mailto:regext@ietf.org> 
<regext@ietf.org><mailto:regext@ietf.org>
Subject: [EXTERNAL] Re: [regext] Re: RDAP versioning draft feedback


Hi Jim,

To recap on what we discussed in Dublin and to also have input from the working 
group.

Jasdip stated a very valid question. Reading through the draft in more detail I 
also have a feeling that we are trying to use a sledgehammer to crack a nut.

The problem to solve was that RDAP was lacking of clear way of signalling that 
there is a different version of the same extension, so the client would know 
that foo1 and foo99 are indeed version of the same extension and not different 
unrelated extensions.

What the draft proposes is very feature reach, but does not tell a lot about 
why clients and servers should spend time implementing all of its features. Do 
we expect an RDAP extensions to have tens or hundreds of versions, so that the 
clients would need to apply a logic of semantic versioning to work on ranges of 
versions and distinguishing major and minor versions? If we talk about 
extensions from IETF control this is not likely to happen, just because of how 
IETF process works. Why do we need extensibility to even support more 
versioning semantics (Versioning Type)?

[JG] We will be adding the reason language for the semantic versioning, but 
providing the meta-data in the /help response would help for software clients 
and client users trying to troubleshoot issues.  The versioning type definition 
and registration makes sense for what we know today.  Other forms of versioning 
could be created in the future with the temporal type in, based on RFC 
3339<https://secure-web.cisco.com/1KefTmY9x7qHmzIVAJVnx41CkQ0r8JQVrIsH5Xp2hPlbyOwip3EIa2nXQmI-1qz_EkZkTkmxDKsDoDpxkLgmOZk6LwjfHuIqp2k6pvwKWwnF0g2elA7HfVa5aHMeeeKbAPGiuQqHnifg_wRxTeowbbVAoUoNmzuK2vGWOcP1d1TrBCCBJbBAjnepS7b3DqnEB5cvm5qO17l9GUrkk6_fCBZfvL6mdciDhKhUoj2qBt9stT1ibcfkiWO4LM65jly8aav_otFzH5sRp_6ddxXZkzQmI3wtsC9pMNg-yVr-jcow/https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc3339>,
 may being added to the draft as well.  Please let us know whether you support 
adding the temporal type.  I know from implementing EPP extensions that are not 
RFCs, having versioning provides isolation and the ability for the co-editors 
to encourage implementation without risking breaking clients.

What we expect clients to do with all the related lifecycle information 
(start/end/default)? I can make some usefulness for the "end" attribute (like 
warning about using deprecated interface), but mandating the server (normative 
MUST) to remove the support exactly at this time seems like a void requirement, 
as operationally quite hard to fulfil unless the server would implement special 
logic for management of versions of extensions. A bit of overhead for very 
little gain if you ask me. "start" is something with even less usefulness as we 
are talking about future version. Here there are a lot of assumptions that the 
server deploys a future version and only activates it later at a given point in 
time. Again a logic not really needed. The client will learn about new version 
when it's there and supported by client anywhere.

[JG] I’m not clear why removing an expired version from the list of returned 
with a normative MUST poses an issue.  A client would know based on the 
normative MUST that any “end” extension version identifiers would not have 
already expired.  Clients will know in-band when an extension version 
identifier is going to be supported or going to be removed.  This does come 
into play when a server is implementing an Internet Draft that goes through 
many versions.  An example is changing the versioning extension from version 
“0.2” to “0.3” in draft-ietf-regext-rdap-versioning-02.

I would double what Jasdip stated below, that opaque versioning - with just 
adding semantics to one symbol "-" splitting extension identifier into name and 
version would do the same good job and be a way simpler.

[JG] Adding the use of the ‘-‘ delimiter with a version is exactly what 
draft-ietf-regext-rdap-versioning is doing, but maintaining compliance with the 
base RDAP RFCs by not touching the extension identifiers in the rdapConformance.

If someone would like to release a new version of their extension every month 
(as sais likely outside of IETF), another semantic for versioning would be good 
for it and within the opaque version part. But then it might be a part of their 
particular specification and would only concern clients dealing with this 
particular extension.

K.I.S.S.

[JG] The external version identifier pretty much matches the concept of the XML 
URI in EPP and the extension identifier prefix matches the concept of the XML 
prefix, which means that an updated draft can add features reflected in the 
version extension identifier without having to touch the extension identifier 
prefix.  The whole idea is not to require to communicate versions out-of-band 
(e.g., EPP 03/07 or 05/07 for those that have been around for a while) when the 
extension identifier does not change between extension versions with material 
changes.

Kind Regards,

Pawel
On 03.11.24 22:50, Gould, James wrote:
Rationale for versioning:

Section 1 says, “The RDAP Conformance values are identifiers with no standard 
mechanism to support structured, machine-parseable version signaling by the 
server.” It’d be good to elaborate with usage scenarios where such structured 
versioning is a value-add for clients beyond what the opaque (no inner meaning) 
extension identifiers from STD 95 afford. Let’s say an extension is “foo1”, 
then “foo99”, and later “foo2” in terms of “versions”. The server announces its 
support for these non-structured extensions, say, on its web site or through 
the “rdapConformance” member in a /help response, and the clients can then 
negotiate a particular non-structured version of this extension using the 
standard HTTP content negotiation methodology (e.g., using the RDAP-X media 
type). In the spirit of what-not-to-do, it is fair for a client to ask: Why 
should I go through the overhead of processing the “versioning_help” member? 
What value-add does it get me? Is it in some way a better discovery and/or 
negotiation method for RDAP extensions? Would be good to beef up the rationale 
for structured versioning.

JG – We need to ensure that RDAP-X supports the extension version identifier as 
well, so there should be no variance between the versioning extension and the 
RDAP-X extension.  We can add more rationale in Section 2 “Semantic 
Versioning”, where a server could support multiple versions of an extensions 
that are signaled as related.  For the versioning extension itself, there have 
been multiple versions of it that are not structurally different and not 
backward compatible, with the latest version being “versioning-0.3”.  Other 
RDAP extensions could leverage semantic versioning during development to 
encourage implementation with version isolation and with clear relationship 
between the extension version identifiers.  Do you believe that we should look 
to add the concept of relationships between opaque version identifiers?

Kind Regards,

Pawel




_______________________________________________

regext mailing list -- regext@ietf.org<mailto:regext@ietf.org>

To unsubscribe send an email to 
regext-le...@ietf.org<mailto:regext-le...@ietf.org>

--

Dott. Mario Loffredo

Senior Technologist

Technological Unit “Digital Innovation”

Institute of Informatics and Telematics (IIT)

National Research Council (CNR)

Address: Via G. Moruzzi 1, I-56124 PISA, Italy

Phone: +39.0503153497

Web: 
http://www.iit.cnr.it/mario.loffredo<http://secure-web.cisco.com/1pPX37bpVYfAb7MaLZblOKQ85YIwsQ_nMCRLjVj-Sw0fLFS691I0md_lMu08Muoku5IH60r8Hc2AVJGnVC2_em8WTUoaty8Bgjub6RrmJ0Vgu6-RfCIh7mRu73sg6ZtsKx3ATFRZHiw_8EzssbnvKAhaPuwZgCUkDhYqEaF0uOIgn7aYvsUQX8n23JkWQ9Og7XR8V_woNmTD2zCf59e_a3an05IpvKOAbbf0jEmc7hOABMe2OUu8VxQFiYoohJYta2ETwBbSQDWWHrLjUD1fPQUSDUEOmtwGG1BeAmfcWExA/http%3A%2F%2Fwww.iit.cnr.it%2Fmario.loffredo>
_______________________________________________
regext mailing list -- regext@ietf.org
To unsubscribe send an email to regext-le...@ietf.org

Reply via email to