ICalendar
Encyclopedia
iCalendar is a computer file format
File format
A file format is a particular way that information is encoded for storage in a computer file.Since a disk drive, or indeed any computer storage, can store only bits, the computer must have some way of converting information to 0s and 1s and vice-versa. There are different kinds of formats for...

 which allows Internet users to send meeting requests and tasks to other Internet users, via email, or sharing files with an extension
Filename extension
A filename extension is a suffix to the name of a computer file applied to indicate the encoding of its contents or usage....

 of .ics. Recipients of the iCalendar data file (with supporting software, such as an email client or calendar application) can respond to the sender easily or counter propose another meeting date/time.

iCalendar is used and supported by a large number of products, including Google Calendar
Google Calendar
Google Calendar is a free time-management web application offered by Google. It became available on April 13, 2006, and exited the beta stage in July 2009...

, Apple iCal
ICal
iCal is a personal calendar application made by Apple Inc. that runs on the Mac OS X operating system. iCal was the first calendar application for Mac OS X to offer support for multiple calendars and the ability to publish/subscribe calendars to WebDAV server....

, GoDaddy Online Group Calendar, IBM Lotus Notes, Yahoo! Calendar
Yahoo! Calendar
Yahoo! Calendar is a Web-based calendar service from Yahoo!. It can read calendar feeds and events syndicated from sites that make use of the published Yahoo! calendar programming interfaces. While users are not required to have a Yahoo! Mail account, they are required to have a free Yahoo! ID in...

, Evolution (software)
Novell Evolution
Evolution or Novell Evolution is the official personal information manager and workgroup information management tool for GNOME. It combines e-mail, calendar, address book, and task list management functions. It has been an official part of GNOME since version 2.8 in September 2004...

 , KeepandShare, Lightning
Lightning (software)
The Lightning project, announced on December 22, 2004, and in development by the Mozilla Foundation, produces an extension that adds calendar and scheduling functionality to the Mozilla Thunderbird mail and newsgroup client and SeaMonkey internet suite...

 extension for Mozilla Thunderbird
Mozilla Thunderbird
Mozilla Thunderbird is a free, open source, cross-platform e-mail and news client developed by the Mozilla Foundation. The project strategy is modeled after Mozilla Firefox, a project aimed at creating a web browser...

 and SeaMonkey
SeaMonkey
SeaMonkey is a free and open source cross-platform Internet suite. It is the continuation of the former Mozilla Application Suite, based on the same source code...

, and partially by Microsoft Outlook
Microsoft Outlook
Microsoft Outlook is a personal information manager from Microsoft, available both as a separate application as well as a part of the Microsoft Office suite...

. iCalendar is designed to be independent of the transport protocol. For example, certain events can be sent by traditional email or whole calendar files can be shared and edited by using a WebDav
WebDAV
Web-based Distributed Authoring and Versioning is a set of methods based on the Hypertext Transfer Protocol that facilitates collaboration between users in editing and managing documents and files stored on World Wide Web servers...

 server, or SyncML
SyncML
SyncML is the former name for a platform-independent information synchronization standard. The project is currently referred to as Open Mobile Alliance Data Synchronization and Device Management...

. Simple web servers (using just the HTTP protocol) are often used to distribute iCalendar data about an event and to publish busy times of an individual. Publishers can embed iCalendar data in web pages using hCalendar
HCalendar
hCalendar is a microformat standard for displaying a semantic HTML representation of iCalendar-format calendar information about an event, on web pages, using HTML classes and rel attributes....

, a 1:1 microformat
Microformats
A microformat is a web-based approach to semantic markup which seeks to re-use existing HTML/XHTML tags to convey metadata and other attributes in web pages and other contexts that support HTML, such as RSS...

 representation of iCalendar in semantic (X)
XHTML
XHTML is a family of XML markup languages that mirror or extend versions of the widely-used Hypertext Markup Language , the language in which web pages are written....

HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....

.

History and design

