Re: [regext] Thoughts on the fundamental premise of JSContact

Mario Loffredo <mario.loffredo@iit.cnr.it> Fri, 09 June 2023 20:53 UTC

Return-Path: <mario.loffredo@iit.cnr.it>
X-Original-To: regext@ietfa.amsl.com
Delivered-To: regext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CCA3CC151545 for <regext@ietfa.amsl.com>; Fri, 9 Jun 2023 13:53:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ihOlPXltHELS for <regext@ietfa.amsl.com>; Fri, 9 Jun 2023 13:53:08 -0700 (PDT)
Received: from mx5.iit.cnr.it (mx5.iit.cnr.it [146.48.58.12]) by ietfa.amsl.com (Postfix) with ESMTP id 51E43C1516EB for <regext@ietf.org>; Fri, 9 Jun 2023 13:53:07 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by mx5.iit.cnr.it (Postfix) with ESMTP id ED970C0483; Fri, 9 Jun 2023 22:53:04 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mx5.iit.cnr.it
Received: from mx5.iit.cnr.it ([127.0.0.1]) by localhost (mx5.iit.cnr.it [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Pa-O7W2JJCGY; Fri, 9 Jun 2023 22:53:01 +0200 (CEST)
X-Relay-Autenticated: yes
Message-ID: <c884fd2d-44dd-c689-032b-08e45326999a@iit.cnr.it>
Date: Fri, 09 Jun 2023 22:49:18 +0200
Mime-Version: 1.0
To: Andrew Newton <andy@hxr.us>, Jasdip Singh <jasdips@arin.net>
Cc: "Hollenbeck, Scott" <shollenbeck=40verisign.com@dmarc.ietf.org>, "jgould=40verisign.com@dmarc.ietf.org" <jgould=40verisign.com@dmarc.ietf.org>, "regext@ietf.org" <regext@ietf.org>, Tom Harrison <tomh@apnic.net>, George Michaelson <ggm@algebras.org>, Gavin Brown <gavin.brown@centralnic.com>
References: <CAAQiQRdsPDQSBSizbA05PpMY+Jj1V_Os_Be_EnOMvD6n8d=YRA@mail.gmail.com> <EB986591-5A8F-4B23-938A-3314CCB6E372@verisign.com> <2f0bffeaba2c4e388525d4a11a20ef33@verisign.com> <3651EE47-3E81-416C-9538-DA71AA32416B@arin.net> <b41a2eca-ce36-1fce-9776-2ce745ed5048@iit.cnr.it> <B3591FC5-37D9-430C-A19F-946F05DA6FF0@arin.net> <CAAQiQReDU8_+bgbYwhSyt6cP_4E6zUzDqvOXPBYdJ3ZuZNZFWA@mail.gmail.com>
From: Mario Loffredo <mario.loffredo@iit.cnr.it>
In-Reply-To: <CAAQiQReDU8_+bgbYwhSyt6cP_4E6zUzDqvOXPBYdJ3ZuZNZFWA@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/Ijq2bIKJZbEd6mSRPu7iVNsu2CY>
Subject: Re: [regext] Thoughts on the fundamental premise of JSContact
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Registration Protocols Extensions <regext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/regext>, <mailto:regext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext/>
List-Post: <mailto:regext@ietf.org>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/regext>, <mailto:regext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 09 Jun 2023 20:53:12 -0000

Hi Andy,

please find my comments below.

Il 09/06/2023 17:41, Andrew Newton ha scritto:
> On Fri, Jun 9, 2023 at 10:03 AM Jasdip Singh <jasdips@arin.net> wrote:
>> Hello Mario,
>>
>> Your answer made my day! :) I'm still LOL about your "it wouldn't be short-sighted but completely blind" point. Yah, good to think this through before we as a WG take the next step. I recall one of the laws of simplicity [1]: law 9 which says that some things can never be made simple. May be, JSContact falls into that category. Trusting that the CalExt WG thought through about not unnecessarily introducing implementation complexity for JSContact.
>>
>> Regards,
>> Jasdip
>>
>> [1] http://lawsofsimplicity.com/
> TBH, it was the JSContact patchobject that made me re-examine this
> space. I don't know the requirements for CalExt, but the necessity to
> implement a JSON patching framework to parse postal addresses seems to
> me to be beyond what is reasonable for RDAP.

[ML] CalExt adopted the same approach in designing JSCalendar.

Anyway, the reason supporting the use of patchObject is simple: it is a 
more reusable and extensible approach than replicating in many objects 
the information needed to build language-dependent alternatives.

vCard  makes use of the LANGUAGE and ALTID parameters to build 
language-dependent alternatives. The two parameters are jointly allowed 
for about ten properties.

In designing JSContact, instead of replicating that information in each 
of the ten JSContact counterparts of those vCard properties, we opted 
for defining a single point in the spec containing all the 
localizations. So doing, language based alternatives of a contact can 
always be built in the same way. This a big vantage especially for 
client applications which can provide a better user experience by 
enabling the language selection.

For example, suppose you have a contact card whose default language is 
Japanese but an English version is provided as well.

If you want to display the Japanese version, you just need to ignore the 
localizations. If you want do display the English vertsion, take the 
contact card, apply the patches (no matter if you are patching a 
standard property or an extension), display the resulting contact card.

To be noted that extensions which can be localized don't need to include 
information to build language-dependent alternatives.

On server side,  you need to put the localized object and the 
corresponding localization in two different places but the steps to be 
done are, even in this case, always the same: construct the default 
language version of an object, put it into the right place of the card, 
construct the localization and put it as a generic object into the 
localizations map.

On both sides, you need to know JSONPointer concepts and leverage the 
capabilities of a JSONPointer library.

The implementation in jscontact-tools took to me very short time and 
frankly I'm not a great Java programmer.

Hope now it's more clear why we have used PatchObject.

Finally, consider that CalExt members usually join other forums like 
CalConnect where people are highly experienced with iCalendar and vCard.


With regard to RDAP, honestlty can't evaluate the average number of 
contact properties that might be provided in other languages but the 
example in Fig.15 of RFC 9083 includes 7 properties that could be 
potentially localized: fn, n, org, title, role and two adr intances (one 
structured and one unstructured). If we consider the contact information 
defined by RFC 5733, the minimal set of properties that can be localized 
includes: fn, org and adr.


> James has also pointed
> out several times that the JSContact UID may not be a good fit for
> RDAP.

[ML] JSContact uid takes the same role as jCard fn. Both of them are 
required. Depending on which format a server uses to represent JSContact 
uid, it can be redacted by either the replacementValue or the emptyValue 
method while jCard fn can be redacted only by emptyValue method.

Therefore, after the discussion we have had, don't see why it could be 
an issue.

Neither it looked an issue for you, if I remember well.

>> On 6/9/23, 5:02 AM, "Mario Loffredo" <mario.loffredo@iit.cnr.it <mailto:mario.loffredo@iit.cnr.it>> wrote:
>>
>> Hi Jasdip,
>>
>> Il 08/06/2023 15:39, Jasdip Singh ha scritto:
>>> True, we could define an entity object class that serves the DNR and RIR purposes with a simpler JSON, just like we chose to define domain, IP network, and autonomous system number object classes that are specific to these registries' business. However, before abandoning the JSContact effort, one question to ask would be: Would it be short-sighted in precluding future user cases for entities in other registries (say, RDAP use for space related registration data)?
>>>
>>> Jasdip
> This is a good question to ask? What if a space registry needs to use
> RDAP? Let's say they need star-dates, celestial orbital planes, and
> jump-gate coordinates.
> Does JSContact currently support star-dates, celestial orbital planes,
> and jump-gate coordinates? It probably does not, and therefore they
> would have to extend JSContact.
> So if they can extend JSContact, why can't they just write an
> extension for RDAP itself. In the end, that would be simpler IMHO.
[ML] If reasons supporting JSContact in RDAP exist, they are not 
celestial but absolutely terrestrial.
> It is also possible that we define a SimpleContact and fail to account
> for something a registry is doing today.
> If that happens, that registry can still use jCard. As Marc has
> pointed out, jCard will be with us for some time to come.
> Or they too can create an RDAP extension.
> That said, I have high confidence we can create a SimpleContact that
> addresses 99% of what is needed given the gTLD space is well-defined,
> many of the ccTLDs are similar to gTLDs (many of them run gTLDs these
> days), and the RIR space is also defined.

[ML] Think that your conclusions need no more words from my side. 
Personally I see no solid reasons to replace JSContact with another 
fully object-oriented representation based on your arguments. But I can 
be bias.

I expect that shortly the chairs will formally ask the WG members to 
manifest their support to rdap-jscontact. Whatever happens, I'll respect 
the WG decision.

Anyway, if a new representation based on a JSON transliteration of 
RFC5733 were preferred,  IMHO it would be fair that Gavin was the 
leading author.


Best,

Mario


P.S.

Lesson learned: considering that I'm almost sixty, perhaps I'm not so 
bad as a Java programmer :-)

