SyncIntegration
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