Skip to content

Funambol

Since SyncEvolution 0.9 with calendar and task support. Funambol supports iCalendar 2.0 in the current server, so this is enabled in the configuration template. Not all iCalendar 2.0 features are supported by the server, most notably support for meetings (drops attendees), meeting invitations (drops UID), detached recurrences (drops RECURRENCE-ID). See README.funambol for details.

Interoperability with the Funambol server was improved in SyncEvolution 0.9 by adding support for some vCard extensions (X-MANAGER/ASSISTANT/SPOUSE/ANNIVERSARY, #2418). Lost ACTION property has a work around (#2422).

To enable the full support for all data in a configuration created with SyncEvolution < 0.9, so that it exchanges items in the more suitable iCalendar 2.0 format, use:

  syncevolution --configure \
                --source-property sync=two-way \
                funambol calendar todo
  syncevolution --configure \
                --source-property type='calendar:text/calendar!' \
                funambol calendar
  syncevolution --configure \
                --source-property type='todo:text/calendar!' \
                funambol todo

Without the exclamation mark, format auto-negotiation would pick the less capable vCalendar 1.0 format because that is marked as preferred by the server.

Google

Google contact sync (only with SyncEvolution >= 0.9)

Google follows the vCard 2.1 specification, and thus does not support some of the vCard 3.0 additions, nor some of the common extensions. As a result, several properties are not synchronized (nickname, birthday, spouse/manager, URLs, …). Only one top-level organization seems to be supported. For details, see README.google.

Regarding Google’s SyncML support, refresh-from-client and one-way-from-client sync modes are not supported. Deleting contacts moves them out of the main address without deleting them permanently. When adding such a contact again, the server discards the data sent by the client and recreates the contact with the data that it remembered.

Because SSL certificate checking for Google works only with libsoup if the platform has a patched libsoup (http://bugzilla.gnome.org/show_bug.cgi?id=589323) or libsoup >= 2.28, certificate checking remains turned off by default for Google. If your platform has a suitable libsoup (like Moblin 2.0), then enable checking with:

  syncevolution --configure \
                --sync-property SSLVerifyServer=true \
                --sync-property SSLVerifyHost=true \
                google

Google Calendar sync

Only supported indirectly through other SyncML services, like ScheduleWorld and GooSync, because Google itself does not provide access via SyncML.

ScheduleWorld

ScheduleWorld preserves almost all Evolution contact and calendar data. The exceptions are:

  • recurring events relative to UTC are transformed to events relative to the user’s time zone, as configured in his settings
  • the schema used to store contacts does not distinguish between different emails, so although all email addresses are preserved, their type gets lost

Linux Desktop

The source of SyncEvolution should be compatible with any Evolution release since 2.0. The packages prepared for regular releases >= 0.9 are compiled on a Ubuntu Hardy 8.04 LTS system (32 and 64 bit x86), and tested with different versions of Evolution. The binaries should run on all distributions that are more recent than Ubuntu Hardy and have a compatible Evolution.

Evolution Release GNOME Linux Distributions Library Dependencies
2.6.1 2.14 Ubuntu 6.06 (Dapper) libedataserver1.2-7, libecal1.2-3, libebook1.2-5
2.6.3 (Debian 4.0) 2.14 Debian 4.0 (Etch) libedataserver1.2-7, libecal1.2-6, libebook1.2-5
2.8.x 2.16 Ubuntu 6.10 (Edgy) libedataserver1.2-7, libecal1.2-7, libebook1.2-9
2.10.x 2.18 Ubuntu 7.04 (Feisty) libedataserver1.2-9, libecal1.2-7, libebook1.2-9
2.12.x 2.20 Ubuntu 7.10 (Gutsy)
2.22.x 2.22 Ubuntu 8.04 (Hardy)
2.24.x 2.24 Ubuntu 8.10 (Intrepid) libedataserver1.2-11, libecal1.2-7, libebook1.2-9
> 2.24 should work as long as EDS remains backwards-compatible; SyncEvolution binaries no longer link directly against specific EDS libraries

KDE is supported indirectly via the SyncEvolution file backend, which synchronizes items stored as single files inside a directory. That format is supported by KDE PIM. An old blog post contains some information and links about this. The SyncEvolution source code contains a “akonadi” branch with a database backend that talks directly to Akonadi, the PIM storage in KDE 4.x, but it needs a maintainer and more work to be usable. Perhaps a Google Summer of Code 2010 project will enhance it and SyncEvolution’s integration into KDE.

Known Issues

Evolution GUI

When importing or updating a contact from the server, some telephone numbers might only be displayed in the contact summary after editing the contact once. Evolution 2.0.4 till 2.6.3, ContactSync::testMerge test. Starting with SyncEvolution 0.4, this is solved by modifying the contact in the same way as the internal editor does. If it still fails, the server might send phone numbers without setting their type correctly.

End date of recurring events

Older versions of Evolution (like 2.0.4) use an Evolution-specific extension of iCalendar 2.0 to mark the end data of a recurring event. SyncEvolution makes no attempts to translate that into something that servers like eGroupware understand . This will not be added because this problem can be avoided by updating Evolution. Since at least version 2.6.3, Evolution uses the normal end date parameter.

Removing a recurrence not synchronized

The file backend of Evolution Data Server <= 2.27.5 does not increase the LAST-MODIFIED property of a recurring event when removing specific recurrences, therefore SyncEvolution does not recognize the event as modified and thus does not update the server. A fix for this is expected to be included in Evolution 2.28.

Adding timezone to Evolution

Evolution has a problem when SyncEvolution receives a calendar event with a new timezone definition. SyncEvolution adds the definition to the Evolution database, but an already running Evolution crashes, when trying to open the new event. Restarting Evolution solves that problem. The problem was found in Evolution 2.0.4, but has been resolved since.

Creating new address book

In Evolution, an address book has to be viewed once in Evolution after creating it (observed in 2.0.4). Otherwise, accessing it in SyncEvolution fails with:

[ERROR] addressbook: opening address book: EBookStatus returned 19

gconf required

In an installation of Evolution, the libraries used by SyncEvolution crash unless the gconfd was started earlier, for instance, by logging into GNOME or running the Evolution GUI (observed with 2.4.2.1)

SyncEvolution 1.0 beta 3 released

SyncEvolution 1.0 beta 3 is available. This release is feature complete and has been tested thoroughly, so only minor bug fixes are expected before releasing 1.0. Beta 3 is ready for day-to-day use and for getting packaged in staging distros as replacement for 0.9.2 or previous betas. If you find issues, please report them.

Binary packages are provided, including Bluetooth support. Major improvements:

  • automatic, time-driven synchronization in the background
  • command line integrates properly into the daemon concept
  • full support for suspend&resume and message resend when using SyncEvolution as client and server
  • compatible with more phones
  • a tool to determine a working configuration for a phone automatically (”syncevo-phone-config”)

Because the release of 1.0 is close, the documentation on syncevolution.org is getting updated to cover it. A Wiki was set up as part of the site to simplify the editing of certain pages, in particular HOWTOs and compatibility reports.

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

Details

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.

Detecting online status depends on ConnMan. Without it, SyncEvolution assumes that the network is available. For Bluetooth it is enough to have a peer paired.

When SyncEvolution is compiled with a backend sync daemon (”syncevo-dbus-server”), then conceptually that daemon controls the configuration and coordinates manually and automatically started sync sessions. Previously, the command line tool bypassed the daemon by running operations itself. Now it can hand over the command line parameters to the daemon to be executed there (”–daemon=yes”, the default if the daemon is available; MB #5043). Command line parameters and output of “syncevolution” are the same as before. Note that the daemon only runs one operation at a time, which delays the command line client when the daemon is busy. 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).

Thanks to fixes and improvements in both Synthesis engine and SyncEvolution, suspend and resume are fully supported in client and server (MB #2425). Previously it failed in some cases, as mercilessly exposed by our automated testing. Now all of these tests pass. The HTTP server now also handles message resends by clients correctly.

Direct synchronization with older phones (like Sony Ericsson K750i) can be started now by switching to an older version of the SyncML standard (”SyncMLVersion” property, MB #9312). No further interoperability testing with such phones has been done at this time. When acting as client, that same property allows talking to older SyncML servers, like desknow.com.

A minor workaround and the right configuration make it possible to synchronize with Nokia N85 and probably also other S60 devices. Added a template for “Nokia S60″. Also made the template for “Nokia N900″ accessible in the GTK GUI.

Because determining which configuration works for a phone involves a lot of trial-and-error, the new “syncevo-phone-config” script automates that process.

Other changes:

  • Mobical.net (and other, similar services): fix vCalendar 1.0 alarm specifications before importing them (MB #10458)
  • Nokia N900: added a config template for it and disabled the redundant RespURI when using Bluetooth. Preliminary testing shows that this solves some of the issues seen before (MB #10224).
  • 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 change an error code (MB #9820)
  • “syncevo-http-server” HTTP server script is included in normal install
  • syncevolution.org binaries: finally solved the libbluetooth3 incompatibility (MB #9289). Binaries of beta 2 crashed on more recent distros because of that.
  • SyncML client and Bluetooth: a mobile device running SyncEvolution creates a configuration automatically (MB #6175). The peer contacting us has to use the standard SyncEvolution URIs (addressbook, calendar, todo, memo).
  • command line: when dealing with the shared non-peer part of a config, it checks for properties which are unsuitable only prints those (MB #8048)
  • GTK GUI: improved setup of devices, automatic sync switch, some fixes for crashes and other tweaks
  • Nokia 7210c: send time as UTC instead of relying on time zone information (MB #9907).
  • command line: setting up a configuration for a “SyncEvolution” server on a client was not possible because the “SyncEvolutionClient” configuration was picked instead (MB #10004). The latter has to be used when configuring a SyncEvolution server to talk to a SyncEvolution client.
  • restore: no longer updates the time of the backup (MB #9963)
  • various minor improvements and fixes, see ChangeLog

Upgrading:

  • 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 (http://funzilla.funambol.com/show_bug.cgi?id=7910). So in the Funambol config template the interval is set to zero, disabling the feature. Enabling or disabling the feature must be done manually in existing configurations.

Source, Installation, Further information

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

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

These binaries include the new “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.

Phone Compatibility Template

To report your experience with a specific phone, edit this page to see its source, copy the text below, then create a new Wiki page.

Key Value
Phone manufacturer
Phone model
Phone firmware version
Data that can be synchronized contacts/events/tasks/memos
Data that has problems contacts/events/tasks/memos
SyncEvolution version 1.0 beta 3/1.0/…
SyncEvolution platform Linux desktop/MeeGo Netbook/…
SyncEvolution backend Evolution/as plain files/…
Configuration template included in SyncEvolution: no/no, but template xyz works/yes, since version xxx
Tested by full name/alias, email optional

Comments:

Your comments here…

Configuration template:

If no existing template works, please write one manually based on your testing. This can be automated using syncevo-phone-config –create-template=”template-name”, then copy the output of the following command: for i in $(find “template-name” -type f | sort); do echo === $i ===; cat $i; done

template goes here...

Not dead – quite the opposite

This blog has been very quite for a year. All news about SyncEvolution got posted over at syncevolution.org.
Because that work keeps me busy and I tend to not blog about private activities, there wasn’t (and still isn’t) much else to report here.
To those who want to keep informed about SyncEvolution and everything else that I [...]

SyncEvolution 1.0 beta 2 released

SyncEvolution 1.0 beta 2 is available. Binary packages are provided, including Bluetooth support this time. Major improvements:

  • easier setup of a phone with the sync-ui and GNOME Bluetooth plugin
  • prevention of slow sync enabled by default and integrated into sync-ui
  • recovery dialog and restore from backup in sync-ui
  • database dumps and comparisons more efficient


Despite some open issues (see below), this release is ready for getting packaged in staging areas of distros as replacement for 0.9.2 and for day-to-day use. If you find issues, please report them.

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.x, a third-party SyncML server is required. In the 1.0 beta, SyncEvolution itself is already able to act as a SyncML server, both via HTTP and Bluetooth (direct sync with phones).

As before, documentation for 1.0 is only available in the “Development” section, including HOWTOs for setting up the HTTP SyncML server and phones manually.

Details

Setting up a phone became a bit easier with beta 2, because SyncEvolution is now integrated with the GNOME Bluetooth panel: once a device with SyncML client support is paired, a button offers to bring up the sync-UI and configure or synchronize with that device. We do a fuzzy match against the Bluetooth device name to find a suitable template (not manufacturer/model, because that is not readily available). Still not many (read: hardly any) templates available, though.

The binaries on syncevolution.org are compiled with Bluetooth support. libbluetooth2 or libbluetooth3 should be installed, but are not essential. If there is no suitable version of it, the Bluetooth channel has to be selected manually as part of the syncURL.

Unexpected slow syncs are prevented by default, in contrast to beta 1 where this feature was available but turned off. When an unexpected slow sync is detected in a client, users have to follow the instructions provided by the command line or sync-ui and choose how to proceed (explicitly request slow sync, refresh from server or client, restore from backup). SyncEvolution as server currently cannot prevent slow syncs, even when initiating the sync with a phone.

In preparation for syncing automatically, logdir and database handling was improved considerably. Backups use less disk space because identical files share the same file content via hard links. This also speeds up the synccompare Perl script. Database dumps and the corresponding comparison are delayed until the session really runs, which avoids doing needless work a) when the server a client tries to contact is unreachable or down and b) by only including sources that are really in use during a sync on the server side.

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.

Summary of changes since 1.0 beta 1:

  • sync-ui: recovery dialog (MB #8050), device setup, config usable with long strings (MB #9278), fixed displaying of source phases during sync (MB #9320)
  • sync-ui + syncevo-dbus-server: integration with Bluez to detect paired devices (MB #9216, MB #7089), select template based on device name (MB #7838), detect network and Bluetooth connectivity (only with ConnMan, MB #7700), passwords stored in GNOME keyring by syncevo-dbus-server are shown with dots in sync-ui (MB #9169)
  • Evolution addressbook backend: avoid picking CouchDB, second try (MB #7877) * Evolution calendar backend: minor fix for change tracking when deleting a single instance of a recurring event
  • build fixes: Bluetooth compatibility (MB #9289), use libical _r variant of calls because 0.43 has issues in the normal version, conflict with system libsynthesis and libsmltk (MB #9811)
  • Horde: avoid confusing the server with a deviceId that starts like the ones used in old Funambol clients, helps with calendar sync (MB #9347)
  • better reporting when SyncEvolution dies during a sync (only happend once when it wasn’t installed properly, but still… MB #9844)
  • performance improvements: 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 (MB #7708), shorter logs (MB #8092)
  • slow sync detection: now also works in the case where the client detects an anchor mismatch and enabled by default (MB #2416)
  • OBEX transport: some error handling changes and removal of polling, now also possible via sync-ui + syncevo-dbus-server (MB #9436)
  • API changes: SyncSource introduces an “isEmpty” operation which is needed for the slow sync detection
  • SyncML: split up configuration (MB #7712), increased default message size because the old one might have been too small for large DevInf structures
  • several fixes for virtual data sources (”calendar+todo”): now works on client side, fixed naming on server (MB #9664), fixed error message for slow sync detection, supported in combination with sync-UI (MB #9535)
  • fixes for shared configuration layout: finding sessions of peers in non-default context, adding sources affected peers in the same context (MB #9329), wrong context during –configure when using shortcut for peers in non-default context (MB #9338)

Known gaps for 1.0 final and beyond:

Redesigned and reimplemented D-Bus API, required by sync-UI:
- ’syncevolution’ command line tool bypasses D-Bus server and runs sync sessions itself (MB #5043)
- availability of peers not detected when using NetworkManager (connected for HTTP, paired for Bluetooth; MB #7700)

SyncML server in general:
- suspend/resume support is untested (MB #2425)
- the progress events and statistics reported for a SyncML client are not generated when running as SyncML server, will require a fair amount of refactoring in the Synthesis engine (MB #7709)

HTTP SyncML server:
- a configuration must be created for each peer manually, including a remoteDeviceId value that contains the peer’s SyncML device ID (MB #7838)

OBEX SyncML server (”sync with phones”):
- does not support phones which require a SAN 1.0 message (MB #9312)
- determining a working configuration for an unknown phone requires a bit of experimenting, which should be automated (MB #9862)

OBEX SyncML client:
- parsing of SAN message is rudimentary and depends on an existing local configuration, needs to be refined depending on which SyncML server software it is meant to work with (MB #6175)

Automatic sync (MB #6378):
- no support for the various server push notification mechanisms
- no intelligent detection of local changes
- no regular background sync, development is in progress

Upgrading from 0.9.x:

  • Upgrading and downgrading should work seamlessly when using existing configurations. But this being a beta, better ensure that you have backups of both your data and your configurations in ~/.config/syncevolution.
  • The new configuration layout is only used when creating new configurations or explicitly invoking “syncevolution –migrate”. Such configs cannot be used by older SyncEvolution releases.

Source, Installation, Further information

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

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

These binaries include the new “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.

FOSDEM 2010

To learn more about SyncEvolution, come to FOSDEM 2010:


Slides are available as .ppt and .pdf under the links above.

SyncEvolution 0.9.2 and 1.0 beta released, support Maemo 5/Nokia N900

SyncEvolution 0.9.2 and 1.0 beta are available. 0.9.2 replaces 0.9.1 as the official stable release. Binary packages are provided. Changes in both releases are listed below. 1.0 beta contains all changes included in 0.9.2. Development has already shifted towards 1.0, but if you find issues in either version, please report them.

In the 1.0 beta, SyncEvolution itself is already able to act as a SyncML server, both via HTTP and Bluetooth (direct sync with phones). Because of incompatible versions of libbluetooth in different distros, the precompiled 1.0 beta packages do not include Bluetooth support. One has to compile from source to use that.

2010-01-30: if you had problems installing the 1.0 beta binaries because of dependencies on libbluetooth2 or libpcre.so.3, then please try again. Binaries without these dependencies replaced the initial set of binaries today (-3 release instead of -2 for .rpm and .deb).

To learn more about SyncEvolution, come to FOSDEM 2010:

SyncEvolution 0.9.2

0.9.2 is available again for Maemo 5 and the Nokia N900, thanks to the work done by Ove Kaaven. Support for the native calendar is included. SyncEvolution Maemo packages are available via the Maemo extras-devel repository. Bug reports can be submitted both in http://bugs.maemo.org and http://bugzilla.moblin.org. The latter is the tracker that is monitored by the SyncEvolution team, which will also incorporate patches. In general, Ove is the main maintainer of the new backend.

New XMLRPC backend, contributed by Franz Knipp/M-otion. It accesses data inside a web service via a SOUP API and thus allows synchronizing it via SyncML. See src/backends/xmlrpc/README for more information.

Added templates for Oracle Beehive and Goosync. Both are not currently part of the regular testing.

In addition to that, 0.9.2 is an incremental update, with several updated translations and addressing all of the issues reported by users for 0.9.1:

  • vCard dialects: added “X-GENDER/X-SIP” (used by Maemo) and X-SKYPE (used by Maemo and recent Evolution, MB #8948)
  • Evolution Address Book: avoid picking CouchDB by default (MB #7877, evolution-couchdb #479110)

    CouchDB address books are appended at the end of the local database list, otherwise preserving the order of address books. The initial release of evolution-couchdb in Ubuntu 9.10 is unusable because it does not support the REV property.

    Reordering the entries ensures that the CouchDB address book is not used as the default database by SyncEvolution, as it happened in Ubuntu 9.10. Users can still pick it intentionally via “evolutionsource”.

  • installation: templates now in $(datadir)/syncevolution/templates (MB #7808)
    This are files used internally, meant to be extended by distributors. Storing them in /etc is no longer supported, but also unlikely to be needed. Added warnings that these files cannot simply be copied into .config because they are not complete configurations.

  • installation: “make install” populates $(docdir) (MB #7168)
    Previously README, COPYING, NEWS, and server READMEs were copied into syncevolution.org .tar.gz/.deb/.rpm archives as part of custom make rules and thus missing in other installations.

  • building: –with-boost had no effect (MB#7856), detect incorrect use of –with-synthesis-src, workaround for lack of –with-docdir in older autoconf, do not unnecessarily depend on CPPUnit header files and GNOME/EDS libs (MB#8338), workaround for libtool bug (”cannot install `syncecal.la’ to a directory not ending in …”)
  • clarified documentation of properties for file backend (MB#8146)
  • stderr redirection: detect “error” messages and show them (MB#7655)
    The “GConf Error: Failed to contact configuration server…” error message was suppressed by the code which catches noise from libraries invoked by SyncEvolution. Now it is printed as ERROR, making it easier to detect why running SyncEvolution inside cron needs additional changes.

  • importing contacts from SyncML server without full name (MB#5664):
    Evolution expects the name to be set and shows an empty string if it is missing. Now the name is re-added by appending first, middle and last name.

  • Evolution calendar: work around ‘cannot encode item’ problem (MB #7879)
    Happens when the calendar file contains broken events which reference a timezone that is not defined. Now the event is treated like one in the local timezone.

  • “http_proxy” env variable is supported regardless which HTTP transport is used (MB#8177).
  • avoid crashes when libecal sets neither error nor pointer (MB#8005) and when aborting a running sync in the syncevo-dbus-server (MB#8385)
  • “–status” output: fixed missing total item counts (MB #9097)

Known issues:

  • ZYB.com is not supported because of a known anchor handling problem in the server (MB#2424), worked around in 1.0.
  • The IPv6 configuration in Ubuntu 9.10 “Karmic Koala” in combination with libsoup and myFUNAMBOL causes network connectivity problems.

Upgrading from 0.9:

  • nothing to do, upgrading and downgrading should work seamlessly

Upgrading from 0.8.1:

  • After switching from a 0.8.x release to a 0.9.x one, or vice versa, do a “syncevolution –sync refresh-from-server” or “–sync refresh-from-client” (depending on which side has the authoritative copy of the data) once, to get client and server into a consistent state. Not doing so can result in applying the same changes to the server multiple times, and thus duplicates.

SyncEvolution 1.0 beta

Compared to the current stable release, this beta release can also:

  • 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

These feature were already available in a source-only 1.0 alpha release. For the beta, we fixed some issues (nothing major) and in addition to the source, also make binaries available. As before, we hope to get feedback on where we are going with 1.0 and its SyncML server and direct synchronization features. If you want to get involved, now is a good time because a) there is something which works and b) there is still time to influence the final 1.0, scheduled for March 2010.

Documentation of the new features can be found in the “Development” section for HOWTOs or ask on the mailing list.

Here is a more complete list of features compared to the stable release. The full (and up-to-date) list can be retrieved from the Moblin Bugzilla (MB) issue tracking system with this query. For changes compared to the 1.0 alpha please consult the change log.

Implemented features are marked with a plus +, open ones with a minus -.

ZYB.com
+ now works thanks to a workaround for anchor handling (MB #2424)
- only contacts tested because everything is considered legacy by ZYB.com

Slow sync handling (MB #2416)
+ Unexpected slow syncs can be detected when running as client and if configured (see “preventSlowSync”), abort the session so that the situation can be analyzed. A refresh from client or server might be more suitable. Because this required manual intervention by the user, the feature is off by default.
- Catching slow syncs does not work yet when running as server and in one corner case in a client.

Improved sync-UI:
+ settings for HTTP servers are now done inside the list of all configs and server templates instead of poping up a separate window
+ uses the new D-Bus API
+ no longer uses private gconf key to select default peer, replaced by “defaultPeer” in SyncEvolution config
+ added recovery features like handling of unexpected slow syncs (MB #2416)
- restoring from backup only supported by command line (MB #8050)
- spinner to indicate network activity missing (MB #2229)
- interactive password request not implemented yet (MB #6376)

Command line:
+ fixed printing of rejected items (MB #7755)
+ 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)

Redesigned and reimplemented D-Bus API, required by sync-UI:
+ 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
+ no longer depends on dbus-glib with hand-written glue code for C++, instead uses gdbus plus automatic C++ binding generated via C++ templates
- ’syncevolution’ command line tool bypasses D-Bus server and runs sync sessions itself (MB #5043)
- availability of peers not detected (connected for HTTP, paired for Bluetooth; MB #7700)
- Bluetooth peers can only be configured via command line (MB #9216)

Revised configuration layout (MB #8048, design document at
http://syncevolution.org/development/configuration-handling):
+ 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 in command line and D-Bus API 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)
- users of the sync-ui will not know about the –migrate option, so if they have only one configuration, it should be migrated automatically

SyncML server in general:
+ incoming connections are accepted by syncevo-dbus-server via the D-Bus Connection API; because this is a “personal SyncML server”, all local data is meant to belong to a single user, and only one sync session can be active at any point in time
+ different users on the same machine can run their own server, as long as they ensure that listening for incoming connections does not conflict with each other (different port in HTTP)
+ the session of an HTTP client which stops sending messages expires after “RetryDuration” seconds instead of blocking the server forever (MB #7710)
- suspend/resume support is untested (MB #2425)
- automatic backup of server databases is inefficient (done even when client is not allowed to do a sync; always backs up all data, including sources which are not active; MB #7708)
- the progress events and statistics reported for a SyncML client are not generated when running as SyncML server, will require a fair amount of refactoring in the Synthesis engine (MB #7709)
- the Synthesis server example config contains workarounds for specific phones, but SyncEvolution does not currently use those; adding new workarounds should be made very simple (MB #7712)

HTTP SyncML server:
+ test/syncevo-http-server.py provides an experimental HTTP server based on Python and Twisted
- a configuration must be created for each peer manually, including a remoteDeviceId value that contains the peer’s SyncML device ID (MB #7838)

OBEX SyncML server (”sync with phones”):
+ peers are contacted via a builtin transport that uses libopenobex (MB #5188)
+ Server Alerted Notification (SAN) message triggers syncs; server ID and URI are configurable (MB #7871)
- a configuration must be created for each peer manually, including a syncURL that contains the peer’s MAC address (MB #7838)
- should be integrated into the system’s Bluetooth pairing (MB #7089)

OBEX SyncML client:
+ obexd 0.19 contains a plugin which passes SyncML messages to syncevo-dbus-server
- parsing of SAN message is rudimentary and depends on an existing local configuration, needs to be refined depending on which SyncML server software it is meant to work with (MB #6175)

Automatic sync (MB #6378):
- no support for the various server push notification mechanisms
- no intelligent detection of local changes
- no regular background sync
- depends on safe handling of concurrent editing, which is blocked by merging of a new Evolution Data Server API (MB #3479)

Upgrading from 0.9.x:

  • Upgrading and downgrading should work seamlessly when using existing configurations. But this being a beta, better ensure that you have backups of both your data and your configurations in ~/.config/syncevolution.
  • 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.

Source, Installation, Further information

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

i386, amd64 and lpia binaries of 0.9.2 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”:

For 1.0 beta, use the “unstable” repository.

These binaries include the new “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).

Because of incompatible libbluetooth versions in the different distributions, the packages of 1.0 beta do not contain Bluetooth support. One has to compile from source to use that.

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 0.9 .tar.gz archives have to be unpacked and the content must be moved to /usr, because several files would not be found otherwise.

SyncEvolution Maemo packages for 0.9.2 are available via the Maemo extras-devel repository.

After installation, follow the getting started steps.