Re: [Kolab-devel] iTip Invitation Handling Notes

Thomas Brüderli <[email protected]>
Newsgroups gmane.comp.kde.devel.kolab
Message-ID <[email protected]>
Jeroen van Meeuwen (Kolab Systems) wrote:
> On 2014-03-24 12:56, Thomas Brüderli wrote:
>> Those who are interested are kindly invited to read the suggestions and
>> to enter the discussion. The page still contains some questions that
>> seek for answers.
>>
> 
> In the routine for event invitation acceptance, you list that the
> original invitation message should be removed. I don't think that it
> needs to.
> 
> An invitation that has been responded to does list the event's status in
> one's calendar should the message be opened for preview again, and as
> such the message no longer being marked as unread I don't see why the
> message would need to be removed.

I think it's convenient to remove it after processing it. The iTip
message is just a transport container and after replying or updating my
calendar, it's not used anymore and I don't want it to clutter my inbox.
Maybe that could become a user preference whether to automatically move
iTip messages to Trash. Or even define a special-use folder to archive
all iTip messages?

> On the topic of "First invitation vs. update";
> 
>   - Does the RFC actually allow the updated version of an event (with
> unchanged datetimes) to be sent out without bumping the sequence? I
> suppose valid scenarios for this type of update would be attendees
> getting added/removed, or other information getting updated? Either? Both?

RFC 2445 4.8.7.4 states the following:

"""
It is monotonically incremented by the "Organizer's" CUA each time the
"Organizer" makes a significant revision to the calendar component. When
the "Organizer" makes changes to one of the following properties, the
sequence number MUST be incremented: DTSTART, DTEND, RDATE, RRULE,
EXDATE, EXRULE, STATUS
"""

and

"""
The "Organizer" CUA MUST increment the sequence number when ever it
makes changes to properties in the calendar component that the
"Organizer" deems will jeopardize the validity of the participation
status of the "Attendees". For example, changing the location of a
meeting from one locale to another distant locale could effectively
impact the participation status of the "Attendees".
"""

The latter one is a rather subjective decision which may even require a
human confirmation. But I fear that users would not understand this if
asked whether to increase the sequence number.

Defining a sane set of properties that would increment the sequence if
changed is likely what we want to do here.

>   Sort of impacts the "client should offer an option to update the
> user's local copy with the (...)", as well as whether or not an outdated
> version of the invitation should still allow the user to update the
> working copy of the event.
> 
> Use "distribution group" and "mailing list" rather than "distribution
> list", please.

Done.
> 
> In "Decline":
> 
>   - A user SHOULD be asked whether the existing copy of an event should
> be deleted from his/her calendar:
> 
>     This is too much confirmation -- either the default is to delete the
> event and "you can undo", or not to delete the event but update one's
> PARTSTAT.

I disagree. I think this should be a concious decision whether I don't
want to be reminded of this event I'm not participating and thus have it
removed entirely.
> 
>   - Here too I see no reason for the invitation message to need to be
> removed automatically.

But what's the benefit of keeping all those invitations in your inbox?
> 
> In "Delegate":
> 
>   The DELEGATED-FROM property parameter SHOULD be attached to the
> delegatee's ATTENDEE property (3.2.3, "REPLY", 4.2.5, "Delegating an
> Event").
> 
>   Both also apply to the forwarded REQUEST (4.2.5, "Delegating an Event").

Done.
> 
> In "Counter Proposal":
> 
>   The new time slot proposal suggests the sender of the proposal
> implicitly accepts the event should the counter-proposal be accepted. If
> that holds true, the counter-proposal may need to be entered in to the
> calendar, perhaps with PARTSTAT=TENTATIVE (awaiting confirmation on the
> changed time slot).

The RFC doesn't really specify the accept status in case of a counter
proposal. When an attendee sends a COUNTER message, the organizer either
has to accept or to decline it. In case of accepting, the organizer's
calendar agent sends a new REQUEST with the re-scheduled event to all
attendees, including the one who made the counter proposal.

Although up until the re-schedule request is received, the event is not
scheduled at the proposed times, I agree that sending a counter proposal
equals an implicit acceptance. PARTSTAT=TENTATIVE is probably a good
solution. We just have to make sure that the tentative event is removed
(or cancelled) again once a DECLINECOUNTER message arrives.


> This is all I have time for tonight, in terms of reading, but a more
> general question/remark pops up:
> 
>   - If the iTip messages are not automatically deleted, does that impact
> the scheduling inbox for CalDAV clients somewhat, and/or is the \Seen
> status enough?

We don't yet have a scheduling inbox for CalDAV, thus it's hard to
predict any implications. Under normal circumstances, a scheduling inbox
for CalDAV and the email inbox holding iTip messages are two distinct
systems. Only in Kolab they might be related.

After first tests with Apple's Calendar app, it looks like items are
being removed from the scheduling inbox right after the client has read
them. That behavior suggests that removing iTip messages from the inbox
after processing them is what we should do in other clients, too.

>   - Asking for confirmation is bad and allowing the user to undo is
> good. If the iTip messages are automatically deleted, before they are
> expunged from IMAP, a (brief) opportunity should exist to undo (noted
> that "nothing is ever actually lost" is quite a fair assumption).

No objections. Unfortunately the web client doesn't yet have an undo
function for message deletion. Usually they are just moved to the trash
folder and not deleted directly and thus can be restored from there.
> 
>   - The shared folder concept is subject to the write access of the
> individual as well - should an existing copy of the event be found in a
> shared folder, the following options exist:
> 
>     - Add/update personal folder regardless, and send reply to organizer
> who is then in charge of updating the participant's status in the "git
> origin master HEAD" original copy of the event, which just so happens to
> exist in a shared folder (where the organizer clearly has write access).
> 
>     - Cheating the process a little bit, have the attendee update the
> participant status in the copy of the event in the shared folder, don't
> save a copy of the event in the personal folder, and still send the
> reply to the organizer -- note now the organizer has little to update. I
> don't think this is the preferred way.
> 
>     - Display to the attendee to "Save the event in (...)" its list of
> personal folders, but with an remark about the event already existing in
> a shared folder, where it should/will be updated (by the organizer
> receiving the REPLY), and add an option to NOT save (a copy of) the
> event anywhere.

Sounds reasonable. I suggest to make a clear distinction of calendars in
"shared" namespace vs. "other users" namespace. The latter one IMO
should be ignored throughout the entire iTip processing.

Thanks for your reply!

Cheers,
Thomas
_______________________________________________
devel mailing list
[email protected]
https://lists.kolab.org/mailman/listinfo/devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.