State of iCalendar standards/implementation

Brent J. Nordquist bjn@horde.org
Tue, 20 Mar 2001 23:24:53 -0600 (CST)


[Here's a first cut of my notes on what I've learned about the current
state of calendaring/scheduling.  There are a lot of pieces to absorb and
resources to track down, so I hope this will help save someone else some
time.  Feedback welcome!]


Calendaring/Scheduling Notes
============================

$Author: bjn $ - Brent J. Nordquist <bjn@horde.org>
$Revision: 1.3 $
$Date: 2001/03/21 05:19:26 $


Abstract
========

Organizations wanting to develop a list of requirements for
calendaring/scheduling (cal/sch), and move in the direction of a
standards-based solution which meets these requirements, may find this
document of interest. It attempts to assess the "lay of the land" (as the
author understands it, as of the above date) to aid in requirements
definition and design.

The cal/sch application area stands out in contrast to the areas of
email and directory services, where SMTP/IMAP and LDAP (respectively)
provide mature, standards-based solutions.  The standards for the
cal/sch application area are still in the early stages of development,
and therefore even the commercial products which provide cal/sch are
using proprietary approaches; open-source implementations are skeletal
to nonexistent.

There are two broad categories of cal/sch techniques:  non-realtime (using
vCalendar and email messages), and realtime (which adds a client/server,
live-network protocol).

 - The standards for non-realtime cal/sch are pretty stable at this point,
   and are beginning to achieve adoption.  Quite a few existing client
   applications (i.e., user applications such as PIMs) already support
   vCalendar and the non-realtime techniques.

 - The standards for realtime cal/sch are still in "draft" status, and
   it will likely be 1-2 years before they are finalized and widespread.
   Therefore, a solution which interoperates across multiple client
   applications will only be able to use non-realtime methods for some
   time to come.


Requirements
============

The following is a potential list of requirements or desired features
for a cal/sch solution, which an organization should discuss and rank:

 - Publication of "free/busy time" blocks (without details)
    -- Non-realtime (through email)
    -- Realtime
 - Publication of calendar entries (with details)
    -- Non-realtime (through email)
    -- Realtime
 - Scheduling (creation of meetings)
    -- Non-realtime (through email)
    -- Realtime
 - Meeting acceptance/rejection
    -- Non-realtime (through email)
    -- Realtime
 - Resource reservation (non-person scheduling)
 - Recurring events
 - Tasks (to-do items)
 - Authentication and secure access
 - Delegation (ability to schedule on-behalf-of)
 - Privacy (withholding details of schedule items)
 - Multiple calendars per person (for different life spheres)
 - Reminders (alarms; e.g., by email, by pager)
 - Interaction with outside users (over the Internet)
 - Integration with a portal
 - Synchronization to PDAs


Existing Implementations
========================

