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 | |
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.
I highly recommend ownCloud. At the end of 2014, I switched from SOGo to ownCloud, and have not looked back. ownCloud has a better web UI, has a much stronger and vibrant community, is alive and growing, is much easier to host (e.g. repos for popular GNU/Linux distributions, and GLAMP stack), and is useful for more than just CalDAV (I’m already using it for file syncronization and CardDAV as well).
Desktop Client: Lightning
Since I’m a Thunderbird/IceDove 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: Use Davdroid. It syncs CalDAV and CardDAV to native AOSP storage.
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 aCalDavdroid 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.
20 thoughts on “Degooglifying (Part IV): Calendar”
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!
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…
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 ^_^).
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
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.
I wasn’t aware of it! Thanks for bringing Baikal to my attention, seems like a great option. Any other good FLOSS solutions I missed?
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.
I’m glad i found your post, b/c i also want to degooglify.
one question: does the SOGo cloud (or perhaps its’ called caldav server?) offer encryption of calendar data? could you please clarify some privacy options? I too use Thunderbird LIghtning (rock solid stable) and would like to sync it 2 ways with my android phone.
Desperate to learn this info!
thanks.
Sidenote: I just switched from SOGo to ownCloud. I was already running ownCloud for other things, and I just found it a lot easier to administer.
Neither encrypts calendar data on the client or server, but I host these services with SSL, so my data is always encrypted in transit between client and server.
I use ownCloud for hosting the calendar, and I also keep secured with an SSL cert. That should be enough encryption for most folks, and I don’t know of a server/service that goes any further than that.
I know Blaise and I have talked about this elsewhere, but it is worth noting here that DAVdroid is a pretty awesome Android client. I sync both my calendar and my contacts to it, using the app in the F-Droid repo, and I just use the default calendar and contacts app in Android.
For desktop syncing, I actually use the ownCloud integration in GNOME, but I realize that maybe not everyone will have access to that in their OS of choice. But Thunderbird is still a solid choice; I haven’t heard anything different, and this isn’t cutting edge tech.
Returning to the questions about privacy, you could run ownCloud from your home if you have a static IP or one of those dynamic DNS services. I run my instance out of Linode, and another out of Digital Ocean, and I am okay with that. It is possible that they could be compromised, but if I cared at that level, I would run the server that I physically controlled.
Blaise, where do you run your instance?
I’m running a lot of services on my living room computer at home, including SOGo, ownCloud, Snowy, DokuWiki, Mediagoblin, Tiny Tiny RSS… maybe another. I’ve got a wildcard SSL certificate for *.haise.ca, which is what I use for all those family services.
But I also have servers at iWeb, Linode, Digital Ocean. blaise.ca is on an iWeb server, as well as all my email and DNS services.
I guess stuff that’s more for family/personal use, I host at home, whereas stuff that’s more for public consumption, I host on a server with a network connection that can handle more traffic.
Excellent. Thank you for your replies.
BTW, did you know Synaptic removed Owncloud from ubuntu repositories:
“The ownCloud package has been removed from Ubuntu due to security issues that
can not easily be updated.”
http://www.webupd8.org/2014/10/owncloud-ubuntu-package-affected-by.html
Generally you don’t want application layer software, things like ownCloud, WordPress or MediaWiki, installed from the OS repos. The development cycles are faster than other kinds of software, and with it being the public-facing service on a website, it is going to have constant security updates.
Software lower on the stack, like the web server (Apache, nginx) or database (MariaDB, Postgres), are generally more stable, and I use the packaged versions except in particular situations (and those are outliers, and complicated, and 99.9% of the time I just use the packages from the OS).
ownCloud is fairly easy to install and keep updated without a package manager. And it is getting better with each release (which is version 8, as of this writing).
Yes, what maiki said — better to install ownCloud separately. ownCloud actually provides its own repositories for Ubuntu and other popular distros.
(It was a pain how they removed it from the Ubuntu repos, but better to install it via one of the officially supported methods anyways.)
sorry…that’s for an old ubuntu only version of Owncloud. !
I went through the same process trying to de-Google myself. I settled on fruux.com They are out of Germany and have both free and paid accounts. The difference is the number of devices you can access your calendar on or people you can share your calendar with.
The free account is limited to 2 devices. I access the calendar and tasks via Rainlendar2 on my Linux computer and via the calendar and reminders apps on my iPhone.
Thanks for the tip! Fruux.com looks interesting, but while they seem to contribute to many free software projects, fruux.com isn’t a libre network service itself, so it seem it’d fall into the same category of proprietary services as Google’s (albeit a much smaller company and maybe a company you might trust more!). I’m still focused specifically on libre services, not moving away from Google to another proprietary service. You should check out ownCloud if you haven’t already!