Architecture#

The synchronization stack consists of three components:

Synthesis SyncML Engine

Implements the SyncML protocol, data conversion and merging. It is a very advanced SyncML implementation (fully utilizes device information for data handling, suspend/resume support, direct copying from WBXML for low memory overhead, …) that has been developed by Synthesis since 2000 and represents the core of all their SyncML solutions. It supports both client and server mode in the same code base, which has the advantage that clients automatically support all of the advanced features often only found in servers (like automatic support for multiple different data formats, preserving of properties when receiving updates from less capable peers). Also, a plugin that provides access to data can be implemented once and then be used on the client and server side.

SyncML Toolkit

Used by the engine for SyncML message encoding and decoding, both XML and WBXML. Synthesis has maintained and enhanced it since the upstream project effectively become unmaintained in 2004.

SyncEvolution

Provides the frame work for writing a SyncML client as well as a complete solution, available currently via the command line. Integrates the Synthesis SyncML Engine into Linux by adding HTTP(S) transports and configuration handling. Plugins provide access to local data. Support is already included for Evolution Data Server (used in Moblin, desktop Evolution, Maemo), Mac OS X, and plain files.