Synchronize GNOME and all its apps with a CalDAV server

CalDAV is an open protocol for synchronizing calendars and task applications on multiple devices and potentially for multiple users with a central server. It enables your mobile and laptop to share the same calendar and list of reminders. Consumers are most familiar with this as the popular web-calendar products from Apple, Google, and Yahoo! — all of which support CalDAV and CardDAV.

GNOME offers a few different options for scheduling |and task management such as GNOME Calendar, GNOME To Do, California, and the Evolution suite. Additionally, there’s GNOME Contacts for address book management.

All of these programs support CalDAV and CardDAV natively because they use Evolution Data Server as their storage backend for calendars, task lists, and contacts. When you connect one of the apps to any standard server, all the other apps will have access to the same data.

This is completely obvious to the developers of all of these GNOME apps, so no effort has been made to expose this functionality as a feature nor document its existence for end-users. (This also applies to Elementary OS’ Maya calendar program for their Pantheon desktop environment.)

One of the immediate benefits to synchronizing your calendars with GNOME is getting integrated desktop notification banners and populating your agenda in the message tray. This is useful even if you prefer using a web-based front-end like iCloud or Google Calendar rather than any of the calendaring programs available in GNOME. Your synchronized data will surface in many other apps and contexts throughout GNOME Shell.

You can add calendars through the Evolution groupware suite itself. The user interface isn’t great, and kind of hard to discover. You’d have to repeat the setup process for each calendar offered by a server offering multiple calendars even though the setup process lets you pick from a list of all the calendars it detects. See the documentation for setting up calendars and task lists in Evolution. There isn’t any documentation for setting up address book sync using CardDAV, but the process is almost exactly the same as for calendars and you’ll see the option for address book configuration while setting up your calendars.

Adding CalDAV sources to GNOME Calendar

Discovering and selecting calendars over CalDAV in GNOME Calendar 3.18.

As I mentioned before, once you setup your calendars in one app it will appear in all the others. So, you don’t need to use Evolution’s interface at all. GNOME Calendar has the best user experience for adding a CalDAV server out of all the calendaring apps for GNOME. The user interface can be a bit hard to find even when you’re actively looking for it.

Once you find it, it lets you set up multiple calendars and even tasks lists (even though GNOME Calendar itself doesn’t support them) and doesn’t bother you with technical details beyond asking for the URL to the calendar server. Even that requirements could be removed by adding support for auto-detecting CalDAV server info from an email address and SRV records (RFC-6764.)

The advantages of GNOME Calendar’s simpler interface are moot, as even though it successfully connects to and verifies CalDAV services when you set up the account; it will instead store a broken variant of the configuration in the backend.

California, the second calendar app for GNOME, has a minimal interface for configuring one calendar at a time, but doesn’t verify the calendar address people input which easily results in broken calendars being added with no feedback.

As of GNOME 3.18, you’re better off configuring calendars in Evolution, though from the look of things GNOME Calendar will soon be up to the job.

If you’re thinking by now that it’s a little strange to have all these different ways to configure the same thing, you’re absolutely right. GNOME Online Accounts (GOA) is supposed to be the one user interface where you setup all your online accounts.

Unfortunately, it doesn’t expose CalDAV and CardDAV as options but only lets you choose from the two branded options Google and OwnCloud – both of which use CalDAV/CardDAV. I’ve submitted a patch that exposes CalDAV and CardDAV as options in GNOME Online Accounts in the Other category; along with IMAP and SMTP for email configurations.

GNOME Calendar; empty March 2016

An empty calendar is an unused calendar; here showing GNOME Calendar 3.18.

I find it especially interesting that all these programs support integration with the GNOME notification system and synchronizing with servers from popular providers like Apple iCloud, Google Calendar, Yahoo! Calendar, Yandex, and others. Yet, they don’t expose this functionality or hardly even mention it in the documentation for the apps.

Synchronization with existing calendars stored on remote servers is key to getting people to adopt GNOME as their preferred desktop. Without their calendar data, these apps can never hope to be people’s preferred endpoint for scheduling meetings or managing tasks. They’d be nothing more than isolated data islands in an otherwise connected world.

I for one hope that all of these programs will improve their user experience for configuring and discovering CalDAV calendars in the future. Server configuration auto-discovery through using the mechanisms described in RFC-6764 “Locating Services for CalDAV” is widely supported by CalDAV service providers. It lets users enter an email address and have their calendars discovered through those services. Combined with a user interface for Calendar Collection selection (RFC 4791) it would go a long way towards that goal.