1.  Microsoft Exchange Server/Outlook Client (commercial)

    Exchange is clearly the market leader, and provides the richest
    feature set.  In particular, it provides both non-realtime and
    realtime cal/sch abilities.  [It likely provides most of the above
    list of features as well; my research isn't complete on that point.]

    Outlook can be installed in two modes, one of which is "Internet-Only
    Mode" (or "Internet Mail Only" mode).  In this mode, Outlook provides
    non-realtime iCalendar scheduling ability; vCalendar objects can be
    sent through email messages, dragged/dropped from the desktop or other
    documents, etc.  It can recognize incoming calendar events and respond
    to them (automatically or manually) using non-realtime methods.

    In this mode, Outlook also provides the ability to publish "free/busy
    times" (i.e., without details) to an Internet server (by Exchange,
    FrontPage Extensions, HTTP POST, or FTP).  These "free/busy times" can
    be consulted (realtime) by other Outlook clients for easy creation
    of a meeting; however, the scheduling portion (notification of
    all clients and acceptance/rejection of the meeting) is performed
    non-realtime.  [I have not been able to find documentation on the
    format used for HTTP POST; Outlook expects a specific response from
    the web server which is unknown to me.]

    When Outlook is used in "Exchange mode" (for lack of a better term),
    it can provide realtime scheduling.  The obvious disadvantage
    to this approach is that all users must use Outlook (or the
    Exchange-based web calendar) in order to use this solution.
    Outlook 2001 for the Mac, code named "Watson", will soon be available
    (http://www.macwindows.com/exchange2k.html), but it is literally an
    Exchange-only tool (no POP3/IMAP); it is even less standards-based
    than Outlook for Windows.

    Outlook provides web-based access to Exchange's calendar store.
    Summary:  Exchange supports one client (Outlook) plus web.

    [An important unanswered question is:  Can Outlook be used with
    Exchange for cal/sch, but with SMTP/IMAP for email?  The stark
    division of the above two modes suggests a "no" answer to this
    question.]

    Microsoft has participated in the IETF "CalConnect" interoperability
    tests (see below), and as they have for iCalendar, they will likely
    continue to add support for Internet standards as they are developed.
    Their past history, however (e.g., Windows 2000 Server, not-quite-DNS,
    not-quite-LDAP, not-quite-Kerberos, etc.), would seem to suggest that
    they will continue to use embrace-and-extend tactics where Internet
    standards are concerned.

2. iPlanet (Netscape/Sun) Calendar Server (commercial)

    The iPlanet (formerly Netscape) Calendar Server is also a fairly
    mature product.  It provides both non-realtime and realtime
    cal/sch abilities, but in keeping with the nature of Internet-wide
    interoperability, its focus until recently seems to have been on
    non-realtime (using email).

    The iCS ties in very nicely with the iPlanet Directory Server (LDAP),
    and it uses the iDS's rich, fine-grained access-control abilities
    to provide very flexible access control and delegation for users'
    calendars.  iCS provides the ability to define groups of users with
    shared control of a calendar.  Also, each user can define multiple
    calendars (such as work, home, etc.) which are merged and presented
    to users as a consolidated view; access control and delegation is
    separate for each of these separate calendars.

    iCS also ties in with Legato on Solaris (Networker, a.k.a. Solstice
    Backup) for backups without downtime.

    iCS provides web-based access to calendars, and this is how realtime
    cal/sch is provided.

    iCS's realtime cal/sch is only provided through web-based access;
    direct realtime integration with Outlook is not provided.  Summary:
    iCS supports no clients plus web.

    iPlanet has participated in the IETF "CalConnect" interoperability
    tests (see below), and is clearly committed to the furtherance of
    open cal/sch standards.

3. Steltor (formerly CS&T) CorporateTime and Lexacom Servers (commercial)

    This company seems to round out the "top 3" active commercial cal/sch
    server providers.  They are active in the IETF process, and some of
    their personnel have co-written the IETF draft standards.

    They do appear to have an Outlook plug-in.  [More research would be
    needed before considering this company's products.]

4. Open Source

    The longest-running open-source calendaring implementation is mcal
    (http://mcal.chek.com/).  While quite a few open-source applications
    have added mcal support, mcal does not appear to be keeping up with
    the modern IETF standards, and therefore seems to me to be a dead-end.

    The group at the San Diego Software Studio are producing a library,
    libical (http://www.softwarestudio.org/libical/), which is the
    best-available implementation of the modern IETF standards.  A
    perl binding (Net::iCal) is also available.  At this point the
    library provides the non-realtime elements of the standards.

    Ximian's Evolution (http://www.ximian.com/apps/evolution.php3)
    holds out the best promise of a full-featured, open-source cal/sch
    native client (it will also provide email, contacts, etc.), but it
    is still in development.

    The Horde Project (http://www.horde.org/) provides open-source, PHP
    (web-based) groupware applications, including Kronolith, a calendaring
    application.  [Disclaimer:  The author is on the Horde core team. :-)]
    There are several other open-source web-based calendaring (and
    groupware) solutions in various stages of development.

    No open-source cal/sch servers yet exist, to my knowledge.  The bottom
    line is that there are no full-featured, mature, open-source cal/sch
    solutions (complete, including server and realtime) available today.


The IETF (http://www.ietf.org/)
===============================

The Internet Engineering Task Force is an Internet community "concerned
with the evolution of the Internet architecture and the smooth operation
of the Internet".  They are a standards body; their method for achieving
their goal is through the development and publication of interoperable
standards for the Internet.  They have a long and distinguished history,
having developed and created the standards for such well-known Internet
protocols as DNS, FTP, SMTP, IMAP, and LDAP.

[The 50th IETF meeting was being held in Minneapolis, MN, USA as this
document was originally written.]


IETF Standards for Calendaring/Scheduling (http://www.calsch.org/)
==================================================================

The IETF Internet draft "Implementors' Guide to Internet Calendaring"
(draft-ietf-calsch-imp-guide) gives a good overview of these pieces,
and scenarios under which they're used.  The standards fall into two
broad categories which we've labeled "non-realtime" and "realtime"
in this document:

Group 1:  Object/Method Definition and Non-Realtime Protocols

    (Note that iCalendar is a refinement/extension/further development
    of the earlier vCalendar specification.)

    IETF standards:

    - RFC 2445 (iCalendar or "iCal"):  calendar events/core objects
    - RFC 2446 (iTIP):  interoperable scheduling functionality
    - RFC 2447 (iMIP):  encapsulation for transport (iTIP in MIME)

Group 2:  Realtime Protocols

    IETF draft standards:

    - draft-ietf-calsch-cap (CAP):  realtime protocol (as IMAP is to email)
    - draft-ietf-calsch-crisp (CRISP):  iTIP-only subset of CAP
    - iRIP [defunct?]


CalConnect
==========

In keeping with its goal of achieving multiple implementations of an
interoperable standard, the IETF cal/sch working group hosts regular
"CalConnect" meetings.  Vendors bring their products, and the group
assesses progress toward interoperability, judges conformance with the
standards (as defined to date), and through discussion of the issues,
sets the next steps for furthering the standards in the IETF process.

The summary of the first CalConnect in Spring 2000 can be found here:

http://www.imc.org/ietf-calendar/mail-archive/msg03499.html

The next CalConnect has been rescheduled for April 2001 at Stanford;
results will be posted to http://www.calsch.org/ when they're available.


The IMC (http://www.imc.org/)
=============================

"The Internet Mail Consortium is the only international organization
focused on cooperatively managing and promoting the rapidly-expanding
world of electronic mail on the Internet."  They have a lot of excellent
material on their web site, including information on calendaring.


Mailing Lists
=============

- IETF cal/sch working group (hosted at IMC)

    Send email to <majordomo@imc.org> with "subscribe ietf-calendar"
    in the body.

- libical

    Send email to <minimalist@softwarestudio.org> with "subscribe
    libical" as the subject.


Miscellaneous Other Notes/Questions
===================================

Outlook Express

    This app. can do mail, news, and directory, but NOT calendaring.

Outlook 98

    Check whether OL98 is in "Internet Mail Only" (IMO) mode by using
    Help... About.  Apparently, when it's not in that mode, you can't
    publish free/busy to an open server (HTTP POST/FTP).  It's also an
    outstanding question (above) whether you can use Exchange-based
    calendaring and open-based email at the same time.

    The free/busy publishing requires that the Web Publishing Wizard
    be installed.  Vresion 1.52 is available from the Microsoft site
    as wpie415-x86.exe (for IE >= 5).  When WPW is run, it looks for
    a file, /postinfo.html, which apparently contains something that
    tells it the format for posting data to that server.  I have no
    idea what the format for this is.

    In lieu of that, it will prompt you for the server and path, or
    these can be set under "Options" "Calendar" "Free/Busy" button.
    The URLs take the form:

        http://[userid:passwd@]servername/dir/username.vfb

    The "[...]" part is optional.  The "dir" part could be a CGI script,
    I think, if you knew what to output.  The "http:" could be FTP.
    The "username" part can be "%NAME%" for reading; this is what
    allows Outlook to look the data up for someone else, when creating
    a meeting.

Outlook 2000

    [Supposedly has even more mature iCalendar and open support?]