Re: [VCARDDAV] vcarddav-birth-death-extensions update

Cyrus Daboo <cyrus@daboo.name> Fri, 04 November 2011 17:34 UTC

Return-Path: <cyrus@daboo.name>
X-Original-To: vcarddav@ietfa.amsl.com
Delivered-To: vcarddav@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 79DED1F0C3D for <vcarddav@ietfa.amsl.com>; Fri, 4 Nov 2011 10:34:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.901
X-Spam-Level:
X-Spam-Status: No, score=-101.901 tagged_above=-999 required=5 tests=[AWL=-0.698, BAYES_00=-2.599, MIME_QP_LONG_LINE=1.396, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 73ptNCYGpqoI for <vcarddav@ietfa.amsl.com>; Fri, 4 Nov 2011 10:34:11 -0700 (PDT)
Received: from daboo.name (daboo.name [173.13.55.49]) by ietfa.amsl.com (Postfix) with ESMTP id 841741F0C3C for <vcarddav@ietf.org>; Fri, 4 Nov 2011 10:34:11 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by daboo.name (Postfix) with ESMTP id E8B621C571A9; Fri, 4 Nov 2011 13:34:10 -0400 (EDT)
X-Virus-Scanned: amavisd-new at daboo.name
Received: from daboo.name ([127.0.0.1]) by localhost (daboo.name [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id i4xp8YbvTDQI; Fri, 4 Nov 2011 13:34:08 -0400 (EDT)
Received: from caldav.corp.apple.com (unknown [17.45.162.46]) by daboo.name (Postfix) with ESMTPSA id AF29A1C5719D; Fri, 4 Nov 2011 13:34:07 -0400 (EDT)
Date: Fri, 04 Nov 2011 13:34:04 -0400
From: Cyrus Daboo <cyrus@daboo.name>
To: Barry Leiba <barryleiba@computer.org>, vCardDAV <vcarddav@ietf.org>
Message-ID: <9FE424074AAF9DE563907947@caldav.corp.apple.com>
In-Reply-To: <CAC4RtVAZVa7kOMvgufL8wZC3Uc7iW4H9==SynCdas+UA1XEmEw@mail.gmail.com>
References: <CAC4RtVBLpmkZJP3+qFNp+87BCAgKahRQ8OWgrLd0Q7-NggdPYA@mail.gmail.com> <4EB3DF52.9020302@viagenie.ca> <1E4E86DF2C18BFEDE8B074E3@caldav.corp.apple.com> <CALaySJJmph-d1P+5_5QREhzKfDH7xeH3dz1YqdBG-MKLktRibw@mail.gmail.com> <CAC4RtVAZVa7kOMvgufL8wZC3Uc7iW4H9==SynCdas+UA1XEmEw@mail.gmail.com>
X-Mailer: Mulberry/4.1.0a1 (Mac OS X)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline; size="3388"
Subject: Re: [VCARDDAV] vcarddav-birth-death-extensions update
X-BeenThere: vcarddav@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IETF vcarddav wg mailing list <vcarddav.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/vcarddav>, <mailto:vcarddav-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/vcarddav>
List-Post: <mailto:vcarddav@ietf.org>
List-Help: <mailto:vcarddav-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/vcarddav>, <mailto:vcarddav-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Nov 2011 17:34:12 -0000

Hi Barry,

--On November 4, 2011 4:12:08 PM +0000 Barry Leiba 
<barryleiba@computer.org> wrote:

>> Happy to do that, if no one objects.  I'll go ahead and make the
>> change, and put the version into SVN for now.  I'll just do it by
>> reference, saying that the description of ADR describes this as well.
>
> Updated; same URL:
> http://trac.tools.ietf.org/wg/vcarddav/trac/browser/draft-ietf-vcarddav-b
> irth-death-extensions-02.txt
>
> Please check to make sure I got it right, including the ABNF and the
> examples.

1) So in the formal syntax for each property you list altid-param, but in 
the template "Property Parameters", ALTID is not listed.

That said, I am wondering why "Property Parameters" appears to be missing 
from all the properties in RFC6350. The template says that parameters MUST 
be listed (actually it says "Any of the valid property parameters for the 
property MUST be specified." but that really ought to be "All of the 
valid..."). It seems a little odd for 6350 to not follow its own rules...

2) The formal syntax for DEATHDATE splits out the sets of parameters valid 
for each value type. Shouldn't that also be done for BIRTHPLACE and 
DEATHPLACE?

3) I am a little concerned about introducing new "compound" properties 
(having previously said +1 to that). The problem is how will existing vCard 
parsers handle those? The key issue being \ encoding of ;. Specifically 
6350 says:

   Some properties (e.g., N and ADR) comprise multiple fields delimited
   by a SEMICOLON character (U+003B).  Therefore, a SEMICOLON in a field
   of such a "compound" property MUST be escaped with a BACKSLASH
   character.  SEMICOLON characters in non-compound properties MAY be
   escaped.  On input, an escaped SEMICOLON character is never a field
   separator.  An unescaped SEMICOLON character may be a field
   separator, depending on the property in which it appears.

Now, a parser that does not know BIRTHPLACE is compound, could read it in 
as "plain" text, and re-generate it using \; in place of ; (because it says 
"SEMICOLON characters in non-compound properties MAY be escaped."). That is 
going to be problematic. In fact this is a subset of a bigger problem with 
extensibility that also crops up in iCalendar - namely how do existing 
parsers cope with new properties whose default value type is not TEXT? 
e.g., URIs can contain comma characters, so a parser not aware of the fact 
that a new property's default is URI could reject the vcard because of an 
unescaped comma, or could "tolerate" it but then re-generate the value with 
a \, - which would make it an invalid URI.

Now, one solution to the later problem is to always require a VALUE= 
parameter on new properties even when the actual value type is the default 
(except perhaps if the default is TEXT). That should "force" existing 
parsers to properly parse the value and properly regenerate it.

As to the first problem with compound value types, I am not sure what the 
answer is other than to not allow those in extensions (which would kind of 
break this extension). It probably would have been better to have a 
"TEXT-LIST" value type to indicate a compound value...

NB One way around both problems would be for parsers to treat any 
unrecognized property's value as "raw text". i.e. store and re-generate 
as-is without applying any kind of encoding/decoding.

-- 
Cyrus Daboo