r1 - 05 Oct 2004 - 10:48:47 - LisaDusseaultYou are here: OSAF >  Journal Web  >  TWikiUsers > LisaDusseault > LisaDusseaultNotes > LisaDusseault20041005
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

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.