Calendar: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?
- You may use third party applications based on the Gammu. It is released under GNU GPL and has both Linux and Windows versions.
- Mobile Master (commercial) also promises synchronization of phone books and calendar with both Thunderbird and Sunbird
- I tried Mobile-Master and couldn't get it to work properly. Only managed to sync a couple of to-do's and no calendar events. If I can work it around i'll update this post...
- 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
- The iPod supports iCal files for it's calander. Files only need to be copied to this folder, and no special sync protocol is needed. (AFAIK). Since iTunes version 5.0, Windows users can automatically sync Outlook calendars and contacts with the iPod. Also, "iPod Agent" (http://www.ipodsoft.com/softwaredetail.aspx?sid=1) adds this ability but not into Outlook itself. -- Kroc Camen.
- 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 (1.5 (v139)) is NOT syncML compatible. Hopefully the next version (shipping with Tiger) will be.
- 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?
- I think there are 2 possibilities: 1. use the syncml library and implement a syncml client into the calendar so that i can be sync via third party apps (advantage: easy to implement). 2. integrate opensync into the calendar and provide a sync interface where the user can choose what other device to synchronize etc (advantage: easier to use (no third party app), disadvantage: more code to write (the UI))
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.
About Sync4j
As quoted already, a comprehensive solution for SyncML is Sync4j (http://www.sync4j.org). The project includes a server and many clients and client APIs. In particular, APIs are available in Java and C++.
SyncML is really becoming obiquitous on any device and even if the device does not support SyncML natively, likely you'll have some 3rd party implementation (http://sync4j.funambol.com/main.jsp?main=addon). For example, Sync4j provides already clients for Outlook, Palm, PocketPC and iPod. From a Mozilla perspective I guess it would be great if the UI/engine would provide a separation between the synchronization library/client to use and the way to trigger or invoke the synchronization component.
Stefano
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