Re: [calsify] Artart last call review of draft-ietf-calext-jscontact-07

Robert Stepanek <rsto@fastmailteam.com> Mon, 03 July 2023 14:22 UTC

Return-Path: <rsto@fastmailteam.com>
X-Original-To: calsify@ietfa.amsl.com
Delivered-To: calsify@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0C019C151093; Mon, 3 Jul 2023 07:22:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.095
X-Spam-Level:
X-Spam-Status: No, score=-7.095 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fastmailteam.com header.b="Sa0vrez1"; dkim=pass (2048-bit key) header.d=messagingengine.com header.b="NjVsuoVP"
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 Z7WkCN1eoxLZ; Mon, 3 Jul 2023 07:22:23 -0700 (PDT)
Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E2A0AC151089; Mon, 3 Jul 2023 07:22:22 -0700 (PDT)
Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 0FC435C00D2; Mon, 3 Jul 2023 10:22:20 -0400 (EDT)
Received: from imap43 ([10.202.2.93]) by compute6.internal (MEProxy); Mon, 03 Jul 2023 10:22:20 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= fastmailteam.com; h=cc:cc:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm3; t= 1688394140; x=1688480540; bh=z13SR5GzSHGD1/Q0blH+u7UMb5W4N1HL8H1 elMBqMPI=; b=Sa0vrez1pIzCJw42JRFeGjSyjqFcrov1EtupnxhWROJEKZeFr/W 0zcKDZDturB20+8EFDbMT0YZLqVv9KYLEqB56zX1cwfLAlw6JHuAvI6AG8ToXMig ugWnxaLeJ7MeDBoI7YwkMtMFetc0vT+nmaDfwQ8ocW7vKtQ3yeYWNNic/F+86hUH OJeWw5xJxwTndxQcTfxNgV+6jSI1r5/WyyPt5fxfy20VqZlJQ51owOz7j9DyhwKa c0xoE2z2ZgjU6JitDaFK/KU/Wv8bduEAEFi+GQ/CV6Oeo5QfRvw9XyvhvbWrjAiM kMq7e7D46EkQ4Z1PWr1iRwO+PbnFwU4Mcuw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; t=1688394140; x=1688480540; bh=z13SR5GzSHGD1 /Q0blH+u7UMb5W4N1HL8H1elMBqMPI=; b=NjVsuoVPTqpSSbSM2W5366pZZ9WLI S29TJI537JvB9uScR6AiQZOoU8sWpgSjZKK1atHQJ3TgBKcVa1JKiSPyk1dVVU35 K3NfPFpkLjToAMmLRtazql9QbALFN4bCmcRaAEG+TnABYT9X68LkbIpm14tBOnTs KMFAfoRn6fsnN028+TPViy7YJmUYpNl66gvG9OYWNhlIPdLnwCOnZrqp5oGnTtCi kRjlaRhPf0NEdLpIMI0rqaUSkgbjJQnVknLdSe6UuKefkIMWyy/mhoou9GBxBfqR ry8ct2eQ63OHZdhmotu7R8x6+Ti/XF1hL4Lee9fPGjdbOEFaRr1dn2PEg==
X-ME-Sender: <xms:m9miZESmbmVBmJiatmHXerabtHCkiP3IobKF9qN7-cQM1mbPzMwsTA> <xme:m9miZBtko0DxhV4uzesl-4NEPTqyFq3srRQcsHT2XZFRFi2Yb8waoPb4xtDwO9o6l UJCNCp8ftomhQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedruddvgdejgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkjghffffhvfevufgtsegrtd erreerreejnecuhfhrohhmpedftfhosggvrhhtucfuthgvphgrnhgvkhdfuceorhhsthho sehfrghsthhmrghilhhtvggrmhdrtghomheqnecuggftrfgrthhtvghrnhepteeugeejfe efudevgfdvlefgffdtjeeileeuleekheehfeffleekvedvtdeugeehnecuffhomhgrihhn pehunhhitghouggvrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomheprhhsthhosehfrghsthhmrghilhhtvggrmhdrtghomh
X-ME-Proxy: <xmx:m9miZOvWiqXj2ZrU5sPDTY9XB8dwyqnfzLNPjMoDpVwQ1pWM3lJVMg> <xmx:m9miZPyQg-W688Vwq1dhdVygrWp_x5XylXrCOPWdSakQiwZ_sVtmeg> <xmx:m9miZMgsliwvh68mWFXazz1COunVVg4v1JmkNofKKYzohQv9KDZXPg> <xmx:nNmiZMf3kBMWLnHe7LTsuJZpWSCEJbspYFCP8iT3eZvlGK28TSCSdg>
Feedback-ID: ia5d944da:Fastmail
Received: by mailuser.nyi.internal (Postfix, from userid 501) id 917F82D4009D; Mon, 3 Jul 2023 10:22:19 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.9.0-alpha0-527-gee7b8d90aa-fm-20230629.001-gee7b8d90
Mime-Version: 1.0
Message-Id: <3498b43d-14a1-4734-a231-7b92aca934ff@app.fastmail.com>
In-Reply-To: <5beb7882-4f67-039c-00ae-49d86277ccb6@it.aoyama.ac.jp>
References: <168207023641.10169.13335976589846153291@ietfa.amsl.com> <e77b3332-694c-413d-8fa3-c8a1f005e254@app.fastmail.com> <5beb7882-4f67-039c-00ae-49d86277ccb6@it.aoyama.ac.jp>
Date: Mon, 03 Jul 2023 16:21:58 +0200
From: Robert Stepanek <rsto@fastmailteam.com>
To: Martin Dürst <duerst@it.aoyama.ac.jp>, art@ietf.org
Cc: calsify@ietf.org, draft-ietf-calext-jscontact.all@ietf.org, last-call@ietf.org
Content-Type: multipart/alternative; boundary="13bed91259954990b7d6c4ae237a9915"
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/fK9J-Br06ReF7Dc4zICJ1pmI5UQ>
Subject: Re: [calsify] Artart last call review of draft-ietf-calext-jscontact-07
X-BeenThere: calsify@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Calendaring and Scheduling Standards Simplification <calsify.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/calsify>, <mailto:calsify-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/calsify/>
List-Post: <mailto:calsify@ietf.org>
List-Help: <mailto:calsify-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/calsify>, <mailto:calsify-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Jul 2023 14:22:28 -0000