>> [ML] Would like to answer your question trying at the same time to recap
>> the reasons why 3 years ago we didn't bring on Gavin's proposal about "a
>> straight mapping of RFC5733 contact objects into JSON".
>>
>> I remember that at ROW 2019 George Michaelson from APNIC gave a
>> presentation
>> (https://regiops.net/wp-content/uploads/2019/05/ROW8-RDAPPanel-In-defence-of-jCard%E2%80%99s-goals-George-Michaelson.pdf <https://regiops.net/wp-content/uploads/2019/05/ROW8-RDAPPanel-In-defence-of-jCard%E2%80%99s-goals-George-Michaelson.pdf>)
>> about which requirements a contact representation aiming to replace
>> jCard was supposed to meet according to his experience.
>>
>> In that circumstance, it was clear to everyone that the EPP contact
>> representation was pretty unfit to handle non-western registry data in
>> general.
>>
>> Think that hopefully all of those requirements are matched by JSContact
>> (e.g. we have recently updated the spec to better model non-western
>> addresses but the work is still ongoing).
>>
>> Tom and George, can you please say your word on this matter ?
>>
>> Definitively, I believe that embracing the proposal of a contact data
>> format based on RFC 5733 would be a huge step backwards in facing this
>> problem.
> The idea is not to solely base it on RFC 5733. We know that won't
> work. The idea is to find a simpler solution that can be mapped into
> plain structures much the same way the rest of RDAP works.
>
> And thanks to Tom and George, we do have a good idea of the needs that
> EPP doesn't provide:
> https://datatracker.ietf.org/doc/html/draft-harrison-regext-rdap-jcard-profile-00
>
> -andy
>
> _______________________________________________
> regext mailing list
> regext@ietf.org
> https://www.ietf.org/mailman/listinfo/regext

-- 
Dott. Mario Loffredo
Technological Unit “Digital Innovation”
Institute of Informatics and Telematics (IIT)
National Research Council (CNR)
via G. Moruzzi 1, I-56124 PISA, Italy
Phone: +39.0503153497
Web: http://www.iit.cnr.it/mario.loffredo