Documentation

SyncEvolution synchronizes personal information management (PIM) data like contacts, calenders, tasks, and memos using the SyncML information synchronization standard. SyncEvolution, compiled for GNOME's Evolution, supports all of these data items. Compiled for Nokia 770/800/810 Internet Tablets, Mac OS X, and the iPhone (only 0.7), it supports synchronizing the system address book. The command-line tool 'syncevolution' (compiled separately for each of these platforms) executes the synchronization. Genesis is a graphical frontend for SyncEvolution written in PyGTK. It makes SyncEvolution accessible without having to use a command line and provides graphical feedback of transaction results.

SyncEvolution Command Line
SyncEvolution synchronization session

Genesis GUI
Genesis synchronization session

The items are exchanged in the vCard 2.1/3.0, iCalender 2.0, and textual format via the open source Synthesis SyncML Engine (since 0.9 beta 1; in earlier releases the Funambol C++ client API library was used). Full, one-way, and incremental synchronization of items are supported.

Starting with version 0.8, SyncEvolution can synchronize arbitrary data on all platforms by storing each item in a separate file of a configurable directory. The content of each data item is preserved verbatim. This is useful for server backups, scripted data modifications, and synchronizing different servers.

This table summarizes the types of supported data per platform.
Unix/Linux Maemo/Nokia Internet Tablets Mac OS X iPhone (only 0.7)
Contacts Evolution embedded Evolution/system addressbook/Contacts Addressbook system addressbook
Events Evolution Dates no no
Tasks Evolution no no no
Memos Evolution no no no
Arbitrary Data synchronized with one file per item no (introduced in 0.8)

SyncEvolution does not synchronize with another SyncML capable device or another computer directly. A SyncML server, that all these clients can talk to, is required. Here's how a phone, Outlook on Windows, Evolution on Linux, and a Mac can synchronize contacts and events. In addition, the Linux machine also stores backups of the data in two local directories:

Client/Server Architecture

Choosing a SyncML server

  • Using a web service like ScheduleWorld or myFUNAMBOL, which store the data to be synchronized on a server and provide access to it through SyncML.
  • Installing a SyncML server, like the free one from Funambol, on one's own server.
  • Installing a SyncML server on the desktop.

The recommended solution is ScheduleWorld because it is easier than setting up a server and provides better support for vCard and iCalendar data than the stock Funambol server installation. Setting up a server on the desktop has the additional problem that not all mobile devices can communicate with the desktop using HTTP.

The following actions will work, with a server that fully supports SyncML and vCard/iCalender:

  • Copy a complete database to the server and restore it from the server later.
  • Delete or modify an item locally, then make the same change on the server.
  • Delete, modify, or add items on the server (by synchronizing with another client), then make the same change locally.
  • Conflict resolution (where two clients modify the same item, then sync with the server) is handled by the server, but SyncEvolution has support which ensures that no data is lost by creating duplicates.

For conflict resolution and synchronization between clients which support different attributes of items, the server needs an understanding of the format of items.