Hi Martin,

we just published a new RFC draft version. Please find our remarks to your feedback below.

On Thu, Jun 22, 2023, at 9:39 AM, Martin J. Dürst wrote:
> > Which specific parts of the data model use too many levels? How would a straight-forward design for these look like?
> 
> As a simple example, why
> 
>    "name": {
>      "components": [{
>        "kind": "given",
>        "value": "John"
>      }, {
>        "kind": "surname",
>        "value": "Doe"
>      }]
>    }
> 
> and not just
> 
>    "name": [ { "given": "John" }, { "surname": "Doe" } ]
> 
> or maybe
> 
>    "name": {
>      "components: [ { "given": "John" }, { "surname": "Doe" } ]
>    }


We actually had tested defining components in the form:

"components: [
  ["given", "John"],
  ["surname", "Doe"],
  ["middle", "M.", {
    "example.com:foo", "bar"
  }
]

that is, a component is either an array of length 2 (kind, value) or length 3, where for the latter the third value is an object that allows for extending that component.

We decided against it: using the above form for names and addresses would either be inconsistent with the rest of property definitions, or would require to use a similar scheme for all of them. We do think that proper names trump positional arguments if order is not relevant, both for readability and correctness.

> 
> > How is JSON-LD, a Linked Data format, relevant in the context of JSContact?
> 
> At IETF 116, I asked around to find somebody who might be able to 
> explain the design decisions re. JSON in this draft, and somebody 
> (sorry, forgot who that was) mentioned JSON-LD. Then I had a quick look 
> at JSON-LD, and found a @type attribute, so I thought there was a 
> connection. But as I say above, it's not exactly JSON-LD.

We did not take JSON-LD into consideration at all. We now renamed the "@version" property to "version", if only to avoid confusion.

But for "@type" we want to stay consistent with JSCalendar (RFC 8984), and that RFC already defines the "@type" property in section 4.1.1.

> >> - I'm not usually doing this, but by chance, I read the Gen-ART review
> >>    for this document. I fully support it. In particular with respect to
> >>    legal vs. preferred names, there's also the example of researchers
> >>    preferring to use their maiden name in an academic context, and there
> >>    are cases of people with multiple nationalities that may have
> >>    different names in each nationality because of legal requirements
> >>    (the last case is orthogonal to the locale/script issue).
> > 
> > Version 10 defines the name property as "This can be any type of name, e.g. it can but need not be the legal name of a person".
> > 
> > We chose not to support multiple names in order to stay compatible with vCard in this matter. Would it help to have one "main" name and multiple "alternative" names?
> 
> You already have multiple locales. People could give different names in 
> the different locales. In some cases, that would be exactly the right 
> thing, but it would be a bad idea to have to use locales to 'cheat' in 
> order to be able to represent multiple names.

I am not against supporting multiple names on principle. We just could not find a way to make that interoperate with vCard  implementations, and in this initial specification we do not want JSContact to deviate too far from vCard.

For example, before we redefined the vCard ADR property in version 08 of draft-ietf-calext-vcard-jscontact-extensions we tested how existing vCard implementations deal with these changes. We concluded that they ignore them, which is good enough for us for backwards-compatibility. For names, however, we found that most implementations broke for multiple names or extended N property values.

A lot of existing addressbook and contact applications seem to center their model around a contact name. Even if JSContact would allow multiple names, it is very likely that we would need to come up with some way to define a single "main" name and some optional additional names. I would rather want to see such a model be defined in an extension to JSContact that also describes how to handle them in vCard.

