Skip to content

SyncML + Mac OS X

Funambol has made the initial snapshot of a Funambol Plugin for Mac OS X available. “Funambol Plugin” is Funambol speak for “a SyncML client”. Claimed features are contact and task synchronization with Funambol servers (emphasis mine). For anyone who can read between the lines this is a hint that standard formats like vCard/vCalendar/iCalendar are not yet supported properly, if at all.

SyncEvolution has supported address book synchronization on Mac OS X since version 0.7, so I was curious how Funambol solved some of the problems. Here’s a quick analysis of their initial code snapshot:

  • As suspected, tasks can only be synchronized in Funambol’s own SIF format. TaskSyncSource::getTaskVCal() only generates empty VTODOs.
  • Same for contacts: there is code which sends and receives vCard, but it is based on Apple’s own ABPersonCopyVCardRepresentation() and ABPersonCreateWithVCardRepresentation(). As I found when porting SyncEvolution, these functions are not particularly useful (read: unusable) when exchanging data with SyncML servers: they generate valid vCard 3.0, but use features like grouping and Apple extensions which are not understood by the servers.
  • The code needs refactoring or better, should make use of the new TrackingSyncSource: the code which does change tracking and iterating over items is duplicated in TaskSyncSource.cpp, AddressBookSyncSource.cpp, CalendarSyncSource.cpp.
  • According to a comment in OSXClient::createConfig(), only slow syncs are currently supported. Lack of two-way sync means that it is impossible to delete items on client or server and have that change synced to the other side. Updating items is likely to lead to duplicates. I wonder whether that comment really still applies?!

I’m not sure why Funambol keeps on investing work into supporting their proprietary SIF format (Stefano Fornari already said that they “want to get rid of the SIF format”). But it’s their time, so they get to choose what they spend it on.

However, they now ask the community to help out with the Mac OS X client. I don’t want to discourage anyone from doing that, but at least consider the alternative first:

  • SyncEvolution already has full support for vCard 2.1 as used by SyncML servers. Great care was taken to not drop properties needlessly; all remaining loss of information is due to irreconcilable differences in the data formats and documented in the Mac OS X section of the compatibility page.
  • Unit testing of individual sync sources (calendar, contacts, notes, tasks) as well as end-to-end tests with SyncML servers are available.
  • Adding new sync sources is easy. Basing them on TrackingSyncSource means that only iterating over items and item import/export has to be implemented.
  • There is no GUI yet, but all of the classes in SyncEvolution are meant to be usable as part of a GUI. One could start with the Funambol Mac OS X GUI and just have it call the SyncEvolution classes.
  • Funambol doesn’t mind if their clients happen to be compatible with other SyncML servers, but their own goal is only compatibility with the Funambol server. SyncEvolution is explicitly meant to work with as many different SyncML servers as possible, including the Funambol server.

I would be more than happy to assist anyone who wants to work with the SyncEvolution source code on Mac OS X, or any other platform for that matter. If the goals or the code of SyncEvolution are more like your cup of tea (or coffee), then don’t hesitate to contact me.

{ 5 } Comments

  1. Fabrizio Capobianco | July 8, 2008 at 12:34 am | Permalink

    Hi Patrick,
    just to clarify: this is not a Funambol product, but a community contribution… Everything you wrote might be right (I have no idea) but at least do not blame the company on it ;-) Blame the developer who did it in his spare time or, better, give him a hand…



  2. Patrick Ohly | July 8, 2008 at 8:56 am | Permalink

    Fabrizio, from the announcement it is impossible to tell whether the code was developed by Funambol or a community member. The original author isn’t named, the tool is called “Funambol Plugin”, it was announced by a Funambol employee. To me that doesn’t look like a community contribution, but of course, looks can be deceiving.

    I didn’t mean to blame anyone here, just figure out what the current state of the project is. That is important both for users, who might expect more from the Funambol Plugin for Mac OS X than it is currently capable of, and for developers, who need to know what gaps they can work on.

    I also think that the project needlessly duplicates effort already invested into SyncEvolution. Having n different projects for n different platforms multiplies the effort for documentation, release engineering and bug tracking. It becomes entirely pointless when some of these projects address the same platform. Therefore I won’t give it a hand as you suggested, but rather continue with SyncEvolution for Mac OS X. That same option exists for anyone else interested in SyncML for Macs.

  3. Adam Wulf | July 9, 2008 at 2:41 am | Permalink

    “There is no GUI yet, but all of the classes in SyncEvolution are meant to be usable as part of a GUI. One could start with the Funambol Mac OS X GUI and just have it call the SyncEvolution classes.”

    +1 for anyone willing/able to do this. i’d love it.

  4. Marc | August 11, 2008 at 11:20 am | Permalink

    I tried the client recently, but felt that it is rather buggy. After some researching I found a tool called fruux. Currently it just supports 10.5 Leopard, but the contact syncing works like charm. Even custom entities in my addressbook get synced without any issues. I read in their blog, that they’ll soon release a version that supports iCal syncing, too.
    If you are a mac user, fruux is probably worth a look.

  5. Patrick Ohly | August 11, 2008 at 11:39 am | Permalink

    Marc, did you try SyncEvolution or the Funambol Mac OS X plugin? If it was SyncEvolution, can you say a bit more about the problems you had?

    Regarding fruux, does it work with normal SyncML servers or does it synchronize data itself? Shoehorning the contact data into a format understood by SyncML servers is difficult and some data is lost (see the Mac OS X section on SyncEvolution Compatibility page); an application which only does Mac < -> Mac synchronization via its own format doesn’t have this problem, but then runs into it again when synchronizing with other devices.

{ 1 } Trackback

  1. Bookmarks about Missing | November 8, 2008 at 3:00 am | Permalink

    [...] – bookmarked by 5 members originally found by numimarks on 2008-10-19 SyncML + Mac OS X – bookmarked by 6 members originally found [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *