Skip to content

{ Category Archives } Uncategorized

SyncEvolution 1.0.1 released

SyncEvolution 1.0.1

A bug fix release. The main reason for releasing it is that
SyncEvolution 1.0 no longer worked on recent distros (Fedora Core 13,
Debian testing) because of a name clash between the Bluez D-Bus
utility code and recent glib.

Details:

  • compile fix for FC 13 (and possibly others): use private copy of gdbus (BMC #3556)

  • sync-ui: prevent overwriting device configs by accident (BMC #3566,BMC #1194)
    Setting up a phone used the template name as config name and overwrote
    an existing configuration of another phone that was created using that
    same template. Now the code uses the Bluetooth device name as set on the
    device and checks for (less likely) collisions. It also sanitizes the
    name to avoid complicated config names (only relevant when also using
    the command line).

  • syncevo-dbus-server: accept ‘application/vnd.syncml+xml; charset=UTF-8′ for starting an HTTP session (BMC #3554)
    The redundant charset specification was set by the Funambol
    Thunderbird client. Because of a literal comparison against
    ‘application/vnd.syncml+xml’ the messages were rejected.

  • config fix: operations on non-peer configs failed (BMC #3157)
    When running operations on a non-peer configuration (like –restore @default
    addressbook), the operation fails with
    [ERROR] : type ’select backend’ not supported

  • ZYB.com: service goes away end of June 2010, template removed (BMC #3310)

  • some build (BMC #2586, BMC #3557) and language updates

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.

Memotoo

Server with very good support for SyncEvolution, see http://www.memotoo.com/index.php?rub=infoSyncML. It is part of SyncEvolution’s nightly testing and included in the list of configuration templates that come with SyncEvolution.

eGroupware

Contributed on 10.09.2006 by Mathias Weyland, who also graciously provided access to a server for testing for a while. Not currently tested.

SyncEvolution can handle synchronization with eGroupware (eGW), starting with 0.4-pre2 plus one patch, which was included in 0.4.

Make sure eGW fits the needs for correct operation with syncML, in particular php5 and Pear::Log. See here for information about requirements and settings.

The SyncEvolution setup is rather straightforward. Although the SyncML code of eGW is based on horde (see above), there’s no need to restrict authentication to auth-basic.

Set syncURL to http://<host>/<egw-base>/rpc.php. Set “type = text/calendar” and “uri = ./calendar” for the calendar and “type = text/x-vcard” and “uri = ./contacts”, respectively for the address book.

Warning: “uri = ./calendar” apparently is the official uri, but several users reported that with that setting events created in eGW were not copied into Evolution while “uri = calendar” worked alright. Until this is clarified, the recommendation is to use “uri = calendar”.

All in all, synchronization is working well, but I’d like to mention some things I noticed not to work:

  • Recurring events don’t stop at a final date in eGW, even when this final date has been set in evolution.

    “A known issue of old Evolution versions.” — Patrick

  • Recurrence exceptions are not respected.

    “eGW seems to rely on storing the remaining instances of an event, but does not include this information in the data it sends to SyncEvolution. On the other hand, SyncEvolution also does not yet support this either. Exceptions defined in Evolution’s dialog are stored as simple properties and are sent to the server, but eGW does not seem to use that information.”

  • New appointments in eGW are not sync’ed to evolutions. But updates are.

    “Could not reproduce. If it still occurs, please submit a bug report.”

  • With SyncEvolution 0.6, Ioannis Ioannou had a problem with lost or messed up telephones. Part of the problem was in SyncEvolution (it did not correctly detect types as sent by eGW, fixed in 0.7), part of the problem was in eGW (it does not handle the vCards sent by SyncEvolution correctly). Ioannis found out that eGW has hard-coded mappings for incoming data, which might have to be adapted on a case-by-case basis for clients. He submitted a patch (thanks!) which adds a SyncEvolution mapping to eGW. Hopefully this problem will be fixed. The original version of his patch changes class.vcaladdressbook.inc.php in egroupware/addressbook/inc and was tested on 1.4.001, 1.4.002, and the trunk of 2007-09-25th.
  • If communication with eGW stops with a Server Failure: server returned error code -1 error, then the reason is most likely a parser problem in eGW. Some information about this can also be found in the same discussion thread.

Horde

Contributed on 08.05.2006 by Todd Pytel based on an early 0.4 CVS snapshot.

The Horde framework includes a SyncML component compatible with SyncEvolution and other SyncML clients. This component is built in to the core framework and does not need to be separately installed. For synchronization to work, you need to do a few things….

  1. Use fresh Horde sources: Many SyncML changes are applied only to Horde’s CVS HEAD branch. The stable branch does include some SyncML support, but it’s not as complete as what’s found in CVS HEAD. If you really don’t want to use CVS HEAD sources entirely, you might be able to get away with updating just the files /horde/rpc.php and /horde/turba/lib/api.php. Try the versions from the stable CVS branch first before trying HEAD, and don’t complain if they don’t work correctly on top of a release installation. Much better to just use CVS HEAD altogether.
  2. Configure authentication: On the Horde server, the only thing that might require configuration is authentication. By default, SyncEvolution will use md5 authentication, which is nice when you’re using HTTP rather than HTTPS. Support for md5 was very recently added to Horde, and will almost certainly have changed by the time you read this. At the moment, see the comments in SyncML/Backend.php around line 404 for details. Alternatively (and more easily), run SyncML over HTTPS and tell SyncEvolution to use basic, non-md5 authentication, by adding

    clientAuthType = syncml:auth-basic serverAuthType = syncml:auth-basic

    to the ~/.sync4j/evolution/horde/spds/syncml/config.txt file (see below).

  3. Configure SyncEvolution: Read the generic SyncEvolution docs, then come back here. Copy one of the prepackaged configuration directories (like etc/scheduleworld_1) to ~/.sync4j/evolution/horde as a starting point. It doesn’t matter much which template directory you use. They’re not very different, and there’s not much to configure. You need to modify (or create) the following items. In ~/.sync4j/evolution/horde/spds/syncml/config.txt:

    syncURL = https://your.horde.site.com/horde/rpc.php

    Adjust http/https appropriately and make sure the address matches the webroot configuration on the server.

    deviceId = sc-api-nat-&lt;identifier&gt;

    Each computer/username combo that syncs should have a different identifier, for example, using an identifier like “home-myusername” makes sense. The username and password lines should match your Horde username and password. Add the AuthType lines from #2, if you don’t want md5 authentication. Next, decide which Evolution databases you want to synchronize. I use only the addressbook, but the others should be similar. In ~/.sync4j/evolution/horde/spds/sources/addressbook_1/config.txt set

    uri = contacts

    That’s it. The other components use “calendar” (Kronolith), “notes” (Mnemo), and “tasks” (Nag). If you don’t want to synchronize a particular database, be sure to set “sync = none” in its config file.

  4. Try it out:

    syncevolution horde

    If you get errors, check out the Horde Sync wiki for more information on debugging. The sync@lists.horde.org mailing list is also very useful. Check the archives there, to see if there’s any info about your problem.

Enhancement (Note: This may be unnecessary when Turba 3 is released.)

The default configuration for Turba (Horde’s address book component) is less than ideal for SyncML, because the turba_objects database table is somewhat oversimplified (for example, all components of an address are combined in a single field). This leads to vcards that are missing some fields when they’re synced between Horde and Evolution. Fortunately, Turba is very clever, when it comes to reading its database, and can automagically adjust to many nondefault configurations. If you’re creating a fresh Turba installation, you can improve its SyncML capabilities greatly by using this custom sources.php file. If you do this, then you’ll also need to make sure the appropriate fields are available in the turba_objects table in your database. Using this postgres script, instead of the one included with Horde, will create an appropriate turba_objects from scratch. For MySQL, there is no such script available, so make the changes manually. Nothing else needs to be done with Turba, apart from using the custom sources.php and creating an appropriate turba_objects table. The Turba code will automatically recognize the new fields and use them correctly in SyncML transactions. Thanks to Karsten Fourmont for providing this solution.

Synthesis

The Synthesis server is a very configurable server which stores its data in a database. Contact data can be exchanged in vCard 2.1 and 3.0 format when using the default configuration, but due to how it is stored, several attributes used by Evolution get lost or modified. It might be possible to protect against loss of those attributes, by tuning the Synthesis server setup. More work would also be required to exchange calendar entries and tasks, because in the default configuration they are not accepted in the iCalendar 2.0 format of Evolution.

Ovi

OVI.com is Nokia’s set of web services, including among them complete PIM data handling and synchronization with phones via SyncML. Formal interoperability testing has not been done yet, but a user of SyncEvolution 0.9.1 reports that it works for him. Getting the necessary setting information for SyncEvolution is a bit tricky, so check out his nice report for a step-by-step guide.

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)