DAViCal is an open-source CalDAV server. It allows users to store their calendar data on a server, much like how IMAP allows users to store email on a server. It can also be used in a corporate setting to allow users to see each others' calendars, or only free/busy times, and to schedule meetings and other events. The CalDAV protocol is published as RFC 4791.
The server acts as a repository for peoples' calendar events. It stores the events in a PostgreSQL database. I've been told that support is in the works for using MySQL or SQLite as the database back-end, however this isn't an issue for me because I prefer PostgreSQL anyway.
Each user who stores events in the server has a userid and password. They each start with one calendar called "home", and can create multiple calendars on the server as needed. For example, I use my "home" calendar for personal items, and I also have calendars called "business", "radio", and "LEAP".
The DAViCal server itself is a set of PHP 5 scripts, written to work under Apache. It has a basic web interface, which is used to maintain users (and can be used to import data into the server, although this is easier to do with a client.) Everything else - creating and removing calendars, working with events, and so forth - is done using a CalDAV client.
When I started this page, the server setup directions were here. However, by the time I was finished with those directions, I realized that there was too much information for just one page, so I broke the server setup directions off into a separate page.
This link goes to the server setup directions.
In order to view, add, change, or remove events, you need a client which supports the CalDAV protocol. This page on the DAViCal Wiki has a list of clients which are known to work with DAViCal, and this page on DAViCal's sourceforge site has directions for setting several clients.
Below is a list of the clients I have personally used, and the differences I found between them.
Apple iCal version 3.0.1 (included with OS X 10.5 "Leopard") and higher. This is the calendaring program I've been using for a few years, and was the first client I tried after setting up a userid for myself in the DAViCal server.
The setup directions on the DAViCal Wiki worked with no problems - the URL I entered to link to the server ended with my userid, rather than with the name of any one specific folder. I was also able to easily create new calendars on the server, without having to type in any URLs at all. However, the calendars I created all had server-side names which were GUIDs, big long ugly strings of hex digits and dashes which, while easy for a computer to work with, are a pain to have to deal with as a human.
One other thing I noticed, which could be a nice feature if you have a group of people sharing one calendar account - when I created a new calendar using Sunbird (see below) iCal automatically showed the new calendar after a few minutes.
Mozilla Lightning and Sunbird. Lightning is a Thunderbird plug-in which adds calendaring functions, and Sunbird is a stand-alone program based on the same code. Both programs are open-source.
The setup directions on the DAViCal Wiki worked without any problem, however it only showed the one folder to which I had connected. In order to use multiple calendars, I had to configure each calendar separately - and in order to use the new calendar I had created under iCal, I needed to use the DAViCal web interface to see the GUID of the calendar- and since I had created three of them under iCal, I had to connect to each one, look at what was in it, and then rename it to something more useful (which only changed the label within Sunbird- it didn't rename the calendar on the server.)
Personally, I feel this is a problem with iCal rather than Sunbird. The calendar names on the server should be something easy for the user to remember, especially if they're going to use a calendar program (like Sunbird) which requires separate linkages to each calendar, instead of enumerating the calendars from a link to the userid as iCal does.
So I created a calendar under Sunbird, which basically means I created a link to a calendar which was under my userid, but which didn't exist yet. There is an issue with Sunbird where sometimes it doesn't handle newly created calendars correctly until after you restart the program, so after I created the calendar, I added one dummy event, quit the program, and ran it again. Once I did that, it worked perfectly, AND the name of the calendar on the server was exactly what I typed in as the calendar name, so I was easily able to find it later.
When I saw that the calendar names were easier to deal with (i.e. no GUID numbers) I created new calendars (under Sunbird) and moved the items from the old calendars into the new ones, using the "Export" function to write the entire contents of the old calendar to a file on the local system, then "Import" to read that file into the new calendar. After verifying that all of the events had been imported correctly, I deleted the old calendars (the ones created under iCal, with the GUID names.)
Evolution is an open-source email and calendar program, written primarily for Linux (and included with most of the common Linux distributions) but also available for any other platform which can run the GNOME desktop.
Note that if you prefer some other desktop environment, such as KDE or IceWM, you can run Evolution without having to use GNOME, but you do have to install some of the GNOME libraries. If your distribution's package-management system (i.e. apt, yum, etc.) has an "evolution" package, it should automatically install the packages with these other libraries when you install evolution.
My desktop and laptop systems are both Macs, however I do have a Linux machine sitting next to the desk, so I was able to try Evolution as well. In terms of setting things up, it's similar to Sunbird in that you have to connect to each calendar individually. It also seemed to have some issues with "hanging", where the program would just stop responding for up to two minutes. I'm not a regular Evolution user (I haven't tried to use it in several years) so I don't know if the hangs were related to DAViCal, or if they were normal for Evolution. After stopping and restarting the program a few times, it did eventually "settle down" and work normally, so maybe it was just building a local cache of the events in the background.
My personal preference at this point is still iCal, mostly because I can synchronize my Blackberry against it, and no other Blackberry sync solution exists which ties into Sunbird yet.