[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: DTSTART for recurrence instances
Doug wrote on 12/04/2003 04:10:11 PM:
> > Section 4.8.4.4 Recurrence ID
> > . . .
> > The date/time value (RECURRENCE-ID) is set to the
time when the
> > original recurrence
> > instance would occur; meaning that if the intent
is to change a
> > Friday meeting to Thursday, the date/time (RECURRENCE-ID)
is still
> > set to the
> > original Friday meeting.
>
> Meaning in the object being sent in the reschedule. In order to say
X
> moves to Y,
> you need to properties to hold X and Y. So the above paragraph means
send a
> new object with the new Y in RECURRENCE-ID and the old X in DTSTART.
Lets not start this again shall we?
The original authors have even responded to this and they have clearly
said that RECURRENCE-ID does not change on an instance reschedule. The
DTSTART for the instance can change on each instance reschedule but the
the RECURRENCE-ID does not.
I dont know what you mean by "hold
X and Y". What you need is an identifier to correctly identify
the instance in question as its properties change. Thats why was
specified RECURRENCE-ID not to change on reschedules but DTSTART can. The
others have got it right from the bits Ive read.
If the identifier changed each time,
you'll have one heck of a time trying to deal with missequenced or lost
messages. Thats why RECURRENCE-ID does not change on each instance
reschedule; so you can safely detect missed messages or missequenced ones
and properly deal with them. Doug and Franks response to this seemed
to be pretty clear on this point.
And you seem to have it backwards in
your last line there. The reschedule would send the unchanged RECURRENCE-ID
(the old X?) and the new DTSTART (the new Y?) in a reschedule REQUEST (with
'newer' or 'higher' SEQUENCE, DTSTAMP etc values). Thus a second
reschedule would use the same unchanged RECURRENCE-ID (the old X?) and
another newer DTSTART (a new Z) value with a still higher SEQUENCE and
newer DTSTAMP.
If RECURRENCE-ID was supposed to be
the previous incarnations DTSTART then you have 3 problems to contend with:
Cases where reschedules do NOT entail changes to DTSTART (ie: a duration
change only), how to deal with resequencing of messages that can arrive
in any order and how to deal with missed messages. If you tried to
build a 'chain' of RECURRENCE-ID(0) -> DTSTART(1) / RECURRENCE-ID(1)
-> DTSTART(2)... then you cannot recover easily if a message is lost.
It has been shown that in 5 simple steps you can easily mangle the
workflow process when missequencing occurs too. Derik & Frank
noted as much in their recent posting on this.
> > With RECURRENCE-ID consigned to the role
of an identifier
> > it clearly falls to DTSTART to represent a recurrence instance's
> > effective start time.
>
> 2445 is talking about a reschedule object not what 2446 calls the
master
> object.
2445 deals with the C&S properties
and their meanings / behavoiur. 2446 deals with putting those properties
into a coherent message for doing C&S workflow.
The term "master" as first
used in iTIP Section 2.1 Application Protocol refers to the Organizers
copy of the entry since that is the "definitive" copy. All
other copies are just that, copies that may or may not be in sync w/the
Organizers version. Much like there is only 1 'master' copy of the
U.S. Constitution or the Deed for your property. There can be copies
made all you like but there is only 'master' copy or version of it.
The line:
"Attendees"
do not make
direct changes to the master calendar entry.
could be slightly wrong in the CAP context
since it is possible that an Invitee may have sufficient access rights
to go and modify the Organizers copy directly. However this was not
how we originally modeled the workflow process since that was not something
anyone actually did in the C&S systems. Invitees always sent
some kind of response back and the Organziers CUA (or perhaps server) would
apply that change (or keep the information separate from the actual entry
itself). Whether or not its good CAP design/practice to allow invitees
to do this is something else though...
> > This statement makes it clear that a recurrence
instance has a
> > DTSTART property containing the "effective" value ...
and this is
> > where RECURRENCE-ID gets its initial value. Initially,
DTSTART
> > and RECURRENCE-ID have the same value. If the instance
is
> > changed to a different time, DTSTART changes and
> > RECURRENCE-ID does not.
>
> Yet the topic of the section is RECURRENCE-ID and not DTSTART, so
the
> subject usage 'THE" in that sentence is RECURENCE-ID and not
DTSTART.
>
> Yes RECURRENCE-ID is the effective DTSTART of the 'instance'. If you
have 3
> daily instances the effective DTSTART of the 1st is 4-DEC, 2nd 5-DEC,
and
> the 3rd 6-DEC.
[Snip]
> Is does not say the "the value of DTSTART
is", it says the value [of
> recurrence-id]
> is the effective value of DTSTART. Not the same meaning.
You are correct in that the text under
4.8.4.4 does NOT discuss the DTSTART value for the instance. It is
talking about how RECURRENCE-ID is defined and dealt with. The text
actually says:
The date/time value is set to the time
when the original recurrence
instance would occur...
meaning that when the instance is created
the DTSTART and RECURRENCE-ID values are the same. As the instance
gets rescheduled, the DTSTART may/may not change but the RECURRENCE-ID
defintely does not. It is kept at the "original" value
for the instance (which matched the original DTSTART value the instance
had).
The only reason the term "effective"
is used is because not all recurrence is sent using RDATEs where the values
are just given. With RRULEs the recipent must roll the rule out and
calculate when the date/time of each repeat instance is (factoring in TZ
shifts, etc).
> It also does not say the value of DTSTART and
RECURRENCE-ID are both
> set to the same value (as I understoon one person to have said).
I guess its all in how you read the
cited line above then.
BTW: more than 1 person has said this.
I said it when we had the entire RECURRENCE-ID discussion during
the summer and Frank and Derik (the original authors of 2445) said this
in their posting on 18-Aug-03 (http://www.imc.org/ietf-calendar/mail-archive/msg08662.html
):
a) the value for RECURRENCE-ID was
agreed to be the date/time value of the original recurrence instance. This
value remains unchanged for as long as the base recurrence set (or pattern)
exists. A rescheduling of an individual recurrence instance did not cause
creation of new base recurrence set, but only moved the start/end of the
specified recurrence instance.
and they even tried to explain why we
did this:
This semantic and behavior was settled
on because it is imperative in order for an implementation to maintain
order and sensibility between the original definition for the recurrence
set and exceptions created by subsequent rescheduling actions on the recurrence
set. To illustrate, consider the consequences if RECURRENCE-ID changed
on each reschedule of an instance. Specifically, if the RECURRENCE-ID is
changed on each reschedule of an instance, the sender and the recipient
have no way to accurately know which instance is being referred to if just
a single iTIP message was lost or mis-sequenced, or if the message is an
invitation to a new instance entirely. This inability to distinguish
invitation, from reschedule, from update is not problematic with the fixed
RECURRENCE-ID because it is unambiguous which instance is being referred
to.
Ok, I guess it depends on your understanding
of the word "original" but thats not something we need to codify
in RFCs I hope. After all, you should be assigning RECURRENCE-ID
properties to each instance when you first create them so you should see
that the DTSTART and RECURRENCE-ID values you start with are the same.
Bruce
===========================================================================
Bruce Kahn
INet: Bruce_Kahn@xxxxxxxxxxxxxxxx
Messaging & Collaboration
Phone: 978.399.6496
IBM Software Group
FAX: and nothing but the FAX...
Standard disclaimers apply, even where prohibited by law...