Re: [calsify] JSCalendar, recurrenceId and timezones.

Ken Murchison <murch@fastmail.com> Wed, 26 August 2020 19:20 UTC

Return-Path: <murch@fastmail.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 AF5433A0893 for <calsify@ietfa.amsl.com>; Wed, 26 Aug 2020 12:20:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.044
X-Spam-Level:
X-Spam-Status: No, score=-2.044 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, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.948, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fastmail.com header.b=b3/doBwX; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=sp9GiTwi
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lbJjcc1gxncc for <calsify@ietfa.amsl.com>; Wed, 26 Aug 2020 12:20:24 -0700 (PDT)
Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D281A3A086D for <calsify@ietf.org>; Wed, 26 Aug 2020 12:20:23 -0700 (PDT)
Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id E78185C0130 for <calsify@ietf.org>; Wed, 26 Aug 2020 15:20:22 -0400 (EDT)
Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Wed, 26 Aug 2020 15:20:22 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= subject:to:references:from:message-id:date:mime-version :in-reply-to:content-type; s=fm3; bh=BSP+WE9K8XXv6CDZJ86FoYikPfr kn1uAy0GT+JmCNlQ=; b=b3/doBwX11jJ/Dx74irNax9luYuMus1ooFuoGUAK72t qxH91KgvQFdkAidWd5BVN+7wYZUdyr+f6/UVe3rbD8KTPtMggehS+sqyoKjCJ5pF vB39OZKZllfs5eru7L+DULxXWuCpAGv+qQWcyAm7tTuA2FrIApCbKUiqPuGXEZLP GJEeGfze4ly/cC4kbCVrusxCL0UGxT+U428iDR6SaNkCWAuCIdaU4/+A2geFImg+ 4qztqqevGMT31GDxllkia2zaFfhsQGpOJeKzQ8eMPX+HoFTU2e+kxvdeU5GS/xxt 45KPkg8QHPblBA3AAKZZWmOacB9fPAWfBy4MlP+aQzg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=BSP+WE 9K8XXv6CDZJ86FoYikPfrkn1uAy0GT+JmCNlQ=; b=sp9GiTwikzhLmla0BSRTwr uoPijqRPKA1DjmHqbhqLxi6SRj+4LKS+GMKLncXJJgvHTAMF3MKOydbCjaR7yGaI maZapIEvxXdQslZlOCyxgLhQX0wj8//kciCeAUeXWcTJpRrQQQLo7K1Lxp9QqJw4 zEU3sr5Qt8GfbvcbqKZ24ytsp4O1X6/Iirn4Cls7UjIQnNkDgsLvzrHZ/ZWYvo85 vTBeCi2IRf+VDvfwz0GunqmGMkA5lRkxO8eT+hRcm1kE5kMk26kuz7iFMbOuCjZg +vTNVlQdY4l1DauaPOYp1LQms0HXbmDC4hY4/iOqvRXmDfbkm0eEPqbJWezW6zHg ==
X-ME-Sender: <xms:9rVGX-kzUUNMa0WHByuR-DAhTs246YUBjv7x_7wKrvVcVhqGuP-1Qw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedruddvvddgudefgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepuffvfhfhkffffgggjggtsegrtd erredtfeejnecuhfhrohhmpefmvghnucfouhhrtghhihhsohhnuceomhhurhgthhesfhgr shhtmhgrihhlrdgtohhmqeenucggtffrrghtthgvrhhnpeffuefhvefggfdvudeuvdetie ejuedvvdekudeggedvffevgfduffeuieelgeeggeenucffohhmrghinhepihgvthhfrdho rhhgnecukfhppeejgedrjeejrdekhedrvdehtdenucevlhhushhtvghrufhiiigvpedtne curfgrrhgrmhepmhgrihhlfhhrohhmpehmuhhrtghhsehfrghsthhmrghilhdrtghomh
X-ME-Proxy: <xmx:9rVGX12M-M4h6wHXEE0DbPT_KhwevRGNvY5FHNyhwg4A4ou0YBE_yQ> <xmx:9rVGX8qpC3Gwcmt1GOGTMCMjDiN7YxDIH4ppA4lFOAt98HEVLa1jsA> <xmx:9rVGXykznpPaIJx1zgJwdYewPGuRhZ_PplzlI358RGbAEh9vOh1WCA> <xmx:9rVGX31HtmfAKdpToGYDk_nuzRRkwD_UJUdaR2XzLoZj_ziPa3mdfQ>
Received: from [192.168.1.22] (cpe-74-77-85-250.buffalo.res.rr.com [74.77.85.250]) by mail.messagingengine.com (Postfix) with ESMTPA id 084E130600B4 for <calsify@ietf.org>; Wed, 26 Aug 2020 15:20:22 -0400 (EDT)
To: calsify@ietf.org
References: <861ab5ac-3772-a664-9da2-ffa1d1df4286@gmail.com> <ca7dd463-dd51-4077-bbe4-67a04cc78b0b@dogfood.fastmail.com>
From: Ken Murchison <murch@fastmail.com>
Message-ID: <b92651a5-f8b5-f806-e5e7-5403cc3dd91f@fastmail.com>
Date: Wed, 26 Aug 2020 15:20:21 -0400
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0
MIME-Version: 1.0
In-Reply-To: <ca7dd463-dd51-4077-bbe4-67a04cc78b0b@dogfood.fastmail.com>
Content-Type: multipart/alternative; boundary="------------E825141A5B05B53F6D2D5FB9"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/b9ItDhB0N1TvTBzstmLrzPoPnK4>
Subject: Re: [calsify] JSCalendar, recurrenceId and timezones.
X-BeenThere: calsify@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <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: Wed, 26 Aug 2020 19:20:26 -0000