iCalendar was created by the
Internet Engineering Task Force
Internet Engineering Task Force
The Internet Engineering Task Force develops and promotes Internet standards, cooperating closely with the W3C and ISO/IEC standards bodies and dealing in particular with standards of the TCP/IP and Internet protocol suite...

 Calendaring and Scheduling Working Group (chaired by Anik Ganguly of Open Text Corporation
Open Text Corporation
OpenText Corporation Waterloo, Ontario, Canada. As Canada's largest software company, it produces and distributes computer software applications designed to enable Enterprise content management solutions for large corporations across all industries....

), and was authored by Frank Dawson of Lotus Development Corporation and Derik Stenerson of Microsoft Corporation. iCalendar is heavily based on the earlier vCalendar by the Internet Mail Consortium
Internet Mail Consortium
The Internet Mail Consortium provides information about all the Internet mail standards and technologies. They also prepare that supplement the Internet Engineering Task Force's RFCs....

 (IMC). iCalendar data files are plain text
Plain text
In computing, plain text is the contents of an ordinary sequential file readable as textual material without much processing, usually opposed to formatted text....

 files with the extension
Filename extension
A filename extension is a suffix to the name of a computer file applied to indicate the encoding of its contents or usage....

 .ics or .ifb (for files containing availability information only). RFC 5545 replaced RFC 2445 in September 2009 and now defines the standard.

The filename extension of "ics" is to be used to designate a file containing (an arbitrary set of) calendaring and scheduling information consistent with this MIME content type.

The filename extension of "ifb" is to be used to designate a file containing free or busy time information consistent with this MIME content type.

The file type code
Type code
A type code is the only mechanism used in pre-Mac OS X versions of the Macintosh operating system to denote a file's format, in a manner similar to file extensions in other operating systems. Codes are four-byte OSTypes...

 of "iCal" is to be used in Apple Macintosh operating system environments to designate a file containing calendaring and scheduling information consistent with this MIME media type.

The file type code of "iFBf" is to be used in Apple Macintosh operating system environments to designate a file containing free or busy time information consistent with this MIME media type.

By default, iCalendar uses the UTF-8
UTF-8
UTF-8 is a multibyte character encoding for Unicode. Like UTF-16 and UTF-32, UTF-8 can represent every character in the Unicode character set. Unlike them, it is backward-compatible with ASCII and avoids the complications of endianness and byte order marks...

 character set; a different character set can be specified using the "charset" MIME parameter (if the transport method used supports MIME, such as Email
Email
Electronic mail, commonly known as email or e-mail, is a method of exchanging digital messages from an author to one or more recipients. Modern email operates across the Internet or other computer networks. Some early email systems required that the author and the recipient both be online at the...

 or HTTP).

Each line is terminated by CR
Carriage return
Carriage return, often shortened to return, refers to a control character or mechanism used to start a new line of text.Originally, the term "carriage return" referred to a mechanism or lever on a typewriter...

+LF (in hexadecimal
Hexadecimal
In mathematics and computer science, hexadecimal is a positional numeral system with a radix, or base, of 16. It uses sixteen distinct symbols, most often the symbols 0–9 to represent values zero to nine, and A, B, C, D, E, F to represent values ten to fifteen...

: 0D0A). Lines should be limited to 75 octets
Octet (computing)
An octet is a unit of digital information in computing and telecommunications that consists of eight bits. The term is often used when the term byte might be ambiguous, as there is no standard for the size of the byte.-Overview:...

 (not characters) long. Where a data item is too long to fit on a single line it can be continued on following lines by starting the continuation lines with a space character (in hex: 20) or a tab character (in hex: 09).

Actual line feeds in data items are encoded as a backslash followed by the letter N (the bytes 5C 6E or 5C 4E in UTF-8). iCalendar data has the MIME
MIME
Multipurpose Internet Mail Extensions is an Internet standard that extends the format of email to support:* Text in character sets other than ASCII* Non-text attachments* Message bodies with multiple parts...

 content type text/calendar.

Limitations and future

The iCalendar format is designed to transmit calendar-based data, such as events, and intentionally does not describe what to do with that data. Thus, other programming may be needed to negotiate what to do with this data.

iCalendar is meant to "provide the definition of a common format for openly exchanging calendaring and scheduling information across the Internet". While the features most often used by users are widely supported by iCalendar, some more advanced capabilities have problems. For example, most vendors do not support Journals (VJOURNAL). Recurring and repeating meetings still have a "bit of mystery and ambiguity associated with them", causing some conversion problems in some cases. VTODOs have had conversion problems as well.

