Monday, September 10, 2007

Setting Up Sunbird

Note: This looks like a lot, but it really isn't. Take a few minutes to skim the document, and if it looks like it's something you want to do, follow the instructions step-by-step. I've tried to keep them precise and detailed.

Sunbird is the Mozilla calendar application. It is intended to run alongside the Firefox web browser and the Thunderbird email client as your open source alternative to commercial software (and in particular, Outlook Exchange).

Or, if you prefer, you can install Lightning. This is exactly the same as Sunbird, except that it runs and an extension inside the Thunderbird email client. Sunbird and Lightning both do the same thing. You do not need to install them both. You can install one, the other, or both. It's up to you (thanks to Ryan Nicolson for suggesting this clarification).

As a stand-alone calendar Sunbird works quite well and is very intuitive. Find a date, click on the date, add an event. That's about all there is to it.

But users expect more of online calendars. In particular, they expect to be able to share their calendars with other users. They expect to be able to merge calendars, viewing several calendars in a single window. And they expect to be able to add and update events in their calendar using email notifications.

All of this works seamlessly, if annoyingly, in Outlook. But for the open source user, it has all been a confusing mess.

The reason for this is that there's no easy way to publish your calendar so that others can use it. Just as Outlook has the Exchange server, an open source calendar needs an online server of some sort. The designers of Sunbird chose Webdav. Webdav, which stands for "Web-based Distributed Authoring and Versioning", is a W3C standard application. But most people don't have access to a Webdav server, which makes it a really bad choice.