> >> - Some (names or) addresses in the Near East (Arabic/Hebrew/... script)
> >>    may contain data of mixed directionality (right-to-left as well as
> >>    left-to-right). The document contains absolutely no information about
> >>    how to deal with such issues.
> > 
> > The document defines "locale" as top-level property to indicate a default locale for text contained in the Card, as well as the "localizations" property for specific text elements. We consider supporting multiple locales within a single String property out of scope.
> 
> This is NOT about supporting multiple locales within a single String. 
> It's about bidirectionality. The fact that a name or address, or a 
> component thereof, is in a certain locale doesn't guarantee that all the 
> characters in that piece have the same directionality.

The definition of the "language" property now states:

How to render text is out of scope of this specification, e.g., refer to [https://www.unicode.org/reports/tr9/] how to deal with different writing directions.

> My comment was on a higher level: a) How are you going to make sure that 
> for those cases where you have an example in your spec (i.e. the above 
> Russian patronymic), people follow your spec (even though it's just an 
> example). b) How are people in cultures where there are no examples in 
> your spec going to figure out which parts of their local naming 
> conventions correspond to which pieces in the spec, in a way that 
> results in an uniform use of pieces for components in that locale (and 
> hopefully locales with equivalent phenomena).

We revisited all examples, including the ones you kindly contributed to. If you find any further issues in the new RFC version we will be happy to update it accordingly.

Based on the feedback around international addresses and names, we added additional address components, giving multiple examples for what they may be used for. We also aligned the name components with the Personal Name formatting guidelines of Unicode.

In the end though, it is always up to implementations what to choose from the available options.

> >> 1.9.1: What about case sensitivity? ABNF is case insensitive, but
> >> as far as I understand, JSON object keys are case sensitive.
> > 
> > The property names are case-sensitive.
> 
> So in
>        "kind": "given",
>        "value": "John"
> both "kind" and "value" are case sensitive because of JSON, and because 
> of what your spec says about member names in JSON objects (1.3). But 
> what about "given"? Would "Given" or "GIVEN" be okay? Where does the 
> spec say so?

We now state that string values are case sensitive.

> Would you expect CardGroup documents (or any future new kinds of 
> documents) to be handled to different applications than Card documents? 
> Or would you expect applications to not be able to distinguish between 
> these different kinds of documents?
> If not, what purpose does the parameter serve?

We now removed the "type" parameter.

> 
> >> 2.1.5 locale, and 2.7.1: It may often be the case that a single
> >> set of data could be suited for more than one locale, but this
> >> cannot be expressed currently.
> >>
> >> The spec forces one of the locales to be the 'main' locale, the others to be
> >> localizations. This is quite in contrast to most other parts, where
> >> alternatives are treated on an equal footing, maybe with some preference
> >> indication. Why this inbalance? It may be inappropriate for some applications
> >> or users. (what if there's a requirement to treat different localizations as
> >> equivalent?)
> > 
> > A localization need not override all properties, it can just override a subset.
> 
> Looking at the algorithm again, that's indeed the case. Maybe it would 
> be good to have an example where that actually happens (both Fig. 36 and 
> 37 have 'complete' localizations).

The section of the "localizations" property now contains examples for that.

> > Any property values that are not localized are available across all localized variants of the Card. Likewise, a localization can remove a property without setting a new value, if the property value in the main Card would not be appropriate for that locale.
> > 
> >>
> >> 2.1.6: Using 'true' values rather than simply an array of UUIDs
> >> seems somewhat abstruse. Where does this kind of stuff come from?
> > 
> > JSContact, and RFC 8984, are designed to work well with the JMAP protocol (RFC 8620), which does not allow to remove single items of an array. A JSON set is the idiom in this context.
> 
> If the JSON spec defines sets, then that should be referenced. If 
> another spec defines JSON sets, then that should be referenced, even if 
> just informally.

The JSON spec does not define sets, nor does any other to my knowledge. It is an idiom used in both the documents of the jmap working group and JSCalendar (RFC 8984).

> I'm surprised you use "Irgendwostrasse" (would be okay in Switzerland) 
> and not "Irgendwostraße" (the correct form in Germany and Austria).

This was just me (an Austrian) typing on a US keyboard. That address is not part of the examples anymore.

> 
> As for "3 Chome-7-1 Nishishinjuku, Shinjuku City, Tokyo, Japan",
> { "kind": "apartment", "value": "3" } is definitely wrong.
> More compact, this is 3-7-1 Nishishinjuku, Shinjuku City, Tokyo, Japan
> More expanded, this is 3 Chome 7 Ban 1 Go Nishishinjuku, Shinjuku City, 
> Tokyo, Japan
> In Japanese (fully outside-in), it is 東京都新宿区西新宿3-7-1 or
> 東京都新宿区西新宿3丁目7-1 or 東京都新宿区西新宿3丁目7番1号。
> 3 is the number of a rather big block (including two Hotels and Tokyo 
> Opera City), not an apartment number.
> 
> In general (there are some exceptions), Japanese addresses have three 
> numbers for the smallest blocks (which may be a single apartment 
> building or a few small single-family houses; if there's an apartment 
> number, it's usually the fourth number.

Thanks again, we now updated the Japanese address example.

Regards,
Robert