iCalendar's calendar is also not compatible with some non-Gregorian
Gregorian
Gregorian might refer to:* The thought or ideology of Pope Gregory I or Pope Gregory VII *Things named for Pope Gregory I:**Gregorian chant** Gregorian mass**Brotherhood of Saint Gregory...

 calendars such as the lunar calendar
Lunar calendar
A lunar calendar is a calendar that is based on cycles of the lunar phase. A common purely lunar calendar is the Islamic calendar or Hijri calendar. A feature of the Islamic calendar is that a year is always 12 months, so the months are not linked with the seasons and drift each solar year by 11 to...

s used in Israel
Israel
The State of Israel is a parliamentary republic located in the Middle East, along the eastern shore of the Mediterranean Sea...

 or Saudi Arabia
Saudi Arabia
The Kingdom of Saudi Arabia , commonly known in British English as Saudi Arabia and in Arabic as as-Sa‘ūdiyyah , is the largest state in Western Asia by land area, constituting the bulk of the Arabian Peninsula, and the second-largest in the Arab World...

.

The memo "Calendar Access Protocol" (RFC
Request for Comments
In computer network engineering, a Request for Comments is a memorandum published by the Internet Engineering Task Force describing methods, behaviors, research, or innovations applicable to the working of the Internet and Internet-connected systems.Through the Internet Society, engineers and...

 4324) was an initial attempt at a universal system to create real-time calendars. This protocol was eventually abandoned, possibly because of excessive complexity. Regardless, iCalendar-based code such as GroupDAV
GroupDAV
GroupDAV is a computer protocol used to connect Open Source groupware clients with Open Source groupware servers. It is a lightweight protocol whose primary design goal is to be as simple as possible to implement, focusing more on real world issues with open source applications than on an...

 and CalDAV
CalDAV
Calendaring Extensions to WebDAV, or CalDAV, is an Internet standard allowing a client to access scheduling information on a remote server. It extends WebDAV specification and uses iCalendar format for the data. The protocol is defined by RFC 4791...

 are now being used more frequently in both client and server software packages.

The IETF "Calendaring and Scheduling Working Group" (ietf-calsify WG) has published additional proposed revisions to the iCalendar standards (as RFC-drafts/"Proposed"; see http://datatracker.ietf.org/wg/calsify/), but as of January 2011, the group has 'ended'. Much of their work focused on clarifications to the previous standards, and was apparently influenced on work by the Calendaring and Scheduling Consortium (a.k.a. Calconnect
CalConnect
CalConnect, the Calendaring and Scheduling Consortium, is a partnership among vendors, developers, and customers to advance calendaring and scheduling standards and implementations...

)

Core object

The top-level element in iCalendar is the Calendaring and Scheduling Core Object, a collection of calendar and scheduling information. Typically, this information
will consist of a single iCalendar object. However, multiple iCalendar objects can be grouped together.

The first line must be "BEGIN:VCALENDAR", and the last line must be "END:VCALENDAR"; the contents between these lines is called the "icalbody".

The body of the iCalendar object (the icalbody) is made up of a list of calendar properties and one or more calendar components. The calendar properties apply to the entire calendar. The calendar components are several calendar properties which create a calendar schematic (design). For example, the calendar component can specify an event, a to-do list, a journal entry, time zone information, or free/busy time information, or an alarm. Empty lines are not allowed in some versions of usage (Google calendar).

Here is a simple example of an iCalendar object, "Bastille Day
Bastille Day
Bastille Day is the name given in English-speaking countries to the French National Day, which is celebrated on 14 July of each year. In France, it is formally called La Fête Nationale and commonly le quatorze juillet...

 Party" event which occurs July 14, 1997 17:00 (UTC) through July 15, 1997 03:59:59 (UTC):

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

There are many different types of components which can be used in iCalendar, as described below.

Events (VEVENT)

"VEVENT" describes an event, which has a scheduled amount of time on a calendar. Normally, when a user accepts the calendar event, this will cause that time to be considered busy. A VEVENT may include a VALARM which allows an alarm. Such events have a DTSTART which sets a starting time, and a DTEND which sets an ending time. If the calendar event is recurring, DTSTART sets up the start of the first event.

