Development#
This page provides information for developers or packagers who want to use the SyncEvolution source code and/or contribute to the development of SyncEvolution. To contact the development team, use the mailing list. There is no shortage of features that new developers could work on. Many of them are documented in the SyncEvolution tracker. In addition, porting SyncEvolution to other platforms and/or synchronizing other data sources is something that will only be possible if motivated developers start contributing and maintaining these extensions of the current functionality.
Source Code#
The code is available in git repositories:
- SyncEvolution
https://gitlab.freedesktop.org/SyncEvolution/syncevolution/, Ohloh statistics
- staging area for patches against upstream Synthesis (use this for SyncEvolution)
- upstream Synthesis
Please read about the Architecture. The HACKING document contains further
information about working with the source code. The goal of the libsynthesis
repository on moblin.org is to prepare patches developed by the core
SyncEvolution team and publish them for upstream inclusion. If you want to
contribute patches yourself, please work with the Synthesis repository and
contact Synthesis regarding their contributor agreement. When compiling from
source, then --with-synthesis-src=<path to checked out libsynthesis>
in the
SyncEvolution configure is useful to compile both projects in a single
“configure+make” invocation. “make install” is only needed for the sync-UI and
server data files and for automatically starting the syncevo-dbus-server. The
code compiles with -Wall -Werror
both with clang and gcc; you might find
clang’s error messages more useful during development.
Further Reading#
For those who just get started with SyncML, there are various technical articles. Some of them can be found on Patrick’s blog, some on this site. Here is a list of recommended reading:
project presentation - talk at Gran Canaria Desktop Summit 2009
PIM Data Synchronization: Why is it so hard?- introduction to PIM Sync, SyncML, Synthesis Engine (originally published by LWN.net)
SyncML Client Do-It-Yourself Style - tutorial for writing your own SyncML client using SyncEvolution (based on 0.8, but mostly still valid)
Direct Synchronization, aka SyncML Server - design of SyncEvolution 1.0 server mode
the syncevo-dbus-server D-Bus API for UI and server stub developers
synchronization without SyncML: “local sync” proposal”, first use of it for CalDAV/CardDAV
Calendar Time Stamps and Time Zones - why UTC is not sufficient
iCalendar 2.0 + Detached Recurrences - synchronizing a meeting series with complex exceptions
Time Zone Handling in Evolution - describes some pitfalls in VTIMEZONE handling