Synchronization is often just a two-way process where changes in data on a server are reflected in a data store on a client, and vice-versa. The synchronization process consists of propagating changes back-and-forth. Things can get tricky when the same data is changed simultaneously in both places. In this case, this situation needs to be detected, there needs to be a rule about which change should take priority, and the situation needs to be resolved.
Mobile device synchronization typically requires that data be transformed to make it compatible with different devices. It also involves timeout and retry algorithms to handle interrupted communications. It involves optimizations in protocols and code to improve performance and to adapt to network bandwidth characteristics.
The software that synchronizes two data stores is the synchronization platform. It is usually implemented as middleware running on a server, with mobile device clients using wireless networking to handle data traffic.
Funambol is open source software that is based on the Open Mobile Alliance (OMA) Data Synchronization (DS) standard, which is commonly referred to as SyncML. Funambol supports bi-directional over-the-air synchronization, including the following capabilities:
To learn more about synchronization and SyncML, check out the SyncML Book, which can be downloaded from the Product Library.