VEVENT also is used for calendar events without a specific time, such as anniversaries and daily reminders.
If you need to send in a cancellation for an event the UID
UID
UID may refer to:* Unique Identification Number later renamed as Aadhaar number, an initiative of Unique Identification Authority of India of the Indian government to create a unique ID for every Indian resident....

 should be same as the original event and the component properties should be set to cancel Ex.

METHOD:CANCEL

STATUS:CANCELLED

For sending an UPDATE for an event the UID should match the original UID. the other component property to be set is:

SEQUENCE:

i.e. for the first update

SEQUENCE:1

In Microsoft Outlook, the SUMMARY corresponds to the "Subject" entry in the "Appointment" form, and DESCRIPTION to the descriptive text below it. In addition, Outlook 2003 demands a UID and a DTSTAMP.

To-do (VTODO)

VTODO explains a to-do item, i.e., an action-item or assignment.

The following is an example of a to-do due on April 15, 1998. An audio alarm has been specified to remind the calendar user at noon, the day before the to-do is expected to be completed and repeat hourly, four additional times. The SEQUENCE element shows this to-do has been modified twice since it was initially created.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VTODO
DTSTAMP:19980130T134500Z
SEQUENCE:2
UID:uid4@host1.com
ORGANIZER:MAILTO:unclesam@us.gov
ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@example.com
DUE:19980415T235959
STATUS:NEEDS-ACTION
SUMMARY:Submit Income Taxes
BEGIN:VALARM
ACTION:AUDIO
TRIGGER:19980403T120000
ATTACH;FMTTYPE=audio/basic:http://example.com/pub/audio-
files/ssbanner.aud
REPEAT:4
DURATION:PT1H
END:VALARM
END:VTODO
END:VCALENDAR

Journal entry (VJOURNAL)

VJOURNAL is a journal entry. They attach descriptive text to a particular calendar date, may be used to record a daily record of activities or accomplishments, or describe progress with a related to-do entry. A "VJOURNAL" calendar component does not take up time on a calendar, so it has no effect on free or busy time (just like TRANSPARENT entries). In practice, few programs support VJOURNAL entries, although examples exist: Plum Canary's Chirp software uses VTODO and VJOURNAL together. Also KOrganizer from the KDE desktop supports VJOURNAL.

The following is an example of a journal entry:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VJOURNAL
DTSTAMP:19970324T120000Z
UID:uid5@host1.com
ORGANIZER:MAILTO:jsmith@example.com
STATUS:DRAFT
CLASS:PUBLIC
CATEGORIES:Project Report, XYZ, Weekly Meeting
DESCRIPTION:Project xyz Review Meeting Minutes\n
Agenda\n1. Review of project version 1.0 requirements.\n2.
Definition
of project processes.\n3. Review of project schedule.\n
Participants: John Smith, Jane Doe, Jim Dandy\n-It was
decided that the requirements need to be signed off by
product marketing.\n-Project processes were accepted.\n
-Project schedule needs to account for scheduled holidays
and employee vacation time. Check with HR for specific
dates.\n-New schedule will be distributed by Friday.\n-
Next weeks meeting is cancelled. No meeting until 3/23.
END:VJOURNAL
END:VCALENDAR

(Note: This example is literally taken from RFC 2445 with the correction of changing the word 'CATEGORY' to 'CATEGORIES', which is a mistake in the original RFC)

Free/busy time (VFREEBUSY)

VFREEBUSY is a request for free/busy time, is a response to a request, or is a published set of busy time.

The following is an example of published busy time information.:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//RDU Software//NONSGML HandCal//EN
BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jsmith@example.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.example.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
END:VCALENDAR

Other component types

Other component types include VTIMEZONE (time zones) and VALARM (alarms). Some components can include other components (VALARM is often included in other components).

Distributing updates

The UID field distributes updates when a scheduled event changes. When the event is first generated a globally unique identifier is created. If a later event is distributed with the same UID, it replaces the original one.

Calendar extensions

vCalendar and iCalendar support private software extensions, with a "X-" prefix, a number of which are in common usage.