So here's what I did: I have set up Sunbird to take care of my calendaring needs and am using my Google account instead of a Webdav server. It was actually a very simply process, in the end, but the online documentation is awful. So I created my own. Here's how to set up Sunbird using Google Calendar.

  1. Create a Google Calendar

    Go to Google Calendar and create an account or login with your existing Google account. To create a Google Calendar, click on 'Add' in the left-hand margin. Then fill out the form.


  2. Get the Google Calendar Address

    In Google Calendar, click on the 'manage calendars' link at the bottom of the left-hand column. Click on the name of the calendar. This will take you to an editing screen. At the bottom of the editing screen you will find buttons labled 'HTM:, 'XML' and 'iCal'. Pick either of the 'XML' addresses (it doesn't matter which one) and save the URL that pops up. This is your 'calendar address'.

  3. Install Sunbird

    Download the appropriate install file from the download page.

    Mac OS X
    Download the Sunbird .dmg file. Double click the Sunbird Disk Image to open it in Finder. Then drag the Sunbird icon into the 'Applications' directory.

    Linux
    Download the Sunbird .tar.gz file. Move it to the directory where you want Sunbird installed. Then extract the tarball. For example:
    tar -xjvf sunbird-0.5.en-US.linux-i686.tar.gz
    This will create a subdirectory called 'Sunbird'. To run Sunbird, run the executable file called 'Sunbird' in the Sunbird directory.

    Windows
    Download the self-extracting .exe file. Double-click on the file to install.


  4. Install the Google Calendar Sunbird Extension

    This extension is one of the many add-ons you can install in your calendar to extend its functionality. You can find the Google Calendar extension in the Sunbird Add-On area.

    Click on the Install Now button to get to the license and download page. Do not click on the 'Accept and Install' button. This will try to install it in Firefox (what a horrible usability error, eh?)

    Instead, right-click on the button and save the .xpi file to a directory you'll remember and be able to find later.

    Once the file has downloaded, open up Sunbird. Click 'Tools' and then 'Add-ons'. This opens a dialog box. Click 'Install' in the lower left-hand corner, and then find the .xpi file in the directory where you saved it. Let it load, then click 'Install Now' in the installation dialog. Finally, restart Sunbird.

  5. Create the Google Calendar in Sunbird

    To associate Sunbird with your Google calendar, you will create a new calendar in Sunbird and then associate it with the calendar you created in Google.


    1. In Sunbird, click on 'File' and then 'New Calendar...'. Select 'On the Network' and click 'Next'.

    2. In the dialog that appears, select 'Google calendar'. In the 'Location' box, enter your calendar address you saved from the XML button when you created your Google calendar. Click 'next'.

    3. Give your calendar a name and select any colour. Click 'next.

    4. It will then prompt you for a login. Enter your Google userid and password. You can also check the 'remember these values' box. Click OK, and then click finish


    5. Your Sunbird calendar is now associated with your Google calendar. That means that when you update your calendar in Sunbird, it will automatically update in Google. And when you update it in Google, it will automatically update in Sunbird.

      You can associate your Sunbird calendar with any number of Google calendars in this way.

    6. Install the Lightning Thunderbird Extension

      Thunderbird, as mentioned above, is the Mozilla email client. What Lightning does is synch Thunderbird and Sunbird. It's a lot like embedding your Sunbird calendar right inside Thunderbird, the way Outlook does it.

      These instructions assume that you have Thunderbird installed and are using it for your email already. Note that Lightning requires Thunderbird version 1.5 or 2.0. You may need to get Thunderbird and install it.


    Once Thunderbird is installed you will want to install an Extension called Lightning. You can't actually find it from the Thunderbird page on the Mozilla website; you have to go directly to it.

    When you go to the Lightning download page, don't get drawn into all the jargon-filled geeky instructions. Simply go directly to the appropriate download page (the links at the upper right):

    As before, do not click on the 'Install Now' button. Instead, right-click on the button and save the .xpi file into a directory you'll remember.

    In Thunderbird, click on 'Tools' and then 'Add-ons'. Then click on the 'Install' button in the lower left-hand corner and select the Lightning .xpi file you just saved. Allow Thunderbird to install the file and restart.

  6. Install the Lightning Google Calendar Extension

    When Thunderbird restarts you'll notice a calendar and some tabs occupying the bottom of the left-hand column. There will also be a new 'calendar' option in the toolbar. But it's not set yet; you must still load the Google extension for Lightning.

    In Thunderbird, just as before, click on 'Tools' and then 'Add-ons'. Then click on the 'Install' button in the lower left-hand corner. This time, select the Google Calendar .xpi file - yes, the very same one you downloaded for Sunbird. The same .xpi works for both Sunbird and Lightning. Allow Thunderbird to install the file and restart.

  7. Create the Google Calendar in Thunderbird and Lightning

    To associate Thunderbird and Lightning with your Google calendar, you will create a new calendar in Thunderbird and then associate it with the calendar you created in Google.


    1. In Thunderbird, click on 'Calendars' in the lower left-hand box, and then 'New...'. Select 'On the Network' and click 'Next'.

    2. In the dialog that appears, select 'Google calendar'. In the 'Location' box, enter your calendar address you saved from the XML button when you created your Google calendar. Click 'next'.

    3. Give your calendar a name and select any colour. Click 'next.

    4. It will then prompt you for a login. Enter your Google userid and password. You can also check the 'remember these values' box. Click OK, and then click finish


    Your Thunderbird and Lightning calendar is now associated with your Google calendar. You can see it in the box to the lower left. You can uncheck (and delete, if you want) the default 'Home' calendar, and check the newly created google calendar to view it.


  8. Embed Google Calendar on Web Pages

    One thing I wanted to do with my calendar system was to publish it on a web page. That's not possible directly with Sunbird (nor can I upload the data to my website) so I am relying on Google for this.

    There's no easy way to find it from Google Calendar itself, but you can access information on how to embed Google calendar on web pages from within the Google Calendar help system. (If you must find it within the Calendar, click 'Manage Calendas', click on your calendar from the list, then click on the 'HTML' box (right beside the 'XML' box you have been using. Under the URL in the box that pops up there is a link to the configuration tool.

    I created two HTML embeds, one a small one for my home page (see the lower right), and another dedicated calendar page for the full version (I had to create a link to a full version because while there is a way to subscribe to my calendar, there's no link to simply view the calendar).


All of this, um, mostly works. Some things are still buggy (let's remember that this is all still beta software). On the Mac, it seems to have blanked out the little download screens, so you can't see the progress of software downloads. The notifications worked fine in the Mac, but didn't seem to add to the calendar from the Window. I would really have liked to be able to drag emails into the calendar, but that's not available. Also, lightning changed the spam icon in Windows, which is really pointless and annoying.

But what's really really annoying is having to go to all of this trouble in the first place. Why can't Sunbird simply upload a file to an FTP site. Yes, there is a site out there that says you can. But it simply doesn't work.

Similarly, why can't there be at least one Webdav site out there for people to use (assuming we must use Webdav, which was, IMHO, a really misguided decision). Well there are commercial services that might work. There is a free service, iCal Exchange. I spent a lot of time on this, but in the end, it simply didn't work.

Right now, if you want to incorporate your calendar data with external applications, your best (and almost only) bet is to do it through Google Calendar. So long as Sunbird's publishing features remain so impaired, this won't change.

So you might be wondering - why go to all this trouble?

Quite simply - I can now access and update my Calendar on mac, Linux and Windows machines, either using the Sunbird application, through Thunderbird, or online through the browser. I could also do it using my mobile phone, if I had one (NRC won't pay for a mobile phone to test stuff like this with). You simply can't do that with any other calendar program (and especially not with Outlook Exchange, which locks you into the Outlook client and which doesn't work on Linux at all (without CrossOver).

And what this does is to set myself up for the possibility of better calendar syndication and integration in the future. The Google calendar site enables exports in XML (actually a version of RSS) and iCal, which means I can syndicate. Sunbird can export files in iCal (it can't send them anywhere useful yet, but I figure that's a matter of time).

And it let's me syndicate calendars into my online calendar, either directly (via Google calendar) or indirectly (via Sunbird). This sort of functionality will be needed to create any sort of calendaring function for a future Personal Learning Environment, so becoming familiar with the concept and the potential is a good idea.