Degooglifying (Part IV): Calendar

This post is part of a series in which I am detailing my move away from centralized, proprietary network services. Previous posts in this series: email, feed reader, search.

Finding a replacement for Google Calendar has been one of the most difficult steps so far in my degooglification process, but in the end I’ve found a bunch of great, libre alternatives.

Beyond the basic criteria for free network services, I was looking for:

  • desktop, web and mobile clients
  • offline access, especially for mobile
  • multiple calendars
  • access controls for sharing calendars
  • ability to subscribe and share calendars with other servers
  • applicable for business and personal use

First Attempt: SyncML using SyncEvolution and Funambol

I started with SyncML, an open standard for syncing calendar and contact data. SyncEvolution is a great SyncML client, with both GUI and command line tools available for GNOME and Maemo GNU/Linux, and Funambol is an AGPL SyncML server, with an Android client.

I setup Funambol and migrated from Google Calendar in July 2011, using SyncEvolution on my N900 and my laptop, but there were a bunch of problems. It was unstable around the edges, not handling deletes very well, and sometimes choking and failing with certain characters ( ” maybe?) in event titles. When I tried to switch my parents over in Android, it was a nightmare trying to figure out where the sync was failing, and they eventually moved to Google Calendar instead. SyncEvolution only syncs with Evolution on the desktop; there’s no mature SyncML solution for Lightning. The Funambol free software edition felt like a bit of an afterthought as well, with poor or outdated documentation, and a crippled, totally useless “demo” web UI. There was no calendar sharing or access controls either. Plus, Funambol is a pretty heavy application, targeted at mobile carriers, not someone who wants to run it from their living room.

SyncML with Funambol and SyncEvolution allowed me to leave Google Calendar behind, but I ended up living off my mobile calendar, using Funambol essentially as a backup service. I had no web client, no shared calendars, and eventually stopped syncing to Evolution on my laptop. Part of the problem was Funambol, but part of the problem was also SyncML, which seems to be a clunky standard, designed for an older paradigm of syncing with offline mobile clients.

I quickly realized that CalDAV was the better open standard.

The Solution: CalDAV

CalDAV is an extension of WebDAV, an internet standard for remote access to calendar data. It’s a more modern standard that SyncML — though SyncML does have better support on older mobile devices. (There’s also CardDAV for contacts, but I’ll leave that for a future post.)

Servers: SOGo, ownCloud or Radicale

However, there are a ton of CalDAV servers.

Here are my favourites so far:

Application Pros Cons
SOGo
[demo]
Works with anything via connectors; well-integrated with Thunderbird/Lightning, and web UI modelled after Lightning; Ubuntu/Debian repos UI isn’t super pretty; comes with a webmail client I don’t want; heavy, took some effort to install (e.g. made a custom MySQL user auth table, in the absence of an LDAP server)
ownCloud
[demo]
Very alive; support for contacts, photos, music, etc.; Ubuntu/Debian repos Newer (immature when I first tried in 2011); seemed more of a personal than business tool, but that may have changed.
Radicale Simple, elegant, light-weight For sysadmins: no UI

I tried a few others, but I wouldn’t recommend them:

  • Funambol CalDAV connector: In theory, best of both worlds with SyncML and CalDAV support, but I couldn’t figure out if there was an updated stable version, how to get it working with Funambol, etc., and this would still carry the Funambol issues and lack a web client or CardDAV support
  • DAViCal: seemed robust, but also onerous to configure and administer, and the web UI is only for administration (no web calendar client). This could work, but it just felt a bit onerous to use.
  • Update: lnxwalt mentions PHP Web Calendar, which I’d missed. I tried the online demo, but it looks/feels pretty ~2005: awkward and not fully-featured UI, focus on old standares like iCal (rather than true CalDAV?), with a CVS wishlist that includes SyncML support and a Java servlet, and import/export from Palm as a key feature, etc.

Others I didn’t bother to try:

  • Zimbra: Seemed like heavy-duty Groupware with a bunch of things I didn’t need or want — though could make sense if that’s what you’re looking for.
  • Horde (Kronolith): I did try Horde, but using the old interface a few years back. That UI felt 10+ years old, but it’s since undergone a complete overhaul and I haven’t looked at it since. Also, a groupware suite, which may be a plus or a minus. However, I don’t think it uses real CalDAV
  • Bedework: Java, seems heavy, without any obvious benefits or easy packaging
  • Apple Calendar and Contacts Server: while Apache licensed, it really doesn’t seem to be designed to enable other people to run the software — I didn’t get very far looking into this
  • Update: Jean Baptiste Favre has a great tutorial on implementing SabreDAV, a PHP library which implements WebDAV and its CalDAV and CardDAV extensions, if you want to build your own solution.

