SyncIntegration

Revision 2 as of 2006-11-11 00:06:54

Clear message

Summary

This spec discusses integrating support for syncronisation of PDA's and smart phones, such as PocketPC devices and Nokia phones, other devices, such as PDA's with Opie, palm devices, and others should also be supported as best as possible.

The proposed solution is integration of OpenSync

Rationale

These days most people have more then one device capable of maintaining a calendar, you have PDA's, phones, web based solutions and desktop solutions, like Evolution and Sunbird. Maintaining one calendar, tasks and contacts list over a broad range of devices with ubuntu is almost impossible to do.

Use cases

John has an iPaq h1940 wich he uses as a GPS device and PIM, he also uses a desktop pc at work with Evolution. He would like to be able to sync his PDA with Evolution. Right now he has to hunt arround the web to first install synce and multisync, and then read various howto's to set it up, with various degrees of success.

We could provide a meta-package containing OpenSync (or, if need be, multisync) together with needed dependencies (in this case, synce) and provide him with a wizard to set it all up.

This wizard should be able to setup both usb and bluetooth communications, and initialise synce-matchmaker to allow him to create a partnership with his PDA, then the wizard could setup opensync (or multisync) to enable him to sync both devices.

Clarise uses a Nokia 6021, this is a mobile phone with basic PIM functionality and support for syncml-obex, right now Clarise has to hunt arround for alpha releases of OpenSync to be able to setup syncronisation with Evolution, wich require her to gain a fair deal of knowledge about bluetooth, opensync and the console before she can hope to syncronise her phone.

The same meta-package we installed for John could easilly also service Clarise, the wizard could perform the bluetooth scan for her, and setup OpenSync, so she can get her device synced within minutes.

Scope

Design

OpenSync is currenly still alpha quality software, with some quarks here and there, but it supports more devices then Multisync, which is no longer actively developed.

We could create a wizard with eg python that asks the user what type of device he/she wants to syncronise, and follow the proper steps to setup the syncronisation.

This is an example dialogue:

<Wizard>:

  • - Welcome to the Ubuntu-Syncronisation Wizard, what device would you like to syncronise?

<choices>:

  • - PDA running Windows Mobile - PDA running PocketPC/WindowsCE - Mobile phone

<User picks PDA running PocketPC> <Wizard>:

  • - (performs communications check: Do we have USB? Bluetooth? Serial?) - How would you like to connect the PDA to your computer?

<choices>:

  • - Wireless (Using bluetooth) - With an USB cable - With a Serial cable

<User picks Wireless> <Wizard>:

  • - (Sets up bluetooth by setting the device in discoverable mode, adds a serial port with sdptool) - Please goto Bluetooth manager on your PDA and add the computer to bluetooth devices - (Waits for incoming communication of the PDA)

    - (uses synce-matchmaker status to get the PDA's partnership state, if the PDA has no partnerships, or a free slot, initialise a partnership with synce-matchmaker create <number>) - (If the PDA has no free slots, ask the user wich slot to replace) - (Setup OpenSync using msynctool) - Your PDA is now set for syncronisation, please connect your PDA to the PC and start Multisync/OpenSync frontend

Sync integration with nokia n770
e-d-s running on both sides, 
770 is debian-based
opensync could be ported to the device
primary mode would be sync via bluetooth
it could be taken to the extent where syncs are done in a proactive way - either side could initiate a sync on various changes
syncml could be used - server would run on desktop side, more options on desktop
syncml spec allows for either side to initiate
actually both sides would have to be a server (could be resource-intensive)
connection must be done from client->server
the protocol should act like a peer-to-peer, but doesn't really
conflict resolution server engine only has to run on the desktop, however
server would send message to opensync via dbus to initiate sync
don't *need* a full syncml server on desktop, just something to prod opensync into doing the sync
opensync is a pull-based system, not a push-based system,
it expects a process to make requests, and pushes results
opensync would poll e-d-s, or e-d-s would have to notify opensync to start pulling
syncml from the 770 to trigger opensync
e-d-s is backend, opensync is transport
syncml needs to listen on dbus, bluetooth, and initiate events

eds pokes opensync
opensync uses syncml client to talk to syncml server, which puts data into eds on the remote side
the same thing is done in the other direction
conflict resolution is done inside opensync
both sides would need eds, opensync, syncml client & syncml server
syncml server would have to be listening all the time, in some fashion
syncml library that could be used is http://libsyncml.opensync.org (not released, only in CVS)
advantage of this model is that any system using syncml could use this

Implementation:
 writing a binding for eds/syncml
 writing a trigger such that eds can trigger opensync cleanly
 
can we use parts of opensync to have syncml talk to eds?
dependencies of opensync: glib2, libxml2, maybe needs libsqlite3
each plugin has different build requirements, each is packaged independently
libsyncml needs to be packaged, need to check & test if it's in a good shape
   svn co http://svn.opensync.org/libsyncml/trunk libsyncml
   
syncml server should be a bluetooth-independant project, but start off with bluetooth support