Calendar:Device Sync

Revision as of 13:37, 10 November 2005 by Tgrund (talk | contribs) (→‎Device Sync)

Device Sync

We are working on the ability to synchronize calendar with handhelds (pda's). This should with a wide range of devices, and on the main platforms (windows, linux, mac). It should work with all types of calendars that we offer (ics, caldav, sqlite)

  • On linux, communicating with the handheld can either be done directly (libvisor) or by third party software, such as multisync or opensync. OpenSync is a general synchronization framework that currently runs on linux and mac. A windows port is also planned. The plugins are ported from the multisync project, so everything available there, will also be available in opensync (palm support, irmc, syncml, gpe, opie, wince devices). You can also have a look at the short whitepaper describing opensync. Since opensync is just a library it would be possible to embed it directly in the application.
  • On windows, there is activesync and hotsync (iirc). But I don't know enough of them to decide what to use. What are its capabilities? Does it have sync logic build in?
  • AIUI, HotSync is a Palm-specific (closed) sync client, while ActiveSync is (closed) WinCE-specific. You can write conduits for HotSync; I think there are dev kits available for this. I don't know about ActiveSync. Syncing to mobile devices also includes mobiles IMHO, which will probably use a mix of sync clients (e.g. Siemens S55 uses XTNDConnectPC, Motorola use StarFish's TrueSync) which could all probably have "conduit" equivalents written for them. I don't know if this is the approach you want - it's potentially a lot of different interfaces. -- BenS
  • Concerning ActiveSync, there is a possibility to write conduits. This however involves serious headaches, as IIRC the API is a true Microsoft spec, if you know what I mean. Therefore many 3rd party sync utilities rely on some sort of client-pull mechanism on the PocketPC side. (see sync4j)
  • An addition to BenS comment above: Late-model Sony Ericsson phones also use XTNDConnectPC to sync with Windows and also directly with Microsoft Outlook.
  • On mac, i don't know the situation at all.
  • There's something called ".Mac" sync on OS X. To integrate with this, you can use the DotMac SDK [[1]] -- BenS
  • While iSync from Mac OS 10.3 is not syncML compatible, .Mac sync (included with Mac OS 10.4) is.

Calendar already needs to have support for syncing two calICalendars (see Calendar:Networking Sharing Syncing). The logic to sync two calendars could be reused, either by implementing a calICalendar for the handheld, or by making the logic a little bit more general.

Another approach is to make the third party app export the handheld data into a file calendar can read. This calendar can then be synced, and after that the third party app can send the data back to the handheld.

The third way is to create some ipc between calendar and the thirdparty app, and let that app do the logic. multisync has the logic build in, but what about windows and mac? And do we want to depend on multisync?

The downside with those approaches is that calendar needs to run while syncing. This is mainly because we also want syncing to work with non-ics calendars, like caldav.

SyncML

SyncML is a standard, but can we use it safely without any worries?

  • AIUI (from reading other projects' mailing lists and web pages), it is implemented slightly differently across different clients. There is certification for interoperability of SyncML products; the list is long and at [[2]]. NB it can use HTTP as a transport, and a fair few of the clients on that list seem to support HTTP rather than OBEX; this should be relatively easy to integrate into Mozilla :-) - BenS
  • All of the IPR patents for SyncML are presently only at application stage according to the Open Mobile Alliance's IPR Declaration page [[3]]. If they make it through, I'm guessing either the Moz Foundation or users would have to pay licensing on it. What's the policy on this kind of thing? - BenS
  • Most Symbian OS Series 60 and above, late-model Sony Ericsson, and (AFIACT) all >=2004 Motorola phones have SyncML support in one form or another. Some only via OTA (Over The Air, ie: HTTP), and some like the new Motorola Linux-based phones (a768i, a780) support it via OTA, USB and infrared. One benefit of SyncML support, as BenS noted, would be a large base of device support.
  • As stated above, the current version of Apples iSync (2.1 (shipped with Tiger)) is NOT syncML compatible.
  • SyncML seems a good idea to me in general. Perhaps a generic SyncML support would be great, so conduit sync could be left to the end user. (Using, for example, the sync4j project mentioned above.
  • We (the people from the opensync project) are currently implementing a new syncml plugin. Since we didnt find a usable syncml library we started to write our own with support for general syncml, DS, Devinfo and later maybe DM. The supported transport mechanisms are http client, http server and obex client. It will be ready for testing at around middle of june. The license will be GPL.
  • Looking at your (opensync) web-page, it seems that a possible approach would be to use opensync as the sync engine, taking it as a whole library - forget just SyncML, it would make more sense to simply use opensync as a whole. Are there any major obstacles to that?

Help Wanted

To make a plan that will work, we need to know what the situation is on Windows and on MacOSX. What apis are available to talk to handhelds? What logic is available?

If you know more about those platforms from a developers perspective, please note it.

Sync4j Mozilla Synchronizer

I am particularly glad to announce that we had a contribution for a first release of the Sync4j Mozilla Synchronizer, a Mozilla plug-in that allows you to sychronize the Mozilla calendar with a Sync4j SyncML server. Check out more information here: Sync4j Add-on.

Stefano