I’m using SOGo. Though, that’s partially because it was the most comprehensive solution that I had working at the time when my wife went back to work after maternity leave and we needed sharable calendars again to coordinate scheduling for childcare. But SOGo also has some nice, more advanced features, like the ability to subscribe to remote CalDAV feeds on other servers through the web UI.

I’m pretty happy with SOGo, though I’ll certainly be revisiting ownCloud and Radicale at some point. When I first tried ownCloud, it was immature, but it’s since grown a lot. And when I first tried Radicale, it was using a “strange” ACL model, but that’s been overhauled in 0.8. DAViCal was working, though it wasn’t a pleasure to configure, and I’m sure there are a few other workable servers I passed over.

Desktop Client: Lightning

Since I’m a Thunderbird user, Lightning is the obvious choice for a desktop client. We also use Thunderbird at the office and in my family. Lightning also supports Google Calendar, so just like with degooglifying email, you can switch your frontend and backend in separate steps.

The Evolution calendar is pretty awkward. I tried it when I was using SyncML, but it didn’t last long. There are other options too.

Web Client: SOGo, ownCloud or CalDavZap

I’d prefer a server with a web client, like SOGo or ownCloud, but for a standalone CalDAV web client (e.g. to pair with Radicale or DAViCal), CalDavZap [demo] seems pretty cool.

Mobile Client: SyncEvolution or aCal

Maemo: The reason I spent so much time on SyncML was that there was no CalDAV client for Maemo, but now SyncEvolution supports CalDAV/CardDAV sync!

Android: aCal is an Android CalDAV client, and a replacement for the proprietary Google calendar application. It works really well, but the UI feels really awkward and non-native. [Update: There’s also CalDAV-Sync, which I’d skipped over because it’s proprietary, but maiki pointed out that the developer at least intends to open source it eventually. I’m not sure if the Android Calendar is free software or one of the proprietary “Google experience” apps?]

Both sync to local storage for offline support.

Conclusion

It took me a long time to figure this out, especially since I was focused on SyncML at first, but I’ve finally fully replaced Google Calendar with CalDAV solutions. SOGo, ownCloud and Radicale are all great CalDAV servers. SOGo and ownCloud have built-in web clients, but there’s also CalDavZap as a standalone web client. Lightning is the obvious cross-platform desktop CalDAV client of choice, and SyncEvolution and aCal provide mobile clients for Maemo and Android.

The good news is there are plenty of options. As a bonus, most of these come with CardDAV support (which will be the focus of a future post), and ownCloud handles photos, music, and other files as well, so you may get more than just a calendar. Or, if it’s just a calendar you want, light-weight solutions like Radicale and CalDavZap give you just that.

I’m just thrilled to have finally figured this out.

Creative Commons Attribution-ShareAlike 4.0 International Permalink | RSS (comments) | Post a comment

