Although my primary computer has a perfectly acceptable address book I regularly want this information on one of my other devices (tablet, phone other computer, etc). My case might be a bit extreme in terms of the number of devices I use, but the basic problem applies more widely.

I've used some different synchronisation methods in the past but settled on a web based service I can host on my own website.

Background

I mostly use the address book built into the Thunderbird email client on my Windows PC. For my needs, this is a good solution; the available fields let me record what I need and want and the display and editing interface does the job. I have no desire to change, I just want to get at the information from other places, such as:

  • Android tablet, which I'm more likely to carry around
  • Linux PC, as part of my on-going (but probably futile) attempt to escape the clutches of Microsoft
  • Phone (I still like my old Nokia not-smart phone)
  • Anywhere else (internet access)

As well as these accessibility requirements, there are some functional preferences:

  • Open, standards-based solutions over proprietary ones. This isn't just about ideology; my highly heterogeneous environment is unlikely to be supported by a proprietary product.
  • Fully operational off-line. I don't want to need an internet connection just to look up a phone number (especially if it's the phone number of my ISP to complain that my internet connection isn't working...)
  • Secure - although the contents of my address book aren't especially sensitive, I'd like to keep it under my control as much as possible. There are legal privacy requirements here as well as just plain courtesy - I wouldn't want my details made public, so I'll try hard to keep other people's data safe.

Options

As my collection of computing devices and software options have evolved, different strategies have been appropriate.

Custom Sync software

Way back when a PocketPC counted as current technology, the only realistic option to synchronise contacts was the ActiveSync program included with the device.

This worked well, except it only looked at MS Outlook contacts, not Thunderbird, so I still needed to sync from Thunderbird to Outlook, leading to...

Import/Export

Outlook does not play well with others (even more so at that time), so my sync process was a manual export from Thunderbird and import back into Outlook. This was messy. In theory updates could flow both ways, but in practice one-way transfer was more predictable.

But it worked, so that was Ok.

As time move on, software versions changed and so did the data formats, but some other options appeared.

Third party services

Enter the free webmail services and their associated contact lists.

The services offered by Google, Microsoft, Evernote, Dropbox, Ubuntu One and other providers, some free, some paid, support different types of contact lists.

Because of their popularity, there are various tools to help synchronise these contacts with your desktop email/address book program. I've used one Thunderbird add-on to sync with Google Contacts, which worked fine for me, but I wasn't happy sharing all these details with Google.

SyncML

An open standard - hurrah! In theory...

In theory, any pair of compliant client and server applications should happily synchronise contacts, calendar and even files.

In practice it's a little more problematic. The solution I could make work consistently used the Funambol community edition server [4] set up on one computer in my network ans use the Funambol apps and add-ins to connect my Thunderbird and Android address books. My Nokia phone even alleges it will talk to a SyncML server, but not for me (it probably needs an over-the-air data connection, which was all a bit hard).

This worked well except:

  • It requires that the Funambol server be running to sync detail (I had the server on a secondary machine which isn't always on - not a big deal).
  • The Outlook connector didn't work with Outlook 2000 (which I was using at that time)

But this was Ok. Until the Thunderbird plugin wasn't compatible with a new version of Thunderbird.

Curses.

Time to look at other solutions.

LDAP server

Another open standard with a free server available [5].

I've done quite a bit of LDAP work in the past, so this was fairly easy to set up and adapt to the specific fields used by the Thunderbird address book.

This would be a good solution for a centralised address book requirement (eg in a medium/large corporate environment), but for small-scale use it is too unwieldy. For me, the main issue is that few, if any, of my client devices allow editing of the address details, meaning that I would need a separate contact maintenance program to add or edit any records.

Foiled again.

CardDAV server - ownCloud

Another standard, based on WebDAV [6].Standards are great

The important thing here was finding some server software that provided the synchronisation I wanted. ownCloud [1] does the job - it's a private cloud service supporting files, contacts and calendars out of the box, plus some other things if you want.

I set up an internal version of this server and had accounts ready to test in about 15 minutes (the installation process is exceptionally good). There are connectors available for Thunderbird [7], Android [8][9] (depending on which version of Android you're using) and Outlook [10] (these are just some of the possible connectors, I've successfully used the Android ones but haven't tried the any Outlook ones). Apple devices apparently support CardDAV by default, which is nice, but I can't prove it.

My test server worked fine, exchanging updates between devices as expected (with some understandable limitations).

I decided I wanted to be able to access this data from any internet connected device (partly because of some other features ownCloud supports), so I set up the server on my web host. That's when things went a little bad - the setup was still easy and the Thunderbird connector happily synchronised data, but the android clients regularly timed out waiting for connection. Without going into the messy details, this sort of performance prompted me to change web hosts.

On my new host, ownCloud is supported by the automated application installer and it "just works". For extra security I've configured ownCloud to require SSL connection, so no login details of contact data is transmitted in clear text.

Limitations

Any synchronisation solution involving different devices and software interfaces faces some challenges.

  • Different client interfaces support different fields.
  • Not every client allows update.
  • Conflicting updates will probably break something.

But this ownCloud solution meets my requirements.

References

[1] ownCloud project

[2] gContactsSync - Synchronise Thunderbird address book with Google contacts

[3] SyncML wikipedia article

[4] Funambol/SyncML software - open source edition

[5] OpenLDAP project

[6] CardDAV wikipedia article

[7] Thunderbird CardDAV connector from the sogo project

[8] Davdroid android app

[9] aCAL android app

[10] iCal for Outlook connector

I don't endorse or recommend any particular software package or solution, this article describes what worked for me, but you should make your own assessments before installing or using any of these programs.