[calsify] Re: Final comments on jscalendar-icalendar and jscalendarbis
Robert Stepanek <rsto@fastmailteam.com> Thu, 16 October 2025 14:00 UTC
Return-Path: <rsto@fastmailteam.com>
X-Original-To: calsify@mail2.ietf.org
Delivered-To: calsify@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 993CF74FAD72 for <calsify@mail2.ietf.org>; Thu, 16 Oct 2025 07:00:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.798
X-Spam-Level:
X-Spam-Status: No, score=-2.798 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_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=fastmailteam.com header.b="kmu/wWMW"; dkim=pass (2048-bit key) header.d=messagingengine.com header.b="sr1Y3A3M"
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y23G3nKn56Iu for <calsify@mail2.ietf.org>; Thu, 16 Oct 2025 07:00:46 -0700 (PDT)
Received: from fhigh-a8-smtp.messagingengine.com (fhigh-a8-smtp.messagingengine.com [103.168.172.159]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id CBA0E74FAD44 for <calsify@ietf.org>; Thu, 16 Oct 2025 07:00:46 -0700 (PDT)
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.phl.internal (Postfix) with ESMTP id 5F970140019B for <calsify@ietf.org>; Thu, 16 Oct 2025 10:00:40 -0400 (EDT)
Received: from phl-imap-15 ([10.202.2.104]) by phl-compute-02.internal (MEProxy); Thu, 16 Oct 2025 10:00:40 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= fastmailteam.com; h=cc:content-type:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1760623240; x= 1760709640; bh=60KmzDa3a+oFII58lJroeizdmWv1UBzW7kXm80x37FM=; b=k mu/wWMWgUEbuIyufy+67jQbtyuQs2lQfq66Sn0mk/AcR8WJLMTh+6zFR7zBWYDyr Oe4T3ZAuYy8jUnn4EFvu+JCHE6FIzmbaQ+2WgohQgkTKrx3TwaTcsA0AUSkqhz/L YKkwkt3AMAgkolqZP/Paf3U31/qvHzRhlUn7HMdvDkisjxBuQ9EPbP5hYfhKVHte SKDrtchLmAkZLWNb1OfDO2alRDeDFEMyDBGDTEY8d4kHtGkfTnyPQPPWiR8DlbSK OcrT4ZG2o1W67UUKVJFf7aISFxpmn9eoEdy0x15PsXd4wOu5EcYBHO+uo3KCF/QJ 4/g34Ad5R2vBMGqxE98Kg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1760623240; x=1760709640; bh=60KmzDa3a+oFII58lJroeizdmWv1UBzW7kX m80x37FM=; b=sr1Y3A3Mu9c6rgnfRWIhInizXwl+MTTtVrZSp6SakCX31Rc4/Oq gGgvkEDY9kOAMqrSLPEJpaHMaqIHx/wUsjRmuS9JZ57brRz782ttQGppHXNY64fv L2Ejw9DoON7PtftQZrZ4NbyrJHGHcu/B7H71aFvQun0mwdcOmYuWDr0VqKf/Ki0u 4fUEY/7bzEY7ySNCmT5CFZ+mcycBoVxBoN8i7mBqvppp5ERp7lw68UVFAUyNGWGO eLEClsnInLZEwuinYo4WJuDjgBgBXpaogLmgLp+1lhkv1JsRiEGQ+yBGQyFNn/pg 6Dw4uUrlfADeLGb4uXjZoBG7GJIedhQryXg==
X-ME-Sender: <xms:iPrwaM6nlnlGVHHmU66yqbNtgBZvITdRAM-Fyg7VeJGArKEghMOjAw> <xme:iPrwaItaX1HdIcRPvti9HckT3zwYJXn0lSE0Lp_IfcDTY8DC9pfOncOrmDnaSah_L TQQNLOGjQnR6M9P98WY6qtxGZjjPvWH4Hm8CJhh2mbPcXUxOVI>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdduvdeigeejucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpefoggffhffvkfgjfhfutgesrgdtreerre dtjeenucfhrhhomhepfdftohgsvghrthcuufhtvghprghnvghkfdcuoehrshhtohesfhgr shhtmhgrihhlthgvrghmrdgtohhmqeenucggtffrrghtthgvrhhnpedufedvleetvefghf elvdehueeiieeludffgfekveeitdetkeekkedviedtgedvkeenucffohhmrghinhepihgv thhfrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrh homheprhhsthhosehfrghsthhmrghilhhtvggrmhdrtghomhdpnhgspghrtghpthhtohep uddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheptggrlhhsihhfhiesihgvthhfrd horhhg
X-ME-Proxy: <xmx:iPrwaKdeyF2Q9_fiuXSAr1cU4FVToEB--KcZRXGELbfOVsxnfKrNIA> <xmx:iPrwaLJr7q374JxrvctqlYR6J7HlyRo6q3zmFj_2RtHTmmO_eSnsIQ> <xmx:iPrwaBIygGMVv8mU23-jgUVA382sJ0D9sYLCSU34RmWRIX9-UBmgqA> <xmx:iPrwaNH-nreq653ns4qMQK6wbpNFIAnwPZ2_EdlPo_RwisqF2-QAzA> <xmx:iPrwaDUalJuOiaQt2Aoa80WojDV9R2sNNjlu7a0a0M7QYFfOHnCPfEYp>
Feedback-ID: ia5d944da:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501) id 1A70678016E; Thu, 16 Oct 2025 10:00:40 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
MIME-Version: 1.0
X-ThreadId: Ap8LdRe_czoc
Date: Thu, 16 Oct 2025 16:00:18 +0200
From: Robert Stepanek <rsto@fastmailteam.com>
To: calsify@ietf.org
Message-Id: <6dad483f-3560-4bcd-9599-5524a193a496@app.fastmail.com>
In-Reply-To: <A81A6708-3C75-4733-AEB5-6E1D8195ED26@stalw.art>
References: <61704192-F29B-45AA-9805-813A1D8B60C2@stalw.art> <2e3c0909-6a8b-4de0-9535-ffc72e1307b4@app.fastmail.com> <A81A6708-3C75-4733-AEB5-6E1D8195ED26@stalw.art>
Content-Type: multipart/alternative; boundary="35fb6c4e233c4c7ab70e5e73bf6dfe3f"
Message-ID-Hash: Q6PAQOZPMSQHEGBLZN64XDSGHIXDGGZB
X-Message-ID-Hash: Q6PAQOZPMSQHEGBLZN64XDSGHIXDGGZB
X-MailFrom: rsto@fastmailteam.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-calsify.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [calsify] Re: Final comments on jscalendar-icalendar and jscalendarbis
List-Id: "Calendaring, Contacts and Scheduling Standards Maintenance" <calsify.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/-Hi5yt-5iNccXK8DtGapbqWkskM>
List-Archive: <https://mailarchive.ietf.org/arch/browse/calsify>
List-Help: <mailto:calsify-request@ietf.org?subject=help>
List-Owner: <mailto:calsify-owner@ietf.org>
List-Post: <mailto:calsify@ietf.org>
List-Subscribe: <mailto:calsify-join@ietf.org>
List-Unsubscribe: <mailto:calsify-leave@ietf.org>
Hi Mauro and all,
I just published new versions for the jscalendarbis <https://datatracker.ietf.org/doc/draft-ietf-calext-jscalendarbis/>, jscalendar-icalendar <https://datatracker.ietf.org/doc/draft-ietf-calext-jscalendar-icalendar/> and icalendar-jscalendar-extensions <https://datatracker.ietf.org/doc/draft-ietf-calext-icalendar-jscalendar-extensions/> I-Ds. They incorporate the feedback that I address in this email and the new "owner" rule definitions.
Specifically for the "owner" rule, the jscalendar-icalendar I-D contains updated conversion rules and examples for the Participant object and ORGANIZER property. The goal is to meaningfully represent scheduled events where the owner only is represented by the ORGANIZER, or the owner is represented as both an ORGANIZER and ATTENDEE, or where multiple ATTENDEEs have the new OWNER role set. I'd appreciate any feedback on these updated rules.
On Tue, Oct 7, 2025, at 7:45 PM, Mauro De Gennaro wrote:
> After reading JMAP for Calendar I now see why PRODID needs to be at the event level. How about making PRODID optional and do not add it to Event/Task if the object is contained in a JSCalendar Group which defines a PRODID?
Agreed, I rephrased the conversion rule for PRODID accordingly.
>>
>>> *- 2.3.33. RDATE:*
>>> - I've seen a few iCals containing RDATEs using periods, for example: "RDATE;VALUE=PERIOD;TZID=Europe/Berlin:20240913T120000/PT2H". Perhaps an example could be added showing how to map this to the "duration" property in the recurrence override. But maybe this is an edge case.
>>
>> Are you converting this currently? Do you suggest something like the following snippet? Our implementation currently does not support PERIOD RDATEs for JSCalendar.
>
> I’m also not converting RDATEs currently, but since in my test suite I have a few iCal containing these, I was wondering how common they are and if it makes sense to convert them to JSCalendar.
I haven't seen them being used at all.
>>> *- 5.1.1. iCalComponent*
>>> - Clarify that iCalComponents should only be defined in JSCalendar objects that can (or could be) converted to iCalendar components (Event, Task, Alarm, Location) but not in other objects such as Link or VirtualLocation.
>>
>> Isn't this clear from the first sentence "This contains information about an iCalendar component that got converted to JSCalendar."?
>
> Yes, but I was thinking the scenario where a user manually adds an iCalComponent to a JSCalendar object so it is converted to a certain unsupported iCalendar property. But most likely this won’t ever happen.
I think it's up to the implementation how to deal with this. In our implementation, we only consider "iCalComponent" at places where we are prepared to deal with it. An implementation is free to ignore all of the "iCalComponent" property.
> - If we do the above, perhaps we can remove the "name" property from iCalComponent? I believe the correct component name is implicit as defining other/unexpected component types will result in an invalid iCal.
>>
>> I don't think we should remove the "name" property, but we might make it optional for most cases. We would define a default. value for each JSCalendar object that converts to an iCalendar component (e.g. we could define the default name for a Location object to be VLOCATION).
>
> Making it optional sounds good.
I kept it mandatory for now. I took a couple of attempts to redefine it to be optional but all definitions turned out to be awkward, because the "name" being optional or mandatory depends on the context of where the property is set. I understand that this somewhat bloats the iCalendar conversion-specific properties, but these properties only should be used sparingly anyway. I'm open to make it optional if we can come up with a simple definition.
> *- Parameters:*
>>> - DERIVED: Should the specification recommend what to do with DERIVED properties? Should they be placed in iCalComponent or removed?
>>
>> Right now, it just states they do not convert to JSCalendar. My implementation does not put them in the iCalComponent. Do you suggest something differently?
>
> My implementation removes it in most cases but in others (for example, when found in an FN property), it adds it to iCalComponent.
Nit: the FN property is a vCard property, not an iCalendar property. In any case, I still think it should not convert. But like any other conversion-specific property, it's only indicative anyway.
> My implementation adds TZID to iCalComponent only if it is not a IANA TZ. For example:
>
> BEGIN:VCALENDAR
> BEGIN:VEVENT
> SUMMARY:Test
> DTSTART;TZID=W. Europe Standard Time:20201124T110000
> DTEND;TZID=W. Europe Standard Time:20201124T113000
> DTSTAMP:20201119T112915Z
> TRANSP:OPAQUE
> STATUS:CONFIRMED
> END:VCALENDAR
>
> Converts to:
> {
> "@type": "Event",
> "freeBusyStatus": "busy",
> "start": "2020-11-24T11:00:00",
> "title": "Test",
> "duration": "PT30M",
> "updated": "2020-11-19T11:29:15Z",
> "iCalComponent": {
> "convertedProperties": {
> "start": {
> "parameters": {
> "TZID": "W. Europe Standard Time"
> }
> },
> "duration": {
> "parameters": {
> "TZID": "W. Europe Standard Time"
> },
> "name": "DTEND"
> }
> },
> "name": "vevent"
> },
> "priority": 5,
> "timeZone": "Europe/Berlin"
> }
I updated section "Timezone identifiers (2.1.4)" in the jscalendar-icalendar I-D to mention this as an option and also added an according example for converting the DTSTART property with a custom time zone.
BTW: Your example suggests that your jCal implementation is slightly wrong. RFC 7265 section 3.5 states that the name of the parameters MUST be in lowercase. Accordingly, jscalendar-icalendar defines that the "name" properties in the ICalComponent and ICalProperty objects MUST be lowercase, too.
Regards,
Robert
- [calsify] Final comments on jscalendar-icalendar … Mauro De Gennaro
- [calsify] Re: Final comments on jscalendar-icalen… Neil Jenkins
- [calsify] Re: Final comments on jscalendar-icalen… Robert Stepanek
- [calsify] Re: Final comments on jscalendar-icalen… Mauro De Gennaro
- [calsify] Re: Final comments on jscalendar-icalen… Robert Stepanek
- [calsify] Re: Final comments on jscalendar-icalen… Mauro De Gennaro