ArticleslgStudy

computer science

ICalendar

ICalendar is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand ICalendar rather than just read about it. In short: The Internet Calendaring and Scheduling Core Object Specification (iCalendar) is a media type which allows users to store and exchange calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, and together with its associated standards has been a cornerstone of the standardization and interoperability of digital calendars across different vendors. Files formatted acco…

ICalendar — main illustration
ICalendar — illustration

Key takeaways

  • ICalendar belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect ICalendar to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of ICalendar from memory before moving on to harder problems.

Reference excerpt

The Internet Calendaring and Scheduling Core Object Specification (iCalendar) is a media type which allows users to store and exchange calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, and together with its associated standards has been a cornerstone of the standardization and interoperability of digital calendars across different vendors. Files formatted according to the specification usually have an extension of .ics. With supporting software, such as an email reader or calendar application, recipients of an iCalendar data file can respond to the sender easily or counter-propose another meeting date/time. The file format is specified in a proposed Internet standard (RFC 5545) for calendar data exchange. The standard and file type are sometimes referred to as "iCal", which was the name of the Apple Inc. calendar program until 2012 (see iCal), which provides one of the implementations of the standard. iCalendar is used and supported by many products, including:

general consumer: Apple Calendar (formerly iCal), eM Client, Google Calendar, Yahoo! Calendar corporate: HCL Domino (formerly IBM Notes and Lotus Notes) free software: GNOME Evolution, GNU Emacs, Mozilla Thunderbird, and SeaMonkey It is partially supported by Microsoft Outlook and Novell GroupWise. 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 server, or SyncML. 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, a 1:1 microformat representation of iCalendar in semantic (X)HTML.

History

iCalendar was created in 1998 by the Calendaring and Scheduling Working Group of the Internet Engineering Task Force, chaired by Anik Ganguly of Open Text Corporation, and was authored by Frank Dawson of Lotus Development Corporation and Derik Stenerson of Microsoft Corporation. iCalendar data files are plain text files with the extension .ics or .ifb (for files containing availability information only). RFC 5545 replaced RFC 2445 in September 2009 and now defines the standard. iCalendar is heavily based on the earlier vCalendar by the Internet Mail Consortium (IMC) which has the .vcs file extension. 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." The memo "Calendar Access Protocol" (RFC 4324) was an initial attempt at a universal system to create real-time calendars, but was eventually abandoned. Instead, iCalendar saw some adoption for such purposes with ad hoc extensions such as GroupDAV and CalDAV emerging as informal standards and seeing some adoption in both client and server software packages. A first effort to simplify iCalendar standards by the IETF "Calendaring and Scheduling Working Group" (ietf-calsify WG) ended in January 2011 without seeing adoption. The work was then picked up by the "Calendaring Extensions Working Group" (ietf-calext WG).

Design iCalendar data have the MIME content type text/calendar. The filename extension of ics is to be used for files containing calendaring and scheduling information, ifb for files with free or busy time information consistent with this MIME content type. The equivalent file type codes in Apple Macintosh operating system environments are iCal and iFBf. By default, iCalendar uses the UTF-8 character set; a different character set can be specified using the "charset" MIME parameter (if the transport method used supports MIME, such as Email or HTTP). Each line is terminated by CR+LF (in hexadecimal: 0D0A). Lines should be limited to 75 octets (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 or N (the bytes 5C 6E or 5C 4E in UTF-8). 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. A companion standard, "iCalendar Transport-Independent Interoperability" (iTIP) (RFC 2446), defines a protocol for exchanging iCalendar objects for collaborative calendaring and scheduling between "Calendar Users" (CUs) facilitated by an "Organizer" initiating the exchange of data. This standard defines methods such as PUBLISH, REQUEST, REPLY, ADD, CANCEL, REFRESH, COUNTER (to negotiate a change in the entry), and DECLINE-COUNTER (to decline the counter-proposal). Another companion standard, "iCalendar Message-based Interoperability Protocol (iMIP)" (RFC 2447), defines a standard method for implementing iTIP on standard Internet email-based transports. The "Guide to Internet Calendaring" (RFC 3283) explains how iCalendar interacts with other calendar computer language (current and future). 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 must include the "PRODID" and "VERSION" calendar properties. In addition, it must include at least one calendar component. VERSION:1.0 is used to specify that data is in the old vCalendar format. VERSION is 2.0 for the current iCalendar format as of 2016. The body of the iCalendar object (the icalbody) contains single-line Calendar Properties that apply to the entire calendar, as well as one or more blocks of multiple lines that each define a Calendar Component such as an event, journal entry, alarm, or one of several other types. Here is a simple example of an iCalendar object with a single calendar containing a single Calendar Component, a "Bastille Day Party" event starting at 5pm on July 14, 1997, and ending at 4am the following morning:

… excerpt ends here. Continue reading the full article.

Worked examples

Example 1 — a first encounter with ICalendar

Start with the simplest possible case. Write down what ICalendar claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to ICalendar before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about ICalendar ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of ICalendar

In research
ICalendar appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses ICalendar in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
ICalendar is common in secondary-school and first-year university syllabi. It links to neighbouring topics Calendaring standards, Computer file formats, Internet Standards, so understanding it makes those chapters shorter.
In everyday life
Look for ICalendar outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study ICalendar in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what ICalendar means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain ICalendar out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is ICalendar in simple terms?

The Internet Calendaring and Scheduling Core Object Specification (iCalendar) is a media type which allows users to store and exchange calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, and together with its associated standards has been a cor…

Why does ICalendar matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study ICalendar?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on ICalendar.

Tags

  • Calendaring standards
  • Computer file formats
  • Internet Standards

Keep exploring