Network Working Group F. Silva Internet-Draft R. Drummond Intended status: Standards Track Unicamp Expires: November 30, 2007 May 29, 2007 Imprecise and alternative events for iCalendar and iTIP draft-silva-events-00 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on November 30, 2007. Copyright Notice Copyright (C) The IETF Trust (2007). Abstract This document defines extensions to iCalendar and iTIP that allow the expression of imprecise and multiple alternative events in calendar objects and scheduling messages. Imprecise events can be used to imprecisely describe an event by specifying various ranked periods of time in which it could be scheduled. Alternative events can be used to describe an event in terms of multiple ranked event descriptions, imprecise or not, that could alternatively be scheduled. Silva & Drummond Expires November 30, 2007 [Page 1] Internet-Draft Imprecise and alternative events May 2007 Editorial note (to be removed by RFC Editor prior to publication) Discussion of this specification is taking place on the mailing list http://lists.osafoundation.org/mailman/listinfo/ietf-calsify. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 3. iCalendar Extensions . . . . . . . . . . . . . . . . . . . . . 4 3.1. Imprecise Event Component . . . . . . . . . . . . . . . . 4 3.2. Alternative Events Component . . . . . . . . . . . . . . . 8 3.3. Rank Component Property . . . . . . . . . . . . . . . . . 11 3.4. Rank Property Parameter . . . . . . . . . . . . . . . . . 11 4. iTIP Extensions . . . . . . . . . . . . . . . . . . . . . . . 12 4.1. Methods for VIMPRECISEEEVENT Calendar Components . . . . . 12 4.1.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 13 4.1.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 14 4.1.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1.4. CANCEL . . . . . . . . . . . . . . . . . . . . . . . . 16 4.1.5. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 16 4.1.6. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 16 4.1.7. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . . 16 4.2. Methods for VALTERNATIVEEVENTS Calendar Components . . . . 16 4.2.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.2. REQUEST . . . . . . . . . . . . . . . . . . . . . . . 18 4.2.3. REPLY . . . . . . . . . . . . . . . . . . . . . . . . 22 4.2.4. CANCEL . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.5. REFRESH . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.6. COUNTER . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.7. DECLINECOUNTER . . . . . . . . . . . . . . . . . . . . 23 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.1. Published Imprecise and Alternative Events Examples . . . 23 5.2. Group Imprecise and Alternative Events Examples . . . . . 23 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 7. Security Considerations . . . . . . . . . . . . . . . . . . . 24 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 24 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24 9.1. Normative References . . . . . . . . . . . . . . . . . . . 24 9.2. Informative References . . . . . . . . . . . . . . . . . . 25 Appendix A. Design Considerations (to be removed by RFC Editor prior to publication) . . . . . . . . . . . . 25 A.1. Avoiding VALTERNATIVEEVENTS . . . . . . . . . . . . . . . 25 A.2. Avoiding VIMPRECISEEVENT . . . . . . . . . . . . . . . . . 26 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 26 Intellectual Property and Copyright Statements . . . . . . . . . . 28 Silva & Drummond Expires November 30, 2007 [Page 2] Internet-Draft Imprecise and alternative events May 2007 1. Introduction Calendar users may want to express an event not by using a unique exact description, but in terms of several possible alternative event descriptions. A possible event could, in turn, be described imprecisely, i.e., not with fixed start and end times, but in terms of one or more periods of time in which it could occur. Additionally, it should be possible to rank each of these alternative events and periods of time, so as to represent the suitability or likelihood of scheduling them in fact. These features would make possible the description of an event like the following: a 1 hour long business meeting taking place at office A on Monday between 8 am and 11 am - preferred -, or at office B on Thursday 2 pm or Friday after 4:30 pm. Such flexible representation of an event allow users to communicate uncertainty and preferences that naturally occur [SL02]. This is specially important during scheduling negotiation, when the "Attendees" have to agree about an event description. Multiple alternative event descriptions and periods of time can help a group of "Attendees" to faster converge into a description that is acceptable for all [SD98]. In most situations, that means to reach consensus about an event time that satisfies a common feasible free time interval, but other event properties can be under negotiation as well (e.g., duration, location, summary). In the worst case, if only the nth event proposal sent by the "Organizer" is acceptable by all "Attendees", offering one event description per proposal leads to n negotiation 'rounds'. Conversely, in the best case, if the "Organizer" had proposed n alternative event descriptions, only one negotiation round would have been enough. However, iCalendar [I-D.ietf-calsify-rfc2445bis] does not provide a way to describe an event imprecisely or to represent multiple event alternatives. This cannot be done by using several iTIP [I-D.ietf-calsify-2446bis] messages either. To accomplish these, this memo defines new types of iCalendar calendar components and specifies iTIP methods for their use in scheduling messages. 2. Conventions Used in This Document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. Silva & Drummond Expires November 30, 2007 [Page 3] Internet-Draft Imprecise and alternative events May 2007 3. iCalendar Extensions This specification adds the new "VIMPRECISEEVENT" and "VALTERNATIVEEVENTS" calendar components to iCalendar. The "VIMPRECISEEVENT" component describes an imprecise event in terms of periods of time in which it could be scheduled. These periods are expressed by "VFREEBUSY" and "VAVAILABILITY" [I-D.daboo-calendar-availability] components. The "VALTERNATIVEEVENTS" component describes alternative events by grouping multiple "VEVENT" and "VIMPRECISEEVENT" event descriptions. Whereas the "VIMPRECISEEVENT" and "VALTERNATIVEEVENTS" components describe events, they are not intended to represented "regular" events that correspond to a scheduled amount of time, what is done by the "VEVENT" component. Imprecise and alternative events components do not take up time on a calendar, since they just represent a schedulable amount of time whose description definition is in course. As such, these components MUST NOT be considered to generate results for an iTIP "VFREEBUSY" REQUEST, what includes CalDAV calendar-access [RFC4791] CALDAV:free-busy-query REPORT and CalDAV calendar-schedule [I-D.desruisseaux-caldav-sched] free-busy lookup. This specification also adds the new "RANK" property to the "VEVENT" and "VIMPRECISEEVENT" components, and to the "AVAILABLE" sub- components of the "VAVAILABILITY" component. A new "RANK" property parameter is also defined for the "FREEBUSY" parameter of the "VFREEBUSY" component. These extensions allow alternative events and periods of time used to describe imprecise events to be ranked. 3.1. Imprecise Event Component Component Name: VIMPRECISEEVENT Purpose: Provide an imprecise event description. Format Definition: A "VIMPRECISEEVENT" calendar component is defined by the following notation: Silva & Drummond Expires November 30, 2007 [Page 4] Internet-Draft Imprecise and alternative events May 2007 impreciseeventc = "BEGIN" ":" "VIMPRECISEEVENT" CRLF impreciseeventprop *freebusyc *availabilityc "END" ":" "VIMPRECISEEVENT" CRLF impreciseeventprop = *( ; the following are REQUIRED, ; but MUST NOT occur more than once dtstamp / uid / ; the following are OPTIONAL, ; but MUST NOT occur more than once class / created / description / duration / geo / last-mod / location / organizer / priority / rank / seq / status / summary / transp / url / ; the following is OPTIONAL, ; but SHOULD NOT occur more than once rrule / ; the following are OPTIONAL, ; and MAY occur more than once attach / attendee / categories / comment / contact / rstatus / related / resources / x-prop / iana-prop ) Description: A "VIMPRECISEEVENT" calendar component is a grouping of component properties, and possibly including "VFREEBUSY" and "VAVAILABILITY" components, that represents a schedulable amount of time, imprecisely described, for which exact start and end times are not specified. As opposed to a "regular" event represented by a "VEVENT" component, a "VIMPRECISEEVENT" does not represent a scheduled amount of time on a calendar, but an imprecise event that, once having its temporal properties - start time and end time (or duration) - defined, can be represented by a "VEVENT" component. Included "VFREEBUSY" and "VAVAILABILITY" components represent available periods of time for effectively scheduling the event. The "VFREEBUSY" components MUST follow the same semantics used to publish busy time specified on [I-D.ietf-calsify-rfc2445bis]. Silva & Drummond Expires November 30, 2007 [Page 5] Internet-Draft Imprecise and alternative events May 2007 Typically, the "FBTYPE" parameter of "FREEBUSY" properties present on these "VFREEBUSY" components will have the "FREE" value, but "BUSY-TENTATIVE" and "BUSY" values MAY also be used so as to denote that events scheduled on the interval represented by the "FREEBUSY" property could be rescheduled in favor of the imprecise event in question. The "BUSY-UNAVAILABLE" value SHOULD NOT be used for this purpose. The resulting available time is the union of the periods of time represented by all "VFREEBUSY" and "VAVAILABILITY" components. Periods of time specified by the "VFREEBUSY" components MUST NOT overlap. However, a period specified by a "VFREEBUSY" component MAY overlap those represented by "VAVAILABILITY" components. In this case, the interval specified via "VFREEBUSY" overrides those defined by any "VAVAILABILITY" components. In the context of an imprecise event, a "RRULE" is not intended to specify a concrete recurrence set of events, but to express a frequency of occurrence that the actual scheduled event may have. Within a "VIMPRECISEEVENT" component the UNTIL rule part of a recurrence rule MUST NOT be specified. Example: The following is an example of a "VIMPRECISEEVENT" calendar component that describes a 2 hour long department meeting taking place whenever between 8:00 AM to 12:00 on April 1st, 2008: BEGIN:VIMPRECISEEVENT UID:20071005T133225Z-00001@example.com DTSTAMP:20071005T133225Z SUMMARY:Department meeting DURATION:PT2H BEGIN:VFREEBUSY UID:20071005T133225Z-00001A@example.com DTSTAMP:20071005T133225Z FREEBUSY;FBTYPE=FREE:20080401T080000Z/20080401T120000Z END:VFREEBUSY END:VIMPRECISEEVENT The following is an example of a "VIMPRECISEEVENT" calendar component that describes a medical check-up occurring within any of the periods of time specified by the "VFREEBUSY" components and that is intended to have a monthly recurrence: Silva & Drummond Expires November 30, 2007 [Page 6] Internet-Draft Imprecise and alternative events May 2007 BEGIN:VIMPRECISEEVENT UID:20071005T133225Z-00001@example.com DTSTAMP:20071005T133225Z SUMMARY:Medical check-up RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR BEGIN:VFREEBUSY UID:20071005T133225Z-00001-A@example.com DTSTAMP:20071005T133225Z FREEBUSY;FBTYPE=FREE;RANK=100:20080328T150000Z/PT3H FREEBUSY;FBTYPE=FREE;RANK=100:20080329T163000Z/PT1H30M FREEBUSY;FBTYPE=FREE;RANK=80:20080330T140000Z/PT6H END:VFREEBUSY BEGIN:VFREEBUSY UID:20071005T133225Z-00001-B@example.com DTSTAMP:20071005T133225Z COMMENT:If necessary, I can try to rearrange my agenda FREEBUSY;FBTYPE=BUSY-TENTATIVE:20080401T160000Z/PT1H END:VFREEBUSY END:VIMPRECISEEVENT The following is an example of a "VIMPRECISEEVENT" calendar component that describes a director election. The "VAVAILABILITY" component specifies a 4:00 PM to 6:00 PM recurring availability on Tuesdays and Thursdays, from March 15th to April 15th. The "VFREEBUSY" component also overrides the "VAVAILABILITY" component between 4:00 PM and 5:00 PM on April 1st and specifies an additional free interval from 6:00 PM to 7:00 PM on April 3rd. Silva & Drummond Expires November 30, 2007 [Page 7] Internet-Draft Imprecise and alternative events May 2007 BEGIN:VIMPRECISEEVENT UID:20071005T133225Z-00001@example.com DTSTAMP:20071005T133225Z SUMMARY:New director election DURATION:PT1H BEGIN:VAVAILABILITY UID:20071005T133225Z-00001-A@example.com DTSTAMP:20071005T133225Z DTSTART:20080315T160000Z BEGIN:AVAILABLE UID:20071005T133225Z-00001-A1@example.com RANK:95 DTSTART:20080315T160000Z DTEND:20080415T180000Z RRULE:FREQ=WEEKLY;BYDAY=TU,TH END:AVAILABLE END:VAVAILABILITY BEGIN:VFREEBUSY UID:20071005T133225Z-00001-B@example.com DTSTAMP:20071005T133225Z FREEBUSY;FBTYPE=BUSY;RANK=33:20080401T160000Z/PT1H FREEBUSY;FBTYPE=FREE;RANK=60:20080403T180000Z/PT1H END:VFREEBUSY END:VIMPRECISEEVENT 3.2. Alternative Events Component Component Name: VALTERNATIVEEVENTS Purpose: Provide a grouping of event components ("VEVENT" and "VIMPRECISEEVENT") that represent alternative event descriptions. Format Definition: A "VALTERNATIVEEVENTS" calendar component is defined by the following notation: Silva & Drummond Expires November 30, 2007 [Page 8] Internet-Draft Imprecise and alternative events May 2007 alternativeeventsc = "BEGIN" ":" "VALTERNATIVEEVENTS" CRLF alternativeeventsprop *eventc *impreciseeventc "END" ":" "VALTERNATIVEEVENTS" CRLF alternativeeventsprop = *( ; the following are REQUIRED, ; but MUST NOT occur more than once dtstamp / uid / ; the following are OPTIONAL, ; but MUST NOT occur more than once class / created / description / geo / last-mod / location / organizer / priority / seq / status / summary / transp / url / ; the following are OPTIONAL, ; and MAY occur more than once attach / attendee / categories / comment / contact / rstatus / related / resources / x-prop / iana-prop ) Description: A "VALTERNATIVEEVENTS" calendar component is a grouping of component properties, including at least two event components, that represents a schedulable amount of time, described in terms of alternative event descriptions, for which exact property values are not specified. As opposed to a "regular" event represented by a "VEVENT" component, a "VALTERNATIVEEVENTS" does not represent a scheduled amount of time on a calendar, but an event with multiple possible alternatives that, once having its properties defined, can be represented by a "VEVENT" component. If specified on a "VALTERNATIVEEVENTS" component, OPTIONAL properties SHOULD also have their values interpreted as the default values for the properties of each grouped event component. In this case, if also present on a grouped event component, an OPTIONAL property overrides its default value. Silva & Drummond Expires November 30, 2007 [Page 9] Internet-Draft Imprecise and alternative events May 2007 Example: The following is an example of a "VALTERNATIVEEVENTS" calendar component used to represent an event that can take one of the descriptions represented by the "VEVENT" and "VIMPRECISEEVENT" components. Note that the "COMMENT" property default value specified by the alternative events component is overridden within the imprecise event component. BEGIN:VALTERNATIVEEVENTS UID:20071005T133225Z-00001@example.com DTSTAMP:20071005T133225Z SUMMARY:Quick interop test COMMENT:Trying the options that seem most likely to be accepted... BEGIN:VEVENT UID:20071005T133225Z-00001-A@example.com DTSTAMP:20071005T133225Z DTSTART:20080406T090000Z DTEND:20080405T120000Z RANK:100 COMMENT:It would be perfect if we could meet at that same time! END:VEVENT BEGIN:VIMPRECISEEVENT UID:20071005T133225Z-00001-B@example.com DTSTAMP:20071005T133225Z COMMENT: RANK:70 BEGIN:VAVAILABILITY UID:20071005T133225Z-00001-B-A@example.com DTSTART:20080315T160000Z COMMENT:I myself could attend at any of these times. BEGIN:AVAILABLE UID:20071005T133225Z-00001-B-A1@example.com RANK:80 DTSTART:20080315T140000Z DTEND:20080415T180000Z RRULE:FREQ=WEEKLY;BYDAY=TU,TH END:AVAILABLE END:VAVAILABILITY BEGIN:VFREEBUSY UID:20071005T133225Z-00001-B-B@example.com DTSTAMP:20071005T133225Z FREEBUSY;FBTYPE=BUSY;RANK=33:20080401T160000Z/PT1H FREEBUSY;FBTYPE=FREE;RANK=60:20080403T180000Z/PT1H END:VFREEBUSY END:VIMPRECISEEVENT END:VALTERNATIVEEVENTS Silva & Drummond Expires November 30, 2007 [Page 10] Internet-Draft Imprecise and alternative events May 2007 3.3. Rank Component Property Property Name: RANK Purpose: This property is used to convey the percent rank for regular and imprecise event components on the context of an alternative events, and for availability components on the context of an imprecise event. Value Type: INTEGER Property Parameters: IANA and non-standard property parameters can be specified on this property. Conformance: This property can be specified once in a "VEVENT" or "VIMPRECISEEVENT" calendar component grouped by a "VALTERNATIVEEVENTS" calendar component. This property can be specified once in a "AVAILABLE" sub-component of a "VAVAILABILITY" component. Description: The property value is a positive integer between zero and one hundred. A value of "0" indicates the lowest possible rank. A value of "100" indicates the highest possible rank. The rank may express the preference or relative availability of the calendar user regarding the event description or available periods of time it refers to. Format Definition: This property is defined by the following notation: rank = "RANK" rankparam ":" integer CRLF rankparam = *(";" other-param) Example: The following is an example of this property to show a 40% rank. RANK:40 3.4. Rank Property Parameter Parameter Name: RANK Purpose: To convey a percent rank for the property value. Silva & Drummond Expires November 30, 2007 [Page 11] Internet-Draft Imprecise and alternative events May 2007 Format Definition: This property parameter is defined by the following notation: rankpparam = "RANK" "=" integer Description: The parameter value is a positive integer between zero and one hundred. A value of "0" indicates the lowest possible rank. A value of "100" indicates the highest possible rank. This parameter can be used on the "FREEBUSY" property to indicate the rank of the period of time described by it. Example: The following is an example of this parameter to represent a 40% rank for an interval specified by a "FREEBUSY" property. FREEBUSY;FBTYPE=FREE;RANK=40:20080401T160000Z/PT1H 4. iTIP Extensions The table below shows various combinations of calendar components and the method types that this memo supports. +----------------+-----------------+--------------------+ | | VIMPRECISEEVENT | VALTERNATIVEEVENTS | +----------------+-----------------+--------------------+ | PUBLISH | Yes | Yes | | REQUEST | Yes | Yes | | REPLY | Yes | Yes | | ADD | No | No | | CANCEL | Yes | Yes | | REFRESH | Yes | Yes | | COUNTER | Yes | Yes | | DECLINECOUNTER | Yes | Yes | +----------------+-----------------+--------------------+ Each method type is defined in terms of its associated components and properties. Some components and properties are required, some are optional and others are excluded. The restrictions are expressed in this document using a simple "restriction table", as defined in [I-D.ietf-calsify-2446bis]. 4.1. Methods for VIMPRECISEEEVENT Calendar Components This section defines the property set restrictions for the method types that are applicable to the "VIMPRECISEEEVENT" calendar component. Each method is defined using a table that clarifies the property constraints that define the particular method. Silva & Drummond Expires November 30, 2007 [Page 12] Internet-Draft Imprecise and alternative events May 2007 The following summarizes the methods that are defined for the "VIMPRECISEEEVENT" calendar component. +----------------+--------------------------------------------------+ | Method | Description | +----------------+--------------------------------------------------+ | PUBLISH | Post notification of an imprecise event. Used | | | primarily as a method of advertising the | | | existence of an imprecise event. | | | | | REQUEST | Make a request for an imprecise event. This is | | | an explicit invitation to one or more | | | "Attendees". Event Requests are also used to | | | update or change an existing imprecise event. | | | Clients that cannot handle REQUEST may degrade | | | the event to view it as a PUBLISH. | | | | | REPLY | Reply to an imprecise event request. Clients | | | may set their status ("partstat") to ACCEPTED, | | | DECLINED, TENTATIVE, or DELEGATED. | | | | | CANCEL | Cancel an existing imprecise event. | | | | | REFRESH | A request is sent to an "Organizer" by an | | | "Attendee" asking for the latest version of an | | | imprecise event to be resent to the requester. | | | | | COUNTER | Counter a REQUEST with an alternative proposal, | | | Sent by an "Attendee" to the "Organizer". | | | | | DECLINECOUNTER | Decline a counter proposal. Sent to an | | | "Attendee" by the "Organizer". | +----------------+--------------------------------------------------+ 4.1.1. PUBLISH The "PUBLISH" method in a "VIMPRECISEEEVENT" calendar component is an unsolicited posting of an iCalendar object. Any CU may add published components to their calendar. The "Organizer" MUST be present in a published iCalendar component. "Attendees" MUST NOT be present. Its expected usage is for encapsulating an arbitrary imprecise event as an iCalendar object. The "Organizer" may subsequently update (with another "PUBLISH" method) or cancel (with a "CANCEL" method) a previously published "VIMPRECISEEVENT" calendar component. This method type is an iCalendar object that conforms to the following property constraints: Silva & Drummond Expires November 30, 2007 [Page 13] Internet-Draft Imprecise and alternative events May 2007 TBD 4.1.2. REQUEST The "REQUEST" method in a "VIMPRECISEEEVENT" calendar component provides the following scheduling negotiation functions: o Invite "Attendees" to an imprecise event o Response to a REFRESH request o Update the details of an existing imprecise event o Update the status of "Attendees" of an existing imprecise event o Reconfirm an existing imprecise event o Forward a "VIMPRECISEEEVENT" to another uninvited CU o For an existing "VIMPRECISEEEVENT" calendar component, delegate the role of "Attendee" to another CU o For an existing "VIMPRECISEEEVENT" calendar component, changing the role of "Organizer" to another CU This method type is an iCalendar object that conforms to the following property constraints: +--------------------+----------+-----------------------------------+ | Component/Property | Presence | Comment | +--------------------+----------+-----------------------------------+ | METHOD | 1 | MUST equal "REQUEST" | | | | | | VIMPRECISEEVENT | 1 | | | ATTENDEE | 1+ | | | DTSTAMP | 1 | | | ORGANIZER | 1 | | | SEQUENCE | 0 or 1 | MUST be present if value is | | | | greater than 0, MAY be present if | | | | 0 | | SUMMARY | 1 | Can be null | | UID | 1 | | | ATTACH | 0+ | | | CATEGORIES | 0+ | | | CLASS | 0 or 1 | | | COMMENT | 0+ | | | CONTACT | 0+ | | | CREATED | 0 or 1 | | | DESCRIPTION | 0 or 1 | | | DURATION | 0 or 1 | | | GEO | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | | | LOCATION | 0 or 1 | | | PRIORITY | 0 or 1 | | | RANK | 0+ | | Silva & Drummond Expires November 30, 2007 [Page 14] Internet-Draft Imprecise and alternative events May 2007 | RDATE | 0+ | | | RELATED-TO | 0+ | | | REQUEST-STATUS | 0+ | | | RESOURCES | 0+ | | | RRULE | 0+ | | | STATUS | 0 or 1 | MAY be one of TENTATIVE/CONFIRMED | | TRANSP | 0 or 1 | | | URL | 0 or 1 | | | X-PROPERTY | 0+ | | | | | | | VAVAILABILITY | 0+ | | | | | | | VFREEBUSY | 0+ | | | | | | | | | | | VALARM | 0 | | | | | | | VAVAILABILITY | 0+ | | | | | | | VFREEBUSY | 0+ | | | | | | | VJOURNAL | 0 | | | | | | | VTODO | 0 | | | | | | | VTIMEZONE | 0+ | MUST be present if any date/time | | | | refers to a timezone | | | | | | X-COMPONENT | 0+ | | +--------------------+----------+-----------------------------------+ Analogously to the "REQUEST" method in a "VEVENT" component, the use cases described in sections 3.2.2.2 to 3.2.2.7 of [I-D.ietf-calsify-rfc2445bis] apply for the "VIMPRECISEEVENT" calendar component. 4.1.3. REPLY The "REPLY" method in a "VIMPRECISEEEVENT" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD Silva & Drummond Expires November 30, 2007 [Page 15] Internet-Draft Imprecise and alternative events May 2007 4.1.4. CANCEL The "CANCEL" method in a "VIMPRECISEEEVENT" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 4.1.5. REFRESH The "REFRESH" method in a "VIMPRECISEEEVENT" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 4.1.6. COUNTER The "COUNTER" method in a "VIMPRECISEEEVENT" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 4.1.7. DECLINECOUNTER The "DECLINECOUNTER" method in a "VIMPRECISEEEVENT" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 4.2. Methods for VALTERNATIVEEVENTS Calendar Components This section defines the property set restrictions for the method types that are applicable to the "VALTERNATIVEEVENTS" calendar component. Each method is defined using a table that clarifies the property constraints that define the particular method. The following summarizes the methods that are defined for the "VALTERNATIVEEVENTS" calendar component. Silva & Drummond Expires November 30, 2007 [Page 16] Internet-Draft Imprecise and alternative events May 2007 +----------------+--------------------------------------------------+ | Method | Description | +----------------+--------------------------------------------------+ | PUBLISH | Post notification of an alternatives event. | | | Used primarily as a method of advertising the | | | existence of an alternatives event. | | | | | REQUEST | Make a request for an alternatives event. This | | | is an explicit invitation to one or more | | | "Attendees". Event Requests are also used to | | | update or change an existing alternatives event. | | | Clients that cannot handle REQUEST may degrade | | | the event to view it as a PUBLISH. | | | | | REPLY | Reply to an alternatives event request. Clients | | | may set their status ("partstat") to ACCEPTED, | | | DECLINED, TENTATIVE, or DELEGATED. | | | | | CANCEL | Cancel an existing alternatives event. | | | | | REFRESH | A request is sent to an "Organizer" by an | | | "Attendee" asking for the latest version of an | | | alternatives event to be resent to the | | | requester. | | | | | COUNTER | Counter a REQUEST with an alternative proposal, | | | Sent by an "Attendee" to the "Organizer". | | | | | DECLINECOUNTER | Decline a counter proposal. Sent to an | | | "Attendee" by the "Organizer". | +----------------+--------------------------------------------------+ 4.2.1. PUBLISH The "PUBLISH" method in a "VALTERNATIVEEVENTS" calendar component is an unsolicited posting of an iCalendar object. Any CU may add published components to their calendar. The "Organizer" MUST be present in a published iCalendar component. "Attendees" MUST NOT be present. Its expected usage is for encapsulating an arbitrary alternatives event as an iCalendar object. The "Organizer" may subsequently update (with another "PUBLISH" method) or cancel (with a "CANCEL" method) a previously published "VALTERNATIVEEVENTS" calendar component. This method type is an iCalendar object that conforms to the following property constraints: TBD Silva & Drummond Expires November 30, 2007 [Page 17] Internet-Draft Imprecise and alternative events May 2007 4.2.2. REQUEST The "REQUEST" method in a "VALTERNATIVEEVENTS" calendar component provides the following scheduling negotiation functions: o Invite "Attendees" to an alternative events o Response to a REFRESH request o Update the details of an existing alternative events o Update the status of "Attendees" of an existing alternative events o Reconfirm an existing alternatives event o Forward a "VALTERNATIVEEVENTS" to another uninvited CU o For an existing "VALTERNATIVEEVENTS" calendar component, delegate the role of "Attendee" to another CU o For an existing "VALTERNATIVEEVENTS" calendar component, changing the role of "Organizer" to another CU The "Organizer" originates the "REQUEST". The recipients of the "REQUEST" method are the CUs invited to the event, the "Attendees". "Attendees" use the "REPLY" method to convey attendance status to the "Organizer". The "UID" and "SEQUENCE" properties are used to distinguish the various uses of the "REQUEST" method. If the "UID" property value in the "REQUEST" is not found on the recipient's calendar, then the "REQUEST" is for a new "VALTERNATIVEEVENTS" calendar component. If the "UID" property value is found on the recipient's calendar, then the "REQUEST" is for an update, or a reconfirm of the "VALTERNATIVEEVENTS" calendar component. This method type is an iCalendar object that conforms to the following property constraints: +-----------------------+----------+--------------------------------+ | Component/Property | Presence | Comment | +-----------------------+----------+--------------------------------+ | METHOD | 1 | MUST equal "REQUEST" | | | | | | VALTERNATIVEEVENTS | 1 | | | ATTENDEE | 1+ | | | DTSTAMP | 1 | | | ORGANIZER | 1 | | | SEQUENCE | 0 or 1 | MUST be present if value is | | | | greater than 0, MAY be present | | | | if 0 | | SUMMARY | 1 | Can be null | | UID | 1 | | | ATTACH | 0+ | | | CATEGORIES | 0+ | | Silva & Drummond Expires November 30, 2007 [Page 18] Internet-Draft Imprecise and alternative events May 2007 | CLASS | 0 or 1 | | | COMMENT | 0+ | | | CONTACT | 0+ | | | CREATED | 0 or 1 | | | DESCRIPTION | 0 or 1 | | | DURATION | 0 or 1 | | | GEO | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | | | LOCATION | 0 or 1 | | | PRIORITY | 0 or 1 | | | RDATE | 0+ | | | RELATED-TO | 0+ | | | REQUEST-STATUS | 0+ | | | RESOURCES | 0+ | | | STATUS | 0 or 1 | MAY be one of | | | | TENTATIVE/CONFIRMED | | TRANSP | 0 or 1 | | | URL | 0 or 1 | | | X-PROPERTY | 0+ | | | | | | | VEVENT | 0+ | MUST be one or more of either | | | | VEVENT or VIMPRECISEEVENT. | | ATTENDEE | 1+ | | | DTSTAMP | 1 | | | DTSTART | 1 | | | ORGANIZER | 1 | | | SEQUENCE | 0 or 1 | MUST be present if value is | | | | greater than 0, MAY be present | | | | if 0 | | SUMMARY | 1 | Can be null | | UID | 1 | Components with the same UID | | | | MUST be interpreted as a | | | | single event with | | | | instance-specific information. | | | | Components with different UID | | | | MUST be interpreted as | | | | different event alternatives. | | ATTACH | 0+ | | | CATEGORIES | 0+ | | | CLASS | 0 or 1 | | | COMMENT | 0+ | | | CONTACT | 0+ | | | CREATED | 0 or 1 | | | DESCRIPTION | 0 or 1 | | | DTEND | 0 or 1 | if present DURATION MUST NOT | | | | be present | | DURATION | 0 or 1 | if present DTEND MUST NOT be | | | | present | Silva & Drummond Expires November 30, 2007 [Page 19] Internet-Draft Imprecise and alternative events May 2007 | EXDATE | 0+ | | | EXRULE | 0+ | | | GEO | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | | | LOCATION | 0 or 1 | | | PRIORITY | 0 or 1 | | | RDATE | 0+ | | | RECURRENCE-ID | 0 or 1 | only if referring to an | | | | instance of a recurring | | | | calendar component. Otherwise | | | | it MUST NOT be present. | | RELATED-TO | 0+ | | | REQUEST-STATUS | 0+ | | | RESOURCES | 0+ | | | RRULE | 0+ | | | STATUS | 0 or 1 | MAY be one of | | | | TENTATIVE/CONFIRMED | | TRANSP | 0 or 1 | | | URL | 0 or 1 | | | X-PROPERTY | 0+ | | | | | | | VIMPRECISEEVENT | 0+ | MUST be one or more of either | | | | VEVENT or VIMPRECISEEVENT | | ATTENDEE | 1+ | | | DTSTAMP | 1 | | | DTSTART | 1 | | | ORGANIZER | 1 | | | SEQUENCE | 0 or 1 | MUST be present if value is | | | | greater than 0, MAY be present | | | | if 0 | | SUMMARY | 1 | Can be null | | UID | 1 | | | ATTACH | 0+ | | | CATEGORIES | 0+ | | | CLASS | 0 or 1 | | | COMMENT | 0+ | | | CONTACT | 0+ | | | CREATED | 0 or 1 | | | DESCRIPTION | 0 or 1 | | | DURATION | 0 or 1 | | | GEO | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | | | LOCATION | 0 or 1 | | | PRIORITY | 0 or 1 | | | RANK | 0 or 1 | | | RDATE | 0+ | | | RELATED-TO | 0+ | | | REQUEST-STATUS | 0+ | | Silva & Drummond Expires November 30, 2007 [Page 20] Internet-Draft Imprecise and alternative events May 2007 | RESOURCES | 0+ | | | RRULE | 0+ | | | STATUS | 0 or 1 | MAY be one of | | | | TENTATIVE/CONFIRMED | | TRANSP | 0 or 1 | | | URL | 0 or 1 | | | X-PROPERTY | 0+ | | | | | | | VFREEBUSY | 0+ | | | DTSTAMP | 1 | | | DTSTART | 1 | DateTime values must be in UTC | | DTEND | 1 | DateTime values must be in UTC | | FREEBUSY | 1+ | MUST NOT be "BUSY-UNAVAILABLE" | | | | time. Multiple instances are | | | | allowed. Multiple instances | | | | must be sorted in ascending | | | | order | | ORGANIZER | 1 | MUST contain the address of | | | | originator of free time data | | RANK | 0 or 1 | | | UID | 1 | | | COMMENT | 0+ | | | CONTACT | 0 or 1 | | | X-PROPERTY | 0+ | | | URL | 0 or 1 | Specifies free time URL | | ATTENDEE | 0 | | | DURATION | 0 | | | REQUEST-STATUS | 0 | | | | | | | VAVAILABILITY | 0+ | | | DTSTAMP | 1 | | | UID | 1 | | | BUSYTYPE | 0 or 1 | | | CREATED | 0 or 1 | | | DTSTART | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | | | ORGANIZER | 0 or 1 | MUST contain the address of | | | | originator of available time | | | | data | | SEQUENCE | 0 or 1 | | | SUMMARY | 0 or 1 | | | URL | 0 or 1 | Specifies available time URL | | DTEND | 0 or 1 | if present, DURATION MUST NOT | | | | occur | | DURATION | 0 or 1 | if present, DTEND MUST NOT | | | | occur | | CATEGORIES | 0+ | | | COMMENT | 0+ | | Silva & Drummond Expires November 30, 2007 [Page 21] Internet-Draft Imprecise and alternative events May 2007 | CONTACT | 0+ | | | X-PROPERTY | 0+ | | | | | | | AVAILABLE | 1+ | | | DTSTAMP | 1 | | | UID | 1 | | | DTSTART | 1 | | | DTEND | 0 or 1 | if present, DURATION MUST NOT | | | | occur | | DURATION | 0 or 1 | if present, DTEND MUST NOT | | | | occur | | CREATED | 0 or 1 | | | LAST-MODIFIED | 0 or 1 | | | RANK | 0 or 1 | | | RECURRENCE-ID | 0 or 1 | | | RRULE | 0 or 1 | | | SUMMARY | 0 or 1 | | | CATEGORIES | 0+ | | | COMMENT | 0+ | | | CONTACT | 0+ | | | EXDATE | 0+ | | | RDATE | 0+ | | | X-PROPERTY | 0+ | | | | | | | VALARM | 0 | | | | | | | VAVAILABILITY | 0 | | | | | | | VFREEBUSY | 0 | | | | | | | VJOURNAL | 0 | | | | | | | VTODO | 0 | | | | | | | VTIMEZONE | 0+ | MUST be present if any | | | | date/time refers to a timezone | | | | | | X-COMPONENT | 0+ | | +-----------------------+----------+--------------------------------+ 4.2.3. REPLY The "REPLY" method in a "VALTERNATIVEEVENTS" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD Silva & Drummond Expires November 30, 2007 [Page 22] Internet-Draft Imprecise and alternative events May 2007 4.2.4. CANCEL The "CANCEL" method in a "VALTERNATIVEEVENTS" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 4.2.5. REFRESH The "REFRESH" method in a "VALTERNATIVEEVENTS" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 4.2.6. COUNTER The "COUNTER" method in a "VALTERNATIVEEVENTS" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 4.2.7. DECLINECOUNTER The "DECLINECOUNTER" method in a "VALTERNATIVEEVENTS" calendar component... This method type is an iCalendar object that conforms to the following property constraints: TBD 5. Examples TBD... 5.1. Published Imprecise and Alternative Events Examples 5.2. Group Imprecise and Alternative Events Examples Silva & Drummond Expires November 30, 2007 [Page 23] Internet-Draft Imprecise and alternative events May 2007 6. IANA Considerations TBD according to IANA registration procedures defined in [I-D.ietf-calsify-rfc2445bis]. 7. Security Considerations This specification does not add any additional security issues that are not already present in [I-D.ietf-calsify-rfc2445bis] and [I-D.ietf-calsify-2446bis]. 8. Acknowledgements The authors would like to thank the following individuals for their previous work on calendaring and scheduling standards, contributing ideas and support for writing this specification: Bernard Desruisseaux, Cyrus Daboo, Lisa Dusseault, and Tim Hare. 9. References 9.1. Normative References [I-D.daboo-calendar-availability] Daboo, C. and B. Desruisseaux, "Calendar Availability", draft-daboo-calendar-availability-00 (work in progress), November 2006. [I-D.desruisseaux-caldav-sched] Desruisseaux, B., "Scheduling Extensions to CalDAV", draft-desruisseaux-caldav-sched-03 (work in progress), January 2007. [I-D.ietf-calsify-2446bis] Daboo, C., "iCalendar Transport-Independent Interoperability Protocol (iTIP)", draft-ietf-calsify-2446bis-03 (work in progress), March 2007. [I-D.ietf-calsify-rfc2445bis] Desruisseaux, B., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", draft-ietf-calsify-rfc2445bis-06 (work in progress), March 2007. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Silva & Drummond Expires November 30, 2007 [Page 24] Internet-Draft Imprecise and alternative events May 2007 Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC4791] Daboo, C., Desruisseaux, B., and L. Dusseault, "Calendaring Extensions to WebDAV (CalDAV)", RFC 4791, March 2007. 9.2. Informative References [SD98] Sen, S. and E. Durfee, "A Formal Study on Distributed Meeting Scheduling", Group Decision and Negotiation, 7(3): 265-289, 1998. [SL02] Craig, S. and R. Letsinger, "An ontology for publishing and scheduling events and the lessons learned in developing it", HP Labs Technical Report HPL-2002-162, 2002. Appendix A. Design Considerations (to be removed by RFC Editor prior to publication) This section points out some protocol design issues concerning the described extensions. In particular, the need of new special "event" components to support imprecise and alternative events can be questioned. They can represent an interoperability problem with current implementations, and may overload workflow scheduling requirements, making it too complex, as VIMPRECISEEVENT and VALTERNATIVEEVENTS are intended to be used interchangeably with VEVENT during scheduling negotiation (e.g., a VALTERNATIVEEVENTS could be used to COUNTER a VEVENT proposal, and vice versa). A simpler solution for this would consist on trying to extend the existing VEVENT component and method types to support imprecise and alternative descriptions. That is the standardization direction that should be pursued, if possible. Design choices that could be made to do so are presented here. A.1. Avoiding VALTERNATIVEEVENTS An extension of VEVENT to support an alternative events description could be the following: o Use the RELATED-TO property to link multiple event components with each their own alternatives Silva & Drummond Expires November 30, 2007 [Page 25] Internet-Draft Imprecise and alternative events May 2007 o Create a new property to denote that these components should be interpreted as alternative descriptions Pros: an excellent fallback for existing CUAs. Cons: instance- specific information for a recurring description would not be possible, as long as only one UID is used for all VEVENT components (should multiple UIDs be considered?). A.2. Avoiding VIMPRECISEEVENT An extension of VEVENT to support an imprecise event description could be the following: o Create a new property to denote that the event should be interpreted as an imprecise description o Desconsider the DTSTART and DTEND properties (dropping them does not seem possible, as they are always expected) o Use TRANSP:TRANSPARENT to ensure that the event will not take up space on a calendar for current implementations There would be at least two options to use VFREEBUSY and VAVAILABILITY components to express the schedulable periods of time for the imprecise event: o Allow a VEVENT component to contain these components (althought reasons for not doing this may exist... which?) o Use 0+ VFREEBUSY and VAVAILABILITY components in a VEVENT iTIP message. Cons: if two or more imprecise descriptions are used as alternative events, the available periods of time would refer to all descriptions, not to a specific one, also due to the single UID constraint (that can be a problem if the availability depends on properties of the event description - e.g., location). Authors' Addresses Fabio Silva University of Campinas - Institute of Computing Caixa Postal 6176 Campinas, SP 13084-971 Brazil Email: fabio.silva@gmail.com Silva & Drummond Expires November 30, 2007 [Page 26] Internet-Draft Imprecise and alternative events May 2007 Rogerio Drummond University of Campinas - Institute of Computing Caixa Postal 6176 Campinas, SP 13084-971 Brazil Email: rog@ahand.unicamp.br Silva & Drummond Expires November 30, 2007 [Page 27] Internet-Draft Imprecise and alternative events May 2007 Full Copyright Statement Copyright (C) The IETF Trust (2007). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Acknowledgment Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA). Silva & Drummond Expires November 30, 2007 [Page 28]