On 8/23/20 8:04 PM, Neil Jenkins wrote:
> On Sun, 23 Aug 2020, at 14:19, Michael Douglass wrote:
>> When is it valid to actually have a recurrenceId property and if it
>> exists what are the constraints?
>>
>> It looks like it should never appear anywhere for a full calendar object
>> with master and overrides.
>
> Correct.
>
>> It MUST appear in a 'detached' instance which represents a single
>> override - for example being invited to a single instance.
>
> Correct.
>
>> Or - we could say it MAY appear in the override but its value MUST be
>> the same as the key.
>
> No, see section 4.3.3 
> <https://tools.ietf.org/html/draft-ietf-calext-jscalendar-27#section-4.3.3>; 
> it's in the list of keys that you can't override.
>
>> On timezones in overrides
>>
>> I haven't found anything in 5545 that says the tzid MUST be the tzid in
>> the master dtstart. Is it valid to have a recurrenceid with a different
>> timezone?
>
> The recurrence id doesn't have a time zone (or if you prefer to think 
> of it this way: its time zone is always that of the master event).
>
>> The override keys are the local date time as calculated based on the
>> master start using the master timezone.
>
> Yes.
>
>> What happens if an override changes the timezone? We can't use the
>> recurrenceId value as that's the local time in the master timezone.
>
> I don't really understand the question. This would change the start 
> time, but has no effect on the recurrence id.
>
>> This is an example of where I have difficulties:
>>
>> BEGIN:VEVENT
>> DTEND;TZID=Europe/London:20200827T130000
>> ORGANIZER;CN=MichaelDouglass;EMAIL=mikeadouglass@gmail.com:mailto:2_GM4T  <mailto:Douglass;EMAIL=mikeadouglass@gmail.com:mailto:2_GM4T>
>>   GNJSHAZTSMZVGI4DGOJTGX342WLDXXBYOPRLNIH6PUKD7HMX2AYEEI52OIDOFAJCM5XGOLY7
>>   A@imip.me.com  <mailto:A@imip.me.com>
>> UID:BC776256-F1C6-4B1D-95AF-EEBD27C8E622
>> DTSTAMP:20200823T221311Z
>> SEQUENCE:1
>> RECURRENCE-ID;TZID=America/New_York:20200827T090000
>> SUMMARY:Test rid + tzid
>> LAST-MODIFIED:20200823T221349Z
>> DTSTART;TZID=Europe/London:20200827T120000
>> CREATED:20200823T221135Z
>> ATTENDEE;CUTYPE=INDIVIDUAL;EMAIL=mdouglass@bedework.com;RSVP=TRUE;PARTSTA  <mailto:ATTENDEE;CUTYPE=INDIVIDUAL;EMAIL=mdouglass@bedework.com;RSVP=TRUE;PARTSTA>
>>   T=NEEDS-ACTION:mailto:mdouglass@bedework.com
>> ATTENDEE;CN=Michael Douglass;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;ROLE=CHA
>>   IR;EMAIL=mikeadouglass@gmail.com:/aMzkzNTI4MzkzNTI4MzkzNQPuXCcDTdG5iXfOh  <mailto:IR;EMAIL=mikeadouglass@gmail.com:/aMzkzNTI4MzkzNTI4MzkzNQPuXCcDTdG5iXfOh>
>>   cljjCSqMYrUXDcs6f1z7CyXejTR/principal/
>> END:VEVENT
>>
>> When that's converted to jscalendar we will have a recurrence id 
>> based on "America/New_York"- which won't appear anywhere - and a 
>> start time based on "Europe/London".
>>
>
> Yes, America/New_York will not appear anywhere. if you don't have the 
> master event, it's not relevant. The recurrence id is used to identify 
> unique instances of recurring events. Because we need to be able to 
> generate an id for recurrences created by a recurrence rule, we use 
> the generated date-time as the id. But it is still just an id, not a 
> date. You can override the date of an occurrence (including the time 
> zone of the date), but you can't override its id.
>
>> But what if that gets sent out as jscalendar and the recipient has to 
>> convert back to icalendar - what timezone do they use for the 
>> recurrenceid? Best guess is he wrong one "Europe/London".
>>
>
> Is there a situation where this is actually going to make a difference 
> though?


Maybe, but I don't think we have done enough testing to know for sure 
either way.  I think it would be wise for us to do some interop testing 
among different vendors (we now have at least 2), especially when it 
comes to scheduling and iTIP.  The Apple CalDAVTester has a healthy set 
of tests, including edge-cases such as above, and would be a good base 
to start from.

The Fastmail/Cyrus server stores calendar resources internally as 
iCalendar so it routinely converts JSCalendar -> iCalendar -> 
JSCalendar.  I think that we have said that not all JSCalendar resources 
can be represented as iCalendar, but if the reverse ends up being true, 
I think we are making a mistake if we publish without addressing any 
such shortcomings as it would likely hinder adoption.


-- 

Kenneth Murchison
Senior Software Developer
Fastmail US LLC