Summary

This spec discusses integrating support for synchronization of PDA's (Palm/PocketPC), Phones (Nokia/Blackberry), Multimedia Players (iPods), Desktop applications (Evolution/Rythembox) and Online Services (GoogleCalendar/Flicker)

The proposed solution is complex and involves a number of different intergration projects to culminate in a robust and effective syncing platform.

Rationale

Portable data storage for multiple types of data and databases of information are becoming more important; keeping this data in sync with desktops or internet services is more and more demanded by users.

Use cases

Scope

Integratation of existing tools which allow people to sync data into the same stack.

Design

Integration Low Level

HAL via udev to call scripts mentioned in FDI files for devices, these scripts are to populate HAL with the following information:

For each pda/phone that's detected we should run a script to identify who on that computer owns the device enabeling a degree of security and prevent the user from syncing to the wrong user logon; This script will just add to HAL the username, in the future it could be made more intergrated and secure.

Conduit will be changed to use the hardware endpoints automatically; it will tie into OpenSync who will provide a way for tempory sync configurations to be set up and executed.

Integration Bluetooth

Devices which allow syncing over bluetooth should be detected and handled once paired as if the device was plugged in via usb. This requires that the bluetooth stack report a new device to udev/hal so they can benefit from the same model as will be used for USB. There is no reason to create any special use cases between the bluetooth software, Conduit or Opensync at the detection and hardware configuration layer. This is a feature useful for other bluetooth hardware.

Integration GUI

On top of Conduit we wish to add a very simple python app which sits in the user's panel when active; this app will talk to Conduit via dbus and display all enabled and active syncing actions that can be taken. It will have a quick link to pairing bluetooth devices as well as a link into opening up Conduit GUI fully. It will also pop up information bubbles when a syncing service has been enabled by the plugging in or nearing of a device and when a new and unrecognised device is plugged in it will ask the user if this device stores their personal information and configure a new sync profile in Conduit automatically depending on the kind of device.

Notes

SynCE

USB Serial

Conduit

OpenSync

gnome-phone-manager

Semantic Desktop

History

Old Notes

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-independent project, but start off with bluetooth support

SyncIntegration (last edited 2010-07-14 20:24:22 by p5B37387C)