Some of these include:
  • X-RECURRENCE-ID - vCalendar 1.0 extension which mimics the iCalendar 2.0 RECURRENCE-ID (Nokia S60 3rd Edition)
  • X-EPOCAGENDAENTRYTYPE - defines the client calendar type
  • X-FUNAMBOL-AALARMOPTIONS
  • X-FUNAMBOL-ALLDAY - All Day event flag
  • X-MICROSOFT-CDO-ALLDAYEVENT - Microsoft Outlook all day event flag
  • X-MICROSOFT-CDO-BUSYSTATUS - Microsoft Outlook status information
  • X-WR-CALNAME - The display name of the calendar
  • X-WR-CALDESC - A description of the calendar
  • X-WR-RELCALID
  • X-WR-TIMEZONE
  • X-PUBLISHED-TTL - Recommended update interval for subscription to the calendar

vCalendar 1.0

iCalendar's design was based on the previous file format vCalendar created by the Internet Mail Consortium (IMC).

Here is an example of information in vCalendar format:
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
CATEGORIES:MEETING
STATUS:TENTATIVE
DTSTART:19960401T033000Z
DTEND:19960401T043000Z
SUMMARY:Your Proposal Review
DESCRIPTION:Steve and John to review newest proposal material
CLASS:PRIVATE
END:VEVENT
END:VCALENDAR

After iCalendar was released, the Internet Mail Consortium stated that it "hopes that all vCalendar developers take advantage of these new open standards and make their software compatible with both vCalendar 1.0 and iCalendar."

See also

  • List of applications with iCalendar support
  • CalDAV
    CalDAV
    Calendaring Extensions to WebDAV, or CalDAV, is an Internet standard allowing a client to access scheduling information on a remote server. It extends WebDAV specification and uses iCalendar format for the data. The protocol is defined by RFC 4791...

  • GroupDAV
    GroupDAV
    GroupDAV is a computer protocol used to connect Open Source groupware clients with Open Source groupware servers. It is a lightweight protocol whose primary design goal is to be as simple as possible to implement, focusing more on real world issues with open source applications than on an...

  • hCalendar
    HCalendar
    hCalendar is a microformat standard for displaying a semantic HTML representation of iCalendar-format calendar information about an event, on web pages, using HTML classes and rel attributes....

  • Scheduling OSID provides a software interface abstraction for using calendaring protocols
  • vCard
    VCard
    vCard is a file format standard for electronic business cards. vCards are often attached to e-mail messages, but can be exchanged in other ways, such as on the World Wide Web or Instant Messaging...

  • xCal
    XCal
    xCal is an XML-compliant representation of the iCalendar standard. xCal is not an alternative nor next generation of iCalendar. xCal represents iCalendar components, properties and parameters as defined in iCalendar....

  • Webcal
    Webcal
    webcal is an unofficial Uniform Resource Identifier scheme for accessing iCalendar files. It is also the name of two web calendar applications written in Perl....

     - an unofficial Uniform Resource Identifier
    Uniform Resource Identifier
    In computing, a uniform resource identifier is a string of characters used to identify a name or a resource on the Internet. Such identification enables interaction with representations of the resource over a network using specific protocols...

     (URI) scheme
    URI scheme
    In the field of computer networking, a URI scheme is the top level of the Uniform Resource Identifier naming structure. All URIs and absolute URI references are formed with a scheme name, followed by a colon character , and the remainder of the URI called the scheme-specific part...

  • Zip file

External links

  • RFC 5545 Internet Calendaring and Scheduling Core Object Specification (iCalendar) (replaces RFC 2445)
  • RFC 5546 iCalendar Transport-Independent Interoperability Protocol (iTIP) (replaces RFC 2446)
  • RFC 6047 iCalendar Message-Based Interoperability Protocol (iMIP) (replaces RFC 2447)
  • RFC 6321 xCal: The XML format for iCalendar (iCalendar XML Representation)
  • Internet Mail Consortium (IMC). "Personal Data Interchange: vCard and vCalendar". This describes the relationship of vCard, vCalendar, and iCalendar, and includes IMC's request for implementors to support both vCalendar and iCalendar.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK