SyncEvolution 1.0 released

After several betas and lot of testing, it’s finally time to announce the end of the 1.0 development cycle: SyncEvolution 1.0 is released and replaces 0.9.2 as the stable version.

0.1 was released over four years ago. It has always bee part of the long-term vision to bring “personal SyncML” to desktops. Thanks to the Synthesis engine and Intel’s support for the project, this goal has been reached and this release really deserves the magic 1.0 label.

For those not familiar with the project, SyncEvolution synchronizes personal information management (PIM) data like contacts, calenders, tasks, and memos using the SyncML information synchronization standard. Up to and including 0.9.2, a third-party SyncML server was required. In 1.0, SyncEvolution itself is able to act as a SyncML server, both via HTTP and Bluetooth (direct sync with phones).

SyncEvolution 1.0

Major new features compared to previous stable release:

  • synchronize directly with a phone over Bluetooth/OBEX
  • accept Bluetooth/OBEX connections in cooperation with obexd >= 0.19
  • run SyncEvolution as a rudimentary HTTP SyncML server

The GTK sync-UI can be used to select a paired phone and create a configuration for it based on the bundled configuration templates. Configuration templates are included for Nokia phones; for other phones see the HOWTO and check out the Wiki there. Some users have already reported success for Sony Ericsson phones and added setup instructions. New templates from the Wiki can be dropped into ~/.config/syncevolution-templates under an arbitrary file name.

Unexpected slow syncs can be detected when running as client (MB #2416) and unless turned off (see “preventSlowSync”), SyncEvolution aborts the session so that the situation can be analyzed. A refresh from client or server might be more suitable. The command line tool provides instructions at the end of its output. The GTK sync-UI points towards its recovery dialog.

Automatic synchronization is supported by the syncevo-dbus-server (MB #6378). When that is installed, it will be started as part of a user session and keep running to trigger syncs in the background. Notifications are emitted when syncs start, end or fail (MB #10000).

Automatic synchronization can be enabled separately for each peer (”autoSync=0/1″, off by default), will be done at regular intervals (”autoSyncInterval=30″ minutes) when online long enough (”autoSyncDelay=5″ minutes). That last option ensures that a) an automatic sync does not attempt to use a network connection unless it was already active and b) hopefully is also around long enough to complete the sync.

The Synthesis XML configuration was split up into different parts which are assembled from /usr/share/syncevolution/xml. Files in ~/.config/syncevolution-xml override and extend the default files, which my be useful when adding support for a new phone.

SyncML servers:

  • ZYB.com now works thanks to a workaround for anchor handling (MB #2424); only contacts tested because everything else is considered legacy by ZYB.com
  • Horde: avoid confusing the server with a deviceId that starts like the ones used in old Funambol clients, helps with calendar sync (MB #9347)
  • Mobical.net (and other, similar services): fix vCalendar 1.0 alarm properties before importing them (MB #10458)
  • desknow.com works when switching to SyncMLVersion = 1.1
  • Funambol, Memotoo (and probably others): preserve meeting series when receiving update for detached recurrence (MBC #1916)

Evolution:

  • calendar backend: minor fix for change tracking when deleting a single instance of a recurring event
  • workaround for Evolution 2.30: “timezone cannot be retrieved because it doesn’t exist” is triggered incorrectly when importing non-standard timezone definitions because libecal changed an error code (MB #9820)

Performance and reliability improvements (MB #7708):

  • synccompare much faster
  • database dumps consume less disk space
  • more intelligent about expiring obsolete session directories and backups
  • database accesses are reduced in several backends
  • shorter logs (MB #8092)
  • message resending helps under unreliable network connectivity (”RetryInterval”)
  • full support for suspend&resume in SyncEvolution client to SyncEvolution or Synthesis server syncs
  • better handling of certain third-party time zone definitions (MBC #1332)

Improved GTK sync-UI:

  • revised config screen: all in one list where entries can be expanded, integrated setup of sync with other devices
  • recovery support: restore from backup, unexpected slow sync handling
  • spinner while network is in use (MB #2229)
  • interactive password requests (MB #6376)
  • uses new D-Bus API

Command line:

  • fixed printing of rejected items (MB #7755)
  • consistent logging of added/updated/deleted items with short description
  • improved error reporting (textual descriptions instead of plain error codes MB #2069, partial success MB #7755, record and show first ERROR encountered MB #7708)
  • can create new sources (MB #8424)
  • runs operations inside daemon and thus avoids conflicts with operations done by other clients; for testing purposes (like running a client which talks to a local server in the daemon) it is still possible to ignore the daemon (–daemon=no, MB #5043)
  • revised README, now also available as man page (MBC #690)

Redesigned and reimplemented D-Bus API, used by sync-UI and command line:

  • central syncevo-dbus-server controls configurations and sync sessions
  • accepts incoming SyncML connection requests and messages received by independent transport stubs (obexd, HTTP server, …)
  • can be used by multiple user interfaces at once
  • fully documented, see src/dbus/interfaces and http://api.syncevolution.org
  • no longer depends on dbus-glib with hand-written glue code for C++, instead uses gdbus plus automatic C++ binding generated via C++ templates

Revised configuration layout (MB #8048):

  • several peer-independent sync and source properties are shared between multiple peers
  • they can be accessed without selecting a specific peer, by using an empty config name or with the new “@” syntax
  • user interface of command line unchanged
  • old configurations can be read and written, without causing unwanted slow syncs when moving between stable and unstable SyncEvolution versions
  • old configurations can be migrated with the “–migrate” command line switch; however, then older SyncEvolution can no longer access them and migrating more than one old configuration causes the second or later configuration to loose its “deviceId” property (which is shared now), causing a slow sync once
  • config names may contain characters that are not allowed in the file names used for the underlying files; will be replaced with underscores automatically (MB #8350)

Upgrading from 0.9.x:

  • Upgrading and downgrading should work seamlessly when using existing configurations.
  • The new configuration layout is only used when creating new configurations or explicitly invoking “syncevolution –migrate” (see above). Such configs cannot be used by older SyncEvolution releases.
  • The new “RetryInterval” property causes messages to be resent after 2 minutes (increased from 1 minute in previous 1.0 betas). At least the Funambol server is known to not handle this correctly in all cases. So in the Funambol config template the interval is set to zero, disabling the feature. Disabling the feature must be done manually in existing Funambol configurations.

SyncEvolution 1.0 beta 3 -> 1.0 final

Bug fixes and new features:

  • Configuration templates are stored in a single file (MBC #1208). New templates (like something downloaded from the Wiki can be dropped into $HOME/.config/syncevolution-templates using an arbitrary file name.
  • Progress and per-source status are now also reported and recorded when running in server mode (MBC #1359). There are still several limitations (sync mode not reported, no information about sent/received/processed items while the sync runs, see MBC #2786).
  • Better handling of certain third-party time zone definitions (MBC #1332). Better logging to track down such problems.
  • D-Bus server + command line: return error code when failed (MBC #2193)
  • syncevo-phone-config: simplified command line options, several bug fixes (syntax error, incorrect handling of calendar+todo, MBC #1197)
  • Revised README, now also available as man page (MBC #690). Conversion of D-Bus API documentation into .html page (MBC #1745).
  • Funambol, Memotoo (and probably others): preserve meeting series when receiving update for detached recurrence (MBC #1916)
  • Fix for potential out-of-bounds memory access (MBC #1007).
  • HTTP server: fix for potential crash when second session was requested while an older one was still running, initial sync was done without libical time zone information and thus may have mismatched times (MBC #2435)
  • Nokia E55: convert alarm times (MBC #1657). This is done via a new remote rule in /usr/share/syncevolution/xml/remoterules/server/46_E55.xml If another phone needs the same treatment, then copy that file to ~/.config/syncevolution-xml/remoterules/server and edit the element.
  • GTK GUI: styling fix (MBC #1372), updated toolbar for MeeGo 1.0 (MBC #1970), avoid duplicating configs when selecting a config created by syncevo-phone-config or the command line (MBC #1266), scroll bars for emergency window (MBC #1296), avoid compile problem on Fedora Core 13 due to name collision with system sync() call, updated translations.

Known Issues

Compatibility with phones has not been tested as well as compatibility with the officially supported SyncML servers. Some issues have been reported which still need to be investigated:

  • Nokia N85: ignores refresh-from-server? (MBC #2722)
  • Sony Ericsson W595: All-day-events created in evolution are synchronized as all-day-events + 1 additional day in the mobile (MBC #2093)
  • Nokia N81: Evolution contacts loose “Other” email-addresses when synced two-way (MBC #2566)
  • Nokia phones: absolute alarm time? (MBC #1657)

Call for action: test with your phone and report which config works and how well synchronization works.

Other known issues:

  • server progress events: no information about sync mode (MBC #2786)
  • Calendar event alarm synchronization between N900 and Goosync (MBC #2764)

Source, Installation, Further information

Source snapshots are in
http://downloads.syncevolution.org/syncevolution/sources

i386, amd64 and lpia binaries of 1.0 for Debian-based distributions are available via the “stable” syncevolution.org repository. Add the following entry to your /apt/source.list, then install “syncevolution-evolution”:

These binaries include the “sync-ui” GTK GUI and were compiled for Ubuntu 8.04 LTS (Hardy). Older distributions like Debian 4.0 (Etch) can no longer be supported with precompiled binaries because of missing libraries, but the source still compiles when not enabling the GUI (the default).

The same binaries are also available as .tar.gz and .rpm archives in http://downloads.syncevolution.org/syncevolution/evolution. In contrast to 0.8.x archives, the 1.0 .tar.gz archives have to be unpacked and the content must be moved to /usr, because several files would not be found otherwise.

After installation, follow the getting started steps.