[calsify] JSCalendar: alternative to current all-day events

"Robert Stepanek" <rsto@fastmailteam.com> Thu, 06 June 2019 15:56 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 04CBA12018A for <calsify@ietfa.amsl.com>; Thu, 6 Jun 2019 08:56:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-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=K0kz/5pp; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=a7u5e43d
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 ZW7NT61QU5DJ for <calsify@ietfa.amsl.com>; Thu, 6 Jun 2019 08:56:23 -0700 (PDT)
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7FC4612015D for <calsify@ietf.org>; Thu, 6 Jun 2019 08:56:23 -0700 (PDT)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 9892C21C48 for <calsify@ietf.org>; Thu, 6 Jun 2019 11:56:22 -0400 (EDT)
Received: from imap7 ([10.202.2.57]) by compute1.internal (MEProxy); Thu, 06 Jun 2019 11:56:22 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= fastmailteam.com; h=mime-version:message-id:date:from:to:subject :content-type; s=fm2; bh=tC+5nLuI5DjugapIqTlmkWvls82jTqM33zjyVYo yjfc=; b=K0kz/5ppaiOMCjMR1OoGdL1wZoe6RexydBZNTh1jJfKJ61vTyIBy9TG srQ8Ao0WY4Cst6QBCf2DeFJ2HRiyRhLnF/AgSgaSvCpR6WpA+ZSNHpgLus1ZiBJL 42PgS+cbf0Z/TY9bNPimZKH7OG0snJI5V84Pg32GlUPBBr0hubHunuNLKLVUu4AC 5o2aCt9xV1ufT5OLGEZc7gzuoJlJ2Io5NAlOLA4xf1coX53j0ehxVwZG1KxMDnps lsMvrOPzNIeXxRVaLWR4C1NLWKgl7EJGkJGrGZeD3VA3BS/zxIXRW9GIFyvXqAYq IOjTyBfPqPPko54T9uYkgbKWzdlcPRA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=tC+5nLuI5DjugapIqTlmkWvls82jT qM33zjyVYoyjfc=; b=a7u5e43dbcN3dhJrwZVTXe3N+YxuJWZE3prpEX2objNQp udZnuN8weaGJhv6NCfEMjfpL8EqSsB6Cj/haYuFqyCAApSq7qWxGfM2nHNlansQq LkFc1v6jABWnR55X5SIl7yEzDf4qQEktLA9F8nxY99kVJa32NF5Dq6o2zuL+35Nc JU5iS4sDJOTmK6Q5qL6m+00GWJRYd8xJiyr+UEzy5WMPLsmEEZ2THvsjAx5C4wQQ dufiz7BLsUb1RWrIZGFOSuVy1R48Ean7G3tbhMO7OvUB7saqnz3v23je65Fll/su wn+41tHqCFS0q6kfl9GPt9JbrwedyEWN1CHTl8dbg==
X-ME-Sender: <xms:pjf5XDD7pl9vkPFXuHOHRNNaoDl4PtQHa21zDvKxJGV1sNzZhoKtCg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduuddrudeggedgleeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefofgggkfffhffvufgtsegrtderre erredtnecuhfhrohhmpedftfhosggvrhhtucfuthgvphgrnhgvkhdfuceorhhsthhosehf rghsthhmrghilhhtvggrmhdrtghomheqnecurfgrrhgrmhepmhgrihhlfhhrohhmpehrsh htohesfhgrshhtmhgrihhlthgvrghmrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd
X-ME-Proxy: <xmx:pjf5XIpOkbjIYitifHAtLFPBak8_TuiEG9SG69UskdAOo7Svu5swAA> <xmx:pjf5XDl_JDDKlBccfsow8mZSbN6JkZ2tP4HNOSIaAtkzhEBb7YCFRw> <xmx:pjf5XFV0Z5rT5Q6VU8SOfPt37Dfm99yYAAp5w7gKUo71qQoDnRTZ_A> <xmx:pjf5XNJp6LbaYm_ktgyltWENd-D1yA4bQABht832PxxOkBNzsgiRNg>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id E4CAD1801FB; Thu, 6 Jun 2019 11:56:21 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.1.6-662-gd87dd0f-fmstable-20190606v1
Mime-Version: 1.0
Message-Id: <7ec4462f-9e69-409e-9925-6f0beae7424c@www.fastmail.com>
Date: Thu, 06 Jun 2019 16:56:21 +0100
From: Robert Stepanek <rsto@fastmailteam.com>
To: calsify@ietf.org
Content-Type: multipart/alternative; boundary="107ff695754244bdb98b3a427506082c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/4THFEO2PBo9dFThvY25dylX0yug>
Subject: [calsify] JSCalendar: alternative to current all-day events
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: Thu, 06 Jun 2019 15:56:31 -0000

One of the repeatedly discussed topics in JSCalendar is how to model all-day events.

Specifically, variants of the following uses repeatedly come up, where the current JSCalendar model seems not to be adequate:

 * Calendar users create an event starting e.g. 8am and ending 7pm, but want to view this an all-day event in their UI. The current model misses a flag to express this, as the isAllDay property is not appropriate to indicate the user intention.
 * Calendar users want to set their calendar on their birthday, when they only would like to set it for the complete day in their usual time zone. They still want it to show up as an all-day event in their UI.

In both cases, developers thought to use the isAllDay property to express a user intention, but came they learn they couldn't.

This is reason enough to revisit that part of the specification and discuss alternatives.

*Currently*:
 * Any event MUST define a start property value in the form "YYYY-MM-DDTHH:MM:SS[.DIGITS]"
 * An all-day event:
   * MUST have the isAllDay property set to "true"
   * MUST NOT have a non-zero time in the start and duration property values
   * MUST NOT define a time zone
 * Any other event:
   * MUST have the isAllDay property set to "false"
   * MAY define non-zero time in start, duration
   * MAY set a timeZone.
 * This allows to model iCalendar DATE, local DATE-TIME, floating DATE-TIME, UTC DATE-TIME.

*Alternative*:
 * The isAllDay boolean property gets removed.
 * A new showAsAllDay boolean defines how the user intends to view this event. Setting this property does not have any implications on the allowed values in the event time properties.
 * The start, duration, timeZone properties and their recurrence overrides can all can be defined independently. The recurrenceRule{until} property also can be defined independently.
 * It is up to implementations to convert this time model to iCalendar. Most probably:
   * an event with zero time in start, duration, until and no time zone will be converted DATE value types
   * an event with no time zone will be converted to a local DATE-TIME without TZID
   * otherwise it will be a DATE-TIME with TZID or UTC DATE-TIME

What do you think? Did we miss something?

Cheers,
Robert