[dev] Changing start time of a recurring event series.

Jan Schneider jan at horde.org
Fri Jan 22 08:51:50 UTC 2016


Zitat von Michael J Rubinsky <mrubinsk at horde.org>:

> In working on EAS 16 support, I've come across an issue that needs  
> addressing.
>
> The main purpose of EAS 16 is to improve reliability in calendar  
> synchronization - especially with respect to recurrence.  One of the  
> changes in the protocol (paraphrased from the specs):
>
> "In protocol version 16.0, changing the start or end time of a  
> recurring series will delete any exceptions
> present on the calendar item."
>
> Indeed, when using a 16.0 capable client, editing the series on the  
> client does remove all the exceptions on the event. While this  
> *does* make sense to me, since the exceptions were made based on a  
> different original event - it's not how kronolith currently works.
>
> Exceptions are keyed to the base event by the  
> "exceptionOriginalDate" - which is basically the timestamp of when  
> the event would have normally occured before it was added as an  
> exception (this is true in both Kronolith and ActiveSync clients).
>
> I think we should change Kronolith to behave the same as EAS 16 -  
> that is changing the recurrence series start/end times should remove  
> all exceptions. This is why:
>
> 1) While we currently make an attempt to update the  
> exceptionOriginalDate when events are modified in Kronolith, this  
> only works if the start/end times haven't moved to a different day  
> and the recurring series type hasn't changed. E.g., see Bug: 13512.  
> This "fixed" the issue, but only because the events don't change  
> days and the series hasn't otherwise drastically changed (like going  
> from every week to every other week). This is because we can't make  
> a 100% accurate assumption as to what day any particular exception  
> would have normally fallen on - or even if it would have normally  
> occurred on that day anymore.
>
> 2) It's inconsistent with how a major sync protocol now works. Yeah,  
> I know this is a weak argument, but consider the main reason for  
> updating the protocol was to fix many of the things that were  
> causing issues with recurring events.
>
> 3) There is no way to prevent the exceptions from being removed on  
> the client - it does so automatically (and does NOT issue any delete  
> commands to the server because it's assumed that they will be  
> removed server side). So this MUST be implemented this way when the  
> change comes from an ActiveSync client. Otherwise, the sync client  
> and the UI will no longer be in sync. Implementing it in one spot  
> doesn't make much sense to me - and initial trials in this regard  
> led to duplicated events on both the client and UI.
>
> Since this is a fairly big change from a user experience view, I  
> wanted to get some feedback here before implementing this. The other  
> option is to disassociate the exceptions from the base event -  
> turning them into "normal" events any time the base event's  
> start/end times change or the series properties change. This is more  
> complicated because we need to add those events as new so the  
> history system picks them up to sync. It also still leads to  
> inconsistencies between the behavior when editing on the client vs  
> the UI.

Not going into depth whether EAS 16's behavior makes more sense than  
Kronolith's, but my first reaction is: it may be fine to delete empty  
exceptions from recurring events. This may still be a bit annoying or  
maybe confusing to some users, but at worst, they have to delete the  
occurence again. But deleting an exception *event* is unacceptable  
IMO. This would be data loss to the user, because the edited exception  
event may contain important information not available in the base  
recurring event.

-- 
Jan Schneider
The Horde Project
http://www.horde.org/



More information about the dev mailing list