At the Forge - Sunbird and iCalendar

Mozilla's Sunbird calendar combines the advantages of centralized, cooperative Web applications with the speed and usability of a cross-platform desktop tool.

When I first started to write server-side software, I laughed at the
thought that I was writing applications. After all, I was writing only
small bits of code; nothing I did could hold a candle to
what a real program, running on the desktop of someone's computer,
could do.

Of course, things have changed quite a bit in the computer industry
since those early days. Today, Web-based applications are not only an
established fact of life, but they seem to be playing an increasingly
prominent role in our daily lives. Recently, I began to look
into software that I could use to prepare my US income taxes. I
shouldn't have been surprised to discover that many companies now are
offering Web-based tax calculation programs. The term ASP, or
application service provider, was hot several years ago, when it
seemed as if all software would work over the Web. Although there
have been some obvious success stories, there also were many failures, for
technical and business reasons alike.

It's easy to understand why Web-based applications are attractive to a
business: you no longer have to test your software on every
platform but instead only on a handful of browsers. You no longer need to
support many different versions of the software, because only
one version is accessible at any given time. Bug fixes and software updates can be
integrated into the system almost continuously. The software is
available from anywhere with an Internet connection, instead of only on the
computer on which it was installed. The list goes on and on. From many
perspectives, this approach makes more sense than stamping out thousands of
CDs, testing the software on hundreds of configurations and staffing
a large call center to support all of those configurations.

But for all of the hoopla, Web applications still are limited
compared to their desktop counterparts. Because all serious
processing is done on the server, including writing to and reading
from databases and files, instantaneous feedback from the interface
is almost impossible. Even with the fastest servers and a lot
of clever magic, such programs still can seem somewhat
tedious. Google's new maps system (see the on-line Resources), for example,
demonstrates that it is possible, albeit difficult, to create Web
applications that feel much like their desktop counterparts.

Those of us without Google's resources increasingly are turning to
another solution, namely using hybrid software—desktop applications
that rely heavily on Web technologies. It used to be that Web
technology could be described, with a fair degree of precision, as
HTML-formatted documents retrieved by way of HTTP using a URL. Web browsers
were, for a long time, the only programs that made serious use of
these standards.

Today, however, a growing number of desktop programs make use
of HTML, HTTP and URLs, even though they aren't Web browsers. They
use URLs to locate remote resources, HTML for its simple, universally
understood method of creating hyperlinked documents and HTTP because
it is reliable, simple, universal and cacheable. There aren't too
many examples of word processors and spreadsheets using these
protocols—at least, not that I'm aware of—but one hybrid program
has been playing an increasingly prominent role in my life, Mozilla
Sunbird.

Sunbird (Figure 1) is the standalone version of the calendar extension that
can be installed along with either Firefox or Thunderbird.
Integration with these two programs is far from perfect, and I
sometimes want to run or restart one without the other. So I
installed Sunbird over the summer and have been pleased with each new
release as it is made available.

Figure 1. The main Sunbird window, in multiweek mode. Two of my three
calendars (Hebcal 2005 and Northwestern grad school) are color-coded,
both in the definition pane and the main window. Also notice how items
in my to-do list are color-coded, indicating whether they are on time,
late, in need of attention or ongoing.

Now, you might think there is nothing inherently useful about
having a calendar use Web technologies. But in the case of Sunbird
and the iCalendar standard, there is a major benefit—namely, the
ability to create calendars for public consumption. This month, we
begin a several-month journey through the
creation, distribution and sharing of calendars based on the
iCalendar standard. Along the way, we'll see not only how to work
with iCalendar, but how the hybrid applications can provide a powerful
combination of features and an enhanced user experience.

iCalendar and Sunbird

iCalendar is an Internet standard for sharing calendar
information across different computers. The basic
idea is simple: if everyone at my office keeps track
of their schedules on their own computers, it
makes things efficient for those individuals but no
better for the group than if everyone were using
a pocket diary. Scheduling meetings still would be
a hassle. Moreover, group events would have to be
entered once on each person's calendar—meaning
that when a meeting moves from Monday to Wednesday,
each of the people on the team needs to adjust their
individual calendars accordingly.

iCalendar was designed to solve this problem by standardizing the
calendar files themselves such that those files can be
transferred from one program to another. The original vision, as far
as I can tell, pictured everyone using programs that implement
iCalendar on their computers and sharing that information with
others by way of the network and Internet. The reality has taken some time
to catch up with this theory, but a variety of programs now are
available that do implement parts of the iCalendar suite.

I should note that the entire iCalendar Project has been the victim of
some bad and unlucky naming problems. The file in which data is
stored and that can be used to interchange information is called
vCalendar, just as the electronic business-card format is known as
vCard. But many people and applications, including Sunbird, refer to the file format as iCalendar, even though the file
identifies itself as vCalendar. As you can imagine, the term iCalendar
has been shortened to iCal, which is especially unfortunate, given
that Apple's Mac OS X operating system comes with a program called iCal
that uses the vCalendar file format. Because the use of vCalendar
to describe these files seems to have gone the way of the dodo, I simply
use the word iCalendar to refer to both the file format and
the overall standard.

Download and install the appropriate version of the Sunbird standalone
calendar program; see Resources for the URL. If you're a bit more
daring, you can install one of the nightly builds; I actually am
using Sunbird as my primary calendaring application, so I have been using
the official builds. If you prefer to have your calendar integrated into
either Firefox or Thunderbird, go to the main download page and choose
the appropriate extension and version that you would like to install.
If you install an extension to Firefox or Thunderbird, you need to
restart the host program before continuing.

Sunbird allows you to create two types of items, events and tasks.
Events normally appear on the calendar itself and can include
holidays and meetings. Tasks normally appear on the left side of the
screen and indicate things that you should get done, with an optional
starting and ending date. Sunbird changes the color of tasks
according to how soon they need to be done; overdue tasks are in red,
current ones are in blue and future ones are in green. Gray tasks
are in the far-off future, and crossed-out ones—if you choose to
display them—are completed tasks.

Both events and tasks can be repeating, meaning we can schedule a
meeting for every Wednesday at 4 pm over the next ten weeks rather
than entering ten individual events in the calendar. We can enter
exceptions to such recurring events as needed, and we can set them to recur every
few days, months or years, with “every few” being user-definable.

Trending Topics

Upcoming Webinar

Getting Started with DevOps - Including New Data on IT Performance from Puppet Labs 2015 State of DevOps Report

August 27, 2015
12:00 PM CDT

DevOps represents a profound change from the way most IT departments have traditionally worked: from siloed teams and high-anxiety releases to everyone collaborating on uneventful and more frequent releases of higher-quality code. It doesn't matter how large or small an organization is, or even whether it's historically slow moving or risk averse — there are ways to adopt DevOps sanely, and get measurable results in just weeks.