May 11th, 2006 by ravi
Using and synchronizing contacts

Most of you probably have a desktop computer, perhaps also a laptop, one or more hand-held device (Palm computer, iPod, etc), and a mobile/cell phone (and there is also the home phone, but I will ignore that here). The standard problem: keeping the information sync'ed up between all of them, without needing data re-entry.

What data?

At the least, contact/addressbook information, and calendar/task entries. Stuff that falls under the PIM (Personal Information Manager/Management) cloud.

How is it accessed?

You would think that in the Internet age you would store the information on a central server and access it using standard protocols supported by client applications. That, it turns out in my experience, is tougher than I would have thought.

The technology

If you live in a pure Microsoft world (Windows on your PC, laptop, handheld and mobile phone) you probably can stop reading, at this point, and add a comment exhorting me to come over to your side! Windows probably does a decent job of Sync'ing between your computer and your handheld or mobile phone. Throw in an exchange server and you probably get syncing across computers as well. Well, what about the rest of us?

The standard technologies (well, one of the standards: as the saying goes, the great thing about standards is that there are so many to choose from!) for contact and calendar information are LDAP directories and iCalendar based calendar subscriptions and import/export.

Surprisingly both LDAP and iCalendar are supported by today's addressbook, email and calendar applications, including: Mozilla Thunderbird, Mozilla Sunbird, Apple Addressbook (and hence Mail), Microsoft Outlook (from what I know), the many GNU/Linux/GNOME/KDE applications (Kmail, Evolution, Kontact, etc).

Well, are we done, then?


Unfortunately there are many annoyances to deal with:

  • There aren't many free or commercial LDAP directory services available on the net. In fact, the only one I have found, which I highly recommend, is ScheduleWorld (which provides not just LDAP directories, but also standards based calendar service). This general lack of LDAP services pretty much nixes sharing your addressbook.
  • Mozilla Thunderbird (to my knowledge) does not support lookup across multiple LDAP addressbooks for address completion, making use of LDAP just another bit tougher.
  • Access to remote information is not a viable option today on iPods and various mobile phones. They do not support LDAP or iCalendar access to your information. The good news is that many of them provide two way synchronization (where applicable) using applications and drivers on your computer.
  • There are a large set of iCalendar based calendar services available (e.g: the aforementioned ScheduleWorld, Google Calendar) As always there is a catch… well two in this case:
    • Most calendaring services use a publish/subscribe model and not a synchronization model. In other words, you can publish your Apple iCal or Mozilla Sunbird calendar to the server, or subscribe to your server calendar on one of these applications, but you typically cannot update either willy-nilly and have them synchronize with each other.
    • Free/Busy information: in order to schedule events involving multiple individuals, their free/busy information needs to centrally stored, accessible to the others. In a web-only system, this is trivial. In our multi-tool scenario, free/busy information needs to be synchronized.

Is there hope?

There is hope for the future, but my investigation has found nothing with enough coverage to make it worthwhile. The exception, if any, is ScheduleWorld. As far as I know, these are your options:

  • Use a fixed write (write the information using only one interface), publish to server, and subscribe from many, model: either store your data in an application that supports pushing it to a server or store it on the server. Subscribe from all relevant clients.
  • Use a service like ScheduleWorld which gives you: web-based read/write access to both calendar and contacts, a Java based multi-platform client to accomplish the same, and open interfaces (LDAP, iCalendar) for your multiple client applications. Beware of Apple Addressbook weirdness: not only does it often not import LDIF entries (from LDAP directories), it also does not sync LDAP directory entries to the iPod).
  • Wait for better SyncML support.
  • Hack up your own or use open source scripts to import data into client applications from public services such as Google Calendar.
  • Use a service like Plaxo (which has come under much scrutiny and criticism, all of which you can read easily through a Google search on Plaxo) which synchronizes (only your contact list though) across multiple platforms (Apple Addressbook, Mozilla Thunderbird, Outlook) and provides a web interface.
Read the full post and comments »

Read Comments and Respond

7 Responses

  • Doyle Saylor says:

    Thanks for the thoughts, me and a friend are starting to think about doing a site.

    I was thinking the new Google Notebook for an online shared notes was mighty interesting. You?

  • Mark Stahl says:

    I have to put in a plug for my own company (and a product I worked on. :-)

    Google just released a new, open protocol to allow people to edit their google calendar through an XML based API. It’s not just for “publish-subscribe” (though you can do that, too, through iCal feeds.) There are also some open source toolkits to get you over the learning curve. Hack away.

    The GData Protocol specs and toolkits are here:

  • ravi says:


    wicked cool ;-). Thanks for the heads up — I am trying to learn CamelBones (a Perl ObjectiveC bridge). Once I am more comfortable with it, I could write up something that uses this API to two-way synchronize between Google Calendar and iCal.

    In the meantime, here is a horrible hack I use to make it possible (with care) to edit in two places: I publish a local iCal calendar to a public location (unfortunately Google does not support publishing yet. I use ScheduleWorld) which permits editing. I then subscribe to it under a different name in iCal. This way I can make entries in both iCal (the published local calendar) and the web interface, and also view all entries both on the web and in iCal (the second subscribed calendar).

  • ravi says:


    I heard about Google Notebook but haven’t read enough yet to comment. From the little I read it seems like exactly the functionality your friend and you are looking for…

  • ravi says:


    another very effective way to create shared documents is to use Wiki software. If you do not want to go through the trouble of setting one up, there are services that provide Wikis for you (try XWiki or any hosting provider, like BlueHost, which provides a Wiki installation). Wiki’s make it easier for multiple user’s to share a document and they provide “revision” control: a historical record of the document.

    When you are ready to create the site itself, there are a bunch of free CMS (content management system) applications that can help you (e.g: Drupal, XOOPS, PHPNuke, etc…). Ping me if you have questions or if you would like to try out something that I can setup temporarily for you on my hosting site.

  • Doyle Saylor says:

    Thanks Ravi,
    I am straining to get the site going. Wiki’s are nice, and I’ll come back and ask for your insights when I can get a group together to get the site up.

    There is a very interesting essay on scanning and libraries in the NY Times this last week also. I’ll quote it a little bit.

    From Scan this Book!
    “You might get an alert that your friend Carl has annotated a favorite book of yours. A moment later, his links are yours. In a curious way, the universal library becomes one very, very, very large single text: the world’s only book.”

    This seems to me a good paradigm of information production work to come. I find wiki’s relatively inert. I think there is a lot to do with thinking about the editing and reviewing process in terms of automating the work. This excites me that it is coming.

  • Mark Swanson says:

    Just came across this blog and thought I’d add that a new version is being prepared that should be out before June 13 (it’s actually running in production now under a separate URL). It supports two-way sync with Evolution, a new blackberry client will be available, SyncML1.2 support, and all outstanding sync-related bugs will be squashed.
    Please email if you have any feature requests or suggestions.

  • Pages