9 Responses to “Degooglifying (Part IV): Calendar”

  1. maiki says:

    You and I had the same goal, which is little surprise considering how near out children were born to each other.

    I end up using ownCloud (I write about it a lot, actually: http://interi.org/tags/owncloud/), and the SOGo Connector in Thunderbird for most of my calendaring needs. For Android I buckled and use CalDAV-Sync. It is promised to be open source (http://dmfs.org/wiki/index.php?title=Open_source_status), but that is weak. That aside, it gets the job done, and I can add an event in T-bird, ownCloud or CalDAV-Sync and it gets to the other instances of my calendar.

    Thanks for doing the follow-up, and for pinging me. I hope we get better stacks in place, it would be great if there was a default calendar app in FirefoxOS that supported CalDAV! ^_^

    • I checked out your posts on ownCloud, which inspired to me to update the test instance I’d installed a few years back, now running 5.0. I don’t really see a use for it in general myself, and SOGo’s web UI has a few additional features (e.g. you can subscribe to remote calendars in SOGo, didn’t see a way to do that in ownCloud), but my dad is a Dropbox user and I’ve set him up with an ownCloud account… if he starts using it for other things, it may be a logical place for him to have his calendar.

      Re: CalDAV-Sync, that was on my radar, but I didn’t want to recommend any proprietary solutions — great to know there’s at least an intention to open source. My wife’s Android device doesn’t even have the Play store active, she’s just using F-Droid, and I’d hope to do the same. But, I think for my parents, they might end up using CalDAV-Sync, regardless of it’s open source status, because I don’t think they’d be comfortable with aCal. Still, it’d allow them to migrate from Google Calendar to ownCloud or SOGo — one step at a time…

      Thanks for letting me know about your setup!

      • maiki says:

        Love this back and forth, I feel like you are the friend I need to hang around me so I do the right thing! ^_^

        Wanted you to know that I just decided to degooglify my tablet, and as I was loading up from the F-droid repo I noticed an app called CalDAV Sync Adapter. It works! I loaded up my calendar in ownCloud into the default calendar app (which I presume is OSS, since it is included as part of Cyanogenmod, sans the Google Apps.

        And you mentioned that ownCloud can’t do remote calendars, which I believe in the case. But you can share between users on a given instance. Probably not useful, but for families it can work. ^_^

        • haha yes, very helpful to have someone else working at the same goals!

          Re: CalDAV Sync Adapter, I saw that in the repos, but I passed it over because of the beta status and “One way sync only for the moment” note in F-Droid. I’m assuming that means that any local changes won’t be synced back to the server? =\

          Re: Calendar app, I don’t see it listed in the Google experience apps, so it seems like it may well be part of AOSP.

          Re: ownCloud, I don’t see myself using it too much, but my parents are very interested (both on Android, using Dropbox or clumsily emailing files to self), so I may set up their calendars there if they start using it for other purposes too. The lack of a remote calendar subscribe isn’t a dealbreaker — they could still subscribe to other calendars in their CalDAV clients (e.g. through Lightning).

          Oh, which raises the question — multiple calendar sync for Android? One nice thing about aCal, when I set it up for my wife — it picked up *all* the calendars she was subscribed to on SOGo (5 or 6 — because we have separate calendars for each family member who regularly takes care of our son, plus her and my personal calendars, so far). Makes it really easy for her to see all the shared calendars, and her mobile is her primary computer. Have you looked into syncing multiple calendars via CalDAV-Sync or the CalDAV Sync Adapter?

          And, I was seriously looking at Cyanogenmod too, but decided to hold on my N900 for a bit longer. My wife switched to a Nexus 4 though — didn’t install Cyanogenmod, because I didn’t want to use her as a guinea pig too much, but most of the proprietary Google apps have been disabled so far, and she’s been doing fine without the Play store at all for a month or two now. I’m considering picking up an old used Android device, like a Galaxy SII or something, to experiment with Cyanogenmod and Replicant…

          • maiki says:

            Re: multiple calendars, they work by adding the calendar as an account on the phone. I only have one, so I am not sure if it can pull in all of them at once. I am betting it is the annoying process of adding each calendar manually. Probably not great for your setup.

            And for used devices, you might want to check out http://swappa.com/. That is the best place I’ve found for used Android devices, so far.

            Cyanogenmod is fairly easy these days, if you have the Android developer tools installed on a computer. That is by far the most difficult part (well, that and fearing you’ve bricked your device; it hasn’t happend to me yet, though, 4 devices in ^_^).

  2. Tom Pham says:

    I ended up using a app called CalendarSync for my appointments. Especially because it is capable of supporting various ways to sync contacts (so i have my own appointments on my own FTP server and in additin I sync the CalDAV appointments of my companies server with the same app, works nicely so far).

    You can get some background information here:
    http://ntbab.dyndns.org/apache2-default/seite/index.html

  3. I am researching to get rid of Google when synching between my PC and my Androphone, and I came accross your great article.

    You missed a few solutions but the most obvious one is
    Baikal (http://baikal-server.com) which is also an interesting solution.
    I am surprised you did not mention it.

    Still a great article.

  4. You get a full list in the article on my blog:
    http://computing.travellingfroggy.info/article226/calendar-and-contacts-servers
    (there’s not much on the English version … but you can get the software list from the French version … and the software link to English language web site).

    The other one worth noting is Fennel: it’s still young but promising (and interesting to get a server software in JavaScript).

    As I noticed you are looking for Android connectors, I have listed a few too !

    I ended up installing Baikal as it’s the easiest to install on a shared hosting environment.

    Cheers,
    L.

Leave a Reply