Previous Notes
iCalendar and iMIP Introduction
iCalendar Compenents:
- VCALENDAR - MIME type text/calendar
- VEVENT component
- VTODO component
- VFREEBUSY component
- VJOURNAL component
- VTIMEZONE sub-component
- VALARM sub-component
- Can all the components be simplified to VEVENT??
- Semantics: what is the meaning of a VCALENDAR? What is the relationship between VEVENTs in the same VCALENDAR?
iCalendar references:
iCalendar properties and parameters:
- General outline of data model
- Example: "ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:MAILTO:jsmith@host.com"
- "ATTENDEE" is the property
- "RSVP" and "ROLE" are parameters, "TRUE" and "REQ-PARTICIPANT" are parameter values
- semi-colons separate parameters
- first colon indicates beginning of value
- value is "MAILTO:jsmith@host.com"
- SUMMARY on VEVENT, VTODO and VJOURNAL
- UID
- DTSTART
- "TZID=US-Eastern" - example of specifying timezone by label
- DTEND and DURATION
- VALARM:TRIGGER -- limited values
- VALARM:ACTION -- limited values -- e.g. no value for "Send instant message"
- Value type of URI -- does this automatically cause derefererencing?
- Delegation:
- Example: ATTENDEE;DELEGATED-TO="mailto:a@y.com";DELEGATED-FROM="mailto:b@y.com":c@y.com
- Who is attending the meeting, a or c?
Recurrance and recurrance rules
- RECURRANCE-ID
- RRULE property
- FREQ parameter: value = SECONDLY | MINUTELY | HOURLY | DAILY | MONTHLY | YEARLY
- INTERVAL parameter: value = integer
- More parameters: BYSECOND | BYMINUTE | BYHOUR | BYDAY | BYMONTHDAY | BYYEARDAY | BYWEEKNO | BYMONTH | BYSETPOS | WKST
- End-recurrance parameters: COUNT or UNTIL
- Example:
- FREQ=MINUTELY;INTERVAL=5;BYDAY=MO,WE
- I'm not sure this even makes sense but I think it's "every five minutes on Mondays and Wednesdays"
- Example:
- RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
- See bottom of this page to find out what that rule is...
- Example:
- FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30
- First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to arrive at "every other year". Then, "BYMONTH=1" would be applied to arrive at "every January, every other year". Then, "BYDAY=SU" would be applied to arrive at "every Sunday in January, every other year". Then, "BYHOUR=8,9" would be applied to arrive at "every Sunday in January at 8 AM and 9 AM, every other year". Then, "BYMINUTE=30" would be applied to arrive at "every Sunday in January at 8:30 AM and 9:30 AM, every other year". Then, lacking information from RRULE, the second is derived from DTSTART, to end up in "every Sunday in January at 8:30:00 AM and 9:30:00 AM, every other year"
- Now Timezones can be much more complicated
Use cases for iCalendar (without iTIP/iMIP)
- Save entire calendar as a single file
- Issues: single VCALENDAR file not good as a native storage format as a single file. However a local store can adapt iCalendar into several files or a database.
- Export/import
- Import process can combine imported events with existing events
- Publish calendar as single file - Apple's iCal
- Issues: single VCALENDAR file even less appropriate for calendar sharing among multiple authors.
xCalendar and RDF-iCal
- XML has taken over
- Not obvious how to translate iCalendar custom data to XML
- Even more difficult to translate XML extensions back to iCalendar
- Data model inconsistencies:
- iCalendar has calendars, components, subcomponents, properties, parameters.
- XML has documents, elements and attributes.
- Data typing inconsistencies:
- Meaning of "integer"
- Meaning of "timestamp"
- Difficult transition
iTIP: wrapping iCalendar
Overview
- RFC 2446
- METHOD
- PUBLISH -- FYI
- REQUEST -- Invitation
- REPLY -- used by attendees to indicate status (will or will not attend)
- ADD -- used by organizer to add a recurrance?
- CANCEL -- used by organizer to cancel by UID
- REFRESH -- used by attendees to ask for an update by UID
- COUNTER -- used by attendees to suggest an alternate time/place
- DECLINECOUNTER -- used by organizer to decline
- SEQUENCE
Use cases for iTIP:
- need a way to transmit them somehow... can't use iTIP alone
- XMPP transport for iTIP been discussed
Issues
- Not really worked out how to use in multi-author or multi-client situations
iMIP: wrapping iTIP wrapping iCalendar
- RFC 2447
- Message header
- Use cases: invitations only -- specialized
- Issues: email is not a good transport
- Recipient is a person with multiple mail agents
- What happens when your email agent doesn't do calendaring?
- What happens when email is received by multiple mail agents who all try to accept meeting?
- How do attendees see updated meeting status?
- No way to learn recipient's capabilities (e.g. support for xCalendar, custom properties)
what did that rule mean? "RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1" means "Last weekday of the month"
--
LisaDusseault - 05 Oct 2004