From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id oCjUF5MWOmQxEwEASxT56A (envelope-from ) for ; Sat, 15 Apr 2023 05:14:27 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id 8IbQF5MWOmQPRAAAauVa8A (envelope-from ) for ; Sat, 15 Apr 2023 05:14:27 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 676812CE19 for ; Sat, 15 Apr 2023 05:14:26 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pnWLp-0001Rn-4O; Fri, 14 Apr 2023 23:13:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pnWLn-0001Rf-L3 for emacs-orgmode@gnu.org; Fri, 14 Apr 2023 23:13:19 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pnWLl-0004qE-Se for emacs-orgmode@gnu.org; Fri, 14 Apr 2023 23:13:19 -0400 Received: by mail-pl1-x631.google.com with SMTP id lh8so7315698plb.1 for ; Fri, 14 Apr 2023 20:13:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681528396; x=1684120396; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=lZW7IQiRkTevxCodDwVQiJNe6PVcVWXTnpZ4nxjl9+8=; b=bJexr5uS6SruIpB+oDKT4g0h44ghh1Spy6RqtXJasBawBy4bg18IDfvP9vtO5AYapY UHWfclAC5wCyCy7jejfugpd9giv0WvkewrzINlvCGIwDPPWTAv+fzZHG97E/iVygrkRv aPyNR4u9hTqVCK+6n3ygL5STh/Uc8PgdP72R0taQeDtY5qlw+kl0bsxG4knkqm036qVb zScJEE8RFfVAXwpTtd+zJoBgQ0p1w1nPN3554jMR6JGsKCqtG/QAtwnKBNC4C2D+546Y kjTtYpVYo63MsjfeUQAWtuo5PsPhxrLSYTPprrggptFDI2z4/7koXcz9HvnWcJHliHAm KlXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681528396; x=1684120396; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lZW7IQiRkTevxCodDwVQiJNe6PVcVWXTnpZ4nxjl9+8=; b=Anbsxr0vE7MAQIl55qTDA5Kp3U/sQApiTLYWHMnMaGKeq+4aC6EvPXja26wF45Uz4y yhLyrQnXYc9vg3UTFpZL9q+WT9VMu4Su2JIr/fx42AzDnGVtgVDq68ifxd6CII3s0PxN Y0cFf3lofoVbix1eF3JHWrHIGMpNyuwFhyZ4uIAx1rYEQgeFRptOu6lt5hQeWJghS8K+ sjw5CEEs3L27ZCI3TMfaxwjL2NcGEkNVZM8ps+bB4eNU5bNKLNPqD9bDvNsneQBPfiC2 BMh8M7utJYg9/7+nhaNZZexyw906tOVmcAZv6FElnHK3uFM9+rJ/vnOen0PwAPBwgpyH 2PxQ== X-Gm-Message-State: AAQBX9f73gMWRiSAtP3ePDA612tA+SjCWKBxMU7tUpYIAmAA5HDKFbue ip+tjJ5e8DqjIrxH+9x1yd8= X-Google-Smtp-Source: AKy350YxVyQMXSdOWL8FtdYu730dqw+VtXLV3EKAw3wRHPlIjkJHSuuxRfW7xtKfYlTJJAclCDeasg== X-Received: by 2002:a17:90a:6ace:b0:246:57ba:ab28 with SMTP id b14-20020a17090a6ace00b0024657baab28mr7684896pjm.2.1681528396140; Fri, 14 Apr 2023 20:13:16 -0700 (PDT) Received: from localhost (157-131-78-143.fiber.dynamic.sonic.net. [157.131.78.143]) by smtp.gmail.com with ESMTPSA id r92-20020a17090a43e500b0023a84911df2sm3355318pjg.7.2023.04.14.20.13.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Apr 2023 20:13:15 -0700 (PDT) From: Jack Kamm To: Ihor Radchenko Cc: emacs-orgmode@gnu.org, mail@nicolasgoaziou.fr Subject: Re: [RFC] ox-icalendar: Unscheduled tasks & repeating tasks In-Reply-To: <87o7nql2sq.fsf@localhost> References: <874jq75okg.fsf@gmail.com> <87o7oetneo.fsf@localhost> <87fs92bdvf.fsf@gmail.com> <87o7nql2sq.fsf@localhost> Date: Fri, 14 Apr 2023 20:13:13 -0700 Message-ID: <87wn2d4z3q.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=jackkamm@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1681528466; a=rsa-sha256; cv=none; b=Pxsk8QBQv8fQ+U+0kbOqPj8rA/G+Dk/VZC3DoI1D0RgIcIco6RqcRc9yL9rDqiAmoVUlZl TQsM9vi6claXIfwxhzAeJn7998TzSPCLrAW7JRzFIuymYjcOQaFBiVn2fPuTVAzHzHnM/U XgVGK++Iwr9HlOTyztj4492Lq0WU0CODulXSquJzeqD4zTrJPb2KZSWZNPFXh2v3orkeUw WCXPlQsjynOgR5L/C5urHD+QLr+DRnLH6bdRZYJ7WmK1cucnW0voFeodKiXEhji/YeN7MV mVFZ+N3yXkgsY8cUxr7L/pOoV1M06pblr2PPoi+SaTkB3u3AzWKYUOimJ6S1BQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=bJexr5uS; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1681528466; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=lZW7IQiRkTevxCodDwVQiJNe6PVcVWXTnpZ4nxjl9+8=; b=a2MukAvuOLWI3kzJRDL7w3+Uk4ULZzi0HPxTxrpxzLzSLq/L2WeE8DS3Yeg+OJYe/nRE/J eeItLxoforRwSePKYFTkghEahJSjqg8KZsNWU9g+/PrDfLfiXEc1X4KRpCrkhZehxjAqWm KeV7VycHaO5hs7/huHX5fYqoN7PP3lNKBXpfFcjdrfSRqnQkcyJVnB3kMRAtDObSUYeLCa 5zuwtk4vEISGYRMAa7Hk0FzD96Xa8xS9LaZJzt9BzstZ0UR+fVBuw3PzRkQ6uYF9Pjah+3 MjDsFJHpD5IhsLZCD/iXsTS+RSB/29teLpyd8lNXLTRgLz+G/XziQid0knyKbg== X-Migadu-Scanner: scn1.migadu.com X-Migadu-Spam-Score: -6.45 X-Spam-Score: -6.45 X-Migadu-Queue-Id: 676812CE19 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=bJexr5uS; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com X-TUID: uYePRmA4j3aY Ihor Radchenko writes: > The question is: does iCalendar allow something like > > DTSTART;TZID=America/New_York:19970105T083000 > RRULE:FREQ=YEARLY > DUE;TZID=America/New_York:20070105T083000 > > and repeats past DUE? > > If not, we have to choose when exporting from Org source - either to > keep DUE or not. >From the defintion of RRULE [1]: If the duration of the recurring component is specified with the "DTEND" or "DUE" property, then the same exact duration will apply to all the members of the generated recurrence set. So the RRULE applies to both DTSTART and DUE, and the repeats continue past DUE. But, another thing to note from the definition of DTSTART [2]: This property [DTSTART] is REQUIRED in all types of recurring calendar components that specify the "RRULE" property. So technically, a standalone DEADLINE + repeater isn't allowed -- a repeating task must always have a start date. But my impression is that not all iCalendar programs respect this. In particular, Tasks.org app with Nextcloud server seemed to allow a standalone repeating deadline. But I will check this more carefully, and also in a couple more programs (radicale, Evolution). But still, maybe we should stick to the requirement, and only export repeater on SCHEDULED. That would simplify the implementation. The downside is that repeating deadlines won't show up in iCalendar, which seems undesirable. [1] https://www.rfc-editor.org/rfc/rfc5545#section-3.8.5.3: [2] https://www.rfc-editor.org/rfc/rfc5545#section-3.8.2.4 > If we want to leave as many options as possible to the users, we can (1) > Implement ICALENAR_DUE property that will set DUE explicitly on export; > (2) ICALENDAR_DUE may allow special values that will indicate how to > treat Org DEADLINEs - make them into DUE, use Org DEADLINE as a > bound for SCHEDULED repeater, or ignore DEADLINE completely. A couple of these behaviors can already be achieved by customizing `org-icalendar-use-deadline' (making DUE or ignoring). For using DEADLINE as a bound, we could potentially add another option for that. > Is there any reason for this? May we instead export to a single VEVENT > with appropriate RDATE list? I guess if there are multiple timestamps with repeaters, it's easier to export these as separate VEVENT, because it's not possible to have multiple RRULE in one VEVENT. But, your suggestion earlier in thread could also solve this: in case of different repeaters, we can use RDATE to generate occurrences manually sufficiently far into future (with defcustom for "how far").