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
- freedesktop.org repository, Ohloh statistics
- staging area for patches against upstream Synthesis (use this for SyncEvolution)
- freedesktop.org repository
- upstream Synthesis
- git repository, Ohloh statistics
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
- Magic Tricks Revealed: How SyncML Works and When It Fails
- 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