Synchronization
Synchronization Framework
The synchronization framework used in Sailfish OS is Buteo. It is a generic framework for creating sync plugins that can perform sync operations across devices and cloud.
The Buteo Synchronization Framework comes with extensive documentation. You can access it by cloning and building the framework sources:
git clone https://github.com/sailfishos/buteo-syncfw.git
cd buteo-syncfw/
sfdk build
firefox doc/html/index.html
Buteo client plugins
Buteo client plugins act as clients to services running outside of a device. They are loaded when sync is started and unloaded once the sync has been completed.
The plugins are shared libraries with the file name starting with lib
and ending with -client.so
. They are placed in a directory called buteo-plugins-qt5/oopp
under the standard library directory, i.e. on a device running 64-bit Sailfish OS, /usr/lib64/buteo-plugins-qt5/oopp
.
Sync profiles
Buteo sync profile provides information about the synchronization service that the user has synchronized with. The profile contains dynamic information that is created when a plugin is configured, and also information that is generated after a sync has been initiated. The profiles are stored in XML format in a writable data location, as of Sailfish OS 4.5.0 .local/share/system/privileged/msyncd/sync
. During plugin configuration, which is part of account creation, a sync profile template is copied from /etc/buteo/profiles/sync/
Client profiles
Each sync profile has a client profile as a subprofile. The client profiles consists of fields, which must have set values. The fields are defined in XML files in /etc/buteo/profiles/client
. The actual values are defined as key/value pairs in the sync profile XML file.