Re: [calsify] JSCalendar duration vs. end time

"Alexander Nimmervoll" <nimm@caldavsynchronizer.org> Fri, 15 February 2019 07:09 UTC

Return-Path: <nimm@caldavsynchronizer.org>
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 5FDE112008F for <calsify@ietfa.amsl.com>; Thu, 14 Feb 2019 23:09:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 UpuvZd_zqVYD for <calsify@ietfa.amsl.com>; Thu, 14 Feb 2019 23:09:18 -0800 (PST)
Received: from dd40210.kasserver.com (dd40210.kasserver.com [85.13.156.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C718F1200B3 for <calsify@ietf.org>; Thu, 14 Feb 2019 23:09:17 -0800 (PST)
Received: from nbnimm (178.165.129.3.wireless.dyn.drei.com [178.165.129.3]) by dd40210.kasserver.com (Postfix) with ESMTPSA id 9F10063A0697 for <calsify@ietf.org>; Fri, 15 Feb 2019 08:09:14 +0100 (CET)
From: Alexander Nimmervoll <nimm@caldavsynchronizer.org>
To: calsify@ietf.org
References: <1550160126.3602072.1658018976.28709BD3@webmail.messagingengine.com> <aec2692f-a2dc-4004-b1e4-4e3d3680aa9b@beta.fastmail.com>
In-Reply-To: <aec2692f-a2dc-4004-b1e4-4e3d3680aa9b@beta.fastmail.com>
Date: Fri, 15 Feb 2019 08:09:17 +0100
Message-ID: <029301d4c4fd$5eaca610$1c05f230$@caldavsynchronizer.org>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0294_01D4C505.C0710E10"
X-Mailer: Microsoft Outlook 16.0
Content-Language: de-at
Thread-Index: AQOLZthb+8PHggH5/l2b8JGbRR609QKonOjiol3hCEA=
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/165yyCSbJoi1axOMCtCXH2MXKt8>
Subject: Re: [calsify] JSCalendar duration vs. end time
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: Fri, 15 Feb 2019 07:09:21 -0000

Sounds reasonable.

 

I like the idea of the extra property indication "wall-time" for duration to
handle the fixed end time special case during DST shifts, discussed in the
nightclub example.

 

So why do you stick to due instead of start+duration for JSTasks?

 

For the airline example with start and end time and fixed scheduled duration
an idea would also be to use the estimatedDuration property for the
scheduled flight-time or something similar.

 

Cheers,

Alex

 

Von: calsify <calsify-bounces@ietf.org> Im Auftrag von Neil Jenkins
Gesendet: Freitag, 15. Februar 2019 00:20
An: calsify@ietf.org
Betreff: Re: [calsify] JSCalendar duration vs. end time

 

On Fri, 15 Feb 2019, at 03:03, Robert Stepanek wrote:

Two arguments were raised in favor of adding an end time

*	It simplifies translation of VEVENTs with DTSTART/DTEND from
iCalendar.

 

Every client/server will need to be able to translate between duration and
end already, so this is unlikely to be a significant hurdle to anyone.

 

*	It allows to specify recurring events with a fixed end time even in
case of time gaps (e.g. a recurring night club that has to close at a fixed
time for legal reasons).

 

You kind-of mention this below, but I think it's important to note that this
argument is false.. You cannot do this with recurrences as they exist right
now in iCalendar. 

 

On Fri, 15 Feb 2019, at 05:25, Alexander Nimmervoll wrote:

But looking into it also from client UI perspective almost every client
allows you to choose start and end time and not start time and duration for
an event.

 

The UI is independent of the underlying data format; as mentioned above you
need to be able to translate between the two anyway.

 

Is there a reason you choose start time and duration vs start time and end
time?

 

Yes.. There are many reasons why I strongly believe duration is preferable
to end:

1.	Having two representations for the same thing requires more code
complexity, as there are two code paths to deal with.
2.	Recurrences always operate with duration regardless of whether it's
actually specified as "end time", which is very confusing. With duration,
it's very clean: you expand the start time according to the recurrence rule
and then just inherit every other property (duration is just another
property you inherit).
3.	There is no extra expressivity adding "end time". You can always
convert from end time to duration. The one exception is if the time zone
data changed so that an offset transition now happened in the middle of the
event AND in such a case you wanted the event to maintain its original end
time rather than its original duration. I contend that:

1.	This case is exceedingly rare, and not important enough to make the
common case more complex.
2.	No UI will ever be built to offer the user a choice for how to
handle this situation, so it's even less important to handle.
3.	A better way to handle it would be to add an extra property that
could be used to indicate the duration should be done in "wall clock" time;
this would then also work for recurrences, which there is no solution for in
iCalendar.

4.	Duration is guaranteed to be zero or positive, making it harder to
create an invalid event and easier to check that an event object is valid.
If you move the start of a series of events you don't need to make sure to
keep the end in sync.
5.	Should time zone definitions change, it is more likely the duration
should remain fixed and the end should shift (e.g. for flights).

 

Using start and end time allows also an easier specification of different
start and end timezones

 

This is modelled differently in JSCalendar: there is a single time zone for
the event, which is what it is scheduled in, but you can associate time
zones with locations and mark that a location is where the event finishes,
which is equivalent to the end time zone in iCalendar. This again is
clearer, as it more closely matches the semantics of iCalendar (the "end"
time zone is not used for scheduling/recurrences, it is only used for
displaying in the UI after the necessary date arithmetic). And if time zone
definitions change, again it's more likely the duration should stay constant
rather than the end time (the example everyone uses for a different end time
zone is flights: flying from Melbourne to LA is not going to get an hour
shorter if California suddenly changes its daylight saving rules).

 

Neil.