Skip to content

{ Category Archives } Announcement

manipulate Evolution, KCalExtended/mkcal, QtContacts PIM items via uniform command line

The current development version of SyncEvolution, the one which will become 1.1, has some new features which may be useful for command line aficionados like myself: query and manipulate items in the databases that can be accessed with SyncEvolution backends.

This is particularly useful for the new PIM storages in MeeGo, QtContacts and mkcal (formerly known as KCalExtended). Both are part of MeeGo Core, but come without any kind of frontend in Core. SyncEvolution provides a uniform way of testing these new storages using the command line or scripts.

Installation

In MeeGo, make sure that at least 1.0.99.5 rpms (required for mkcal) or better, 1.0.99.6 (for QtContacts) get installed. The core “syncevolution” rpm is needed plus “syncevolution-kcalextended” resp. “syncevolution-qtcontacts”.

When compiling from source, check out the master branch of “syncevolution” and “libsynthesis” and follow the instructions in the “HACKING” document. Add –enable-kcalextended resp. –enable-qtcontacts as needed…

HOWTO

These examples illustrate how to use the new options in combination with mkcal. In 1.0.99.6, “mkcal” can be used as type instead of “kcalextended”, as in the examples below. Only events are supported at the moment, todos and journal entries in the calendar are ignored.

Wipe out calendar data the hard way:

rm -f ~/.calendardb*

Import an event:

$ cat >/tmp/example.ics <<EOF
BEGIN:VCALENDAR
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART:20100823T170000
DTEND:20100823T173000
SUMMARY:first event
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR
EOF

$ syncevolution --import /tmp/example.ics --source-property type=kcalextended @foo bar
#0: 3f630f1d-8009-4465-907b-3ec28248b90b-rid
[ERROR] stderr: kdedate/ksystemtimezone.cpp: 313 - cannot get wall_clock_info (localzone) - QDBusError("org.freedesktop.DBus.Error.ServiceUnknown", "The name com.nokia.time was not provided by any .service files")

Because many of these system libraries don’t expect to be used by command line users, they spew out a lot of debugging information. The SyncEvolution command line filters this output and suppresses most of it. Developers who want to see it, can set the SYNCEVOLUTION_DEBUG environment variable to 1. They should also add –daemon=no to run the operation inside the “syncevolution” process instead of the “syncevo-dbus-server”.

The error in this case is MeeGo bug, which I’ll strip from the output of the following examples.

The command line above works without any “@foo” configuration and “bar” data source, because the source type is specified explicitly. Configuring this value permanently makes the command line shorter:

$ syncevolution --configure --source-property type=kcalextended @default calendar

List all events:

$ syncevolution --daemon=no --print-items @default calendar
3f630f1d-8009-4465-907b-3ec28248b90b-rid: first event

Export events to stdout:

$ syncevolution --export - @default calendar
BEGIN:VCALENDAR
PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN
VERSION:2.0
BEGIN:VEVENT
CREATED:20100901T131100Z
DTSTAMP:20100901T130859Z
UID:a62893e3-3df1-4a92-b57b-d05c805d4078
LAST-MODIFIED:20100901T131009Z
SUMMARY:first event
DTSTART:20100823T170000
DTEND:20100823T173000
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

Export one specific event into a file (like everything else, this also works for multiple events, writing into a single file or a directory):

$ syncevolution --export /tmp/exported.ics @default calendar 3f630f1d-8009-4465-907b-3ec28248b90b-rid

Update that event, showing of reading from stdin here:

$ perl -p -e 's/first event/first event modified/' /tmp/example.ics | syncevolution --daemon=no --update - @default calendar 3f630f1d-8009-4465-907b-3ec28248b90b-rid
#0: 3f630f1d-8009-4465-907b-3ec28248b90b-rid

$ syncevolution --daemon=no --export - @default calendar | grep SUMMARY
SUMMARY:first event

Hmm, that didn’t work as intended. Need to investigate… ah, I haven’t reimplemented that part with the new mkcal API yet. Will be fixed in 1.0.99.6.

Delete the event:

$ syncevolution --delete-items @default calendar 3f630f1d-8009-4465-907b-3ec28248b90b-rid
[INFO] calendar: deleting "first event"

REFERENCE

$ syncevolution --help
...
List items:
  syncevolution --print-items <config> <source>
Export item(s):
  syncevolution [--delimiter <string>] --export <dir>|<file>|- <config> <source> [<luid> ...]
Add item(s):
  syncevolution [--delimiter <string>|none] --import <dir>|<file>|- <config> <source>
Update item(s)
  syncevolution --update <dir> <config> <source>
  syncevolution [--delimiter <string>|none] --update <file>|- <config> <source> <luid> ...
Remove item(s):
  syncevolution --delete-items <config> <source> <luid> ...
...
--print-items
  Shows all existing items using one line per item using
  the format "<luid>[: <short description>]". Whether the description
  is available depends on the backend and the kind of data that it
  stores.

--export
  Writes all items in the source or all items whose <luid> is
  given into a directory if the --export parameter exists and is a
  directory. The <luid> of each item is used as file name. Otherwise it
  creates a new file under that name and writes the selected items
  separated by the chosen delimiter string. stdout can be selected with
  a dash.

  The default delimiter are two newline characters for a blank line. This
  works for vCard 3.0 and iCalendar 2.0, which never contain blank lines.
  Because items may or may not end in a newline, as a special case the
  initial newline of a delimiter is skipped if the item ends in a newline.

--import
  Adds all items found in the directory or input file to the
  source.  When reading from a directory, each file is treated as one
  item. Otherwise the input is split at the chosen delimiter. "none" as
  delimiter disables splitting of the input.

--update
  Overwrites the content of existing items. When updating from a
  directory, the name of each file is taken as its luid. When updating
  from file or stdin, the number of luids given on the command line
  must match with the number of items in the input.

--delete-items
  Removes the specified items from the source. Most backends print
  some progress information about this, but besides that, no further
  output is produced. Trying to remove an item which does not exist
  typically leads to an ERROR message, but is not reflected in a
  non-zero result of the command line invocation itself because the
  situation is not reported as an error by backends (removal of
  non-existent items is not an error in SyncML).

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.

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.

SyncEvolution 1.0 alpha 1 released

Today we are releasing SyncEvolution 1.0 alpha 1, a development snapshot, “because we can” :-)

In particular, we can:

  • 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
  • be reasonably sure that it compiles and runs as well as 0.9.x because it passes the same nightly testing without known regressions


The main goal of this release is 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.

This is definitely work in progress. Only a source snapshot is made available, not the usual set of binaries. If you can, compile the latest source directly from the git repositories and recheck before reporting issues: http://syncevolution.org/development

The source tar ball itself is at the usual location: http://downloads.syncevolution.org/syncevolution/sources/syncevolution-0…

Documentation is lacking at the moment. Watch the “Development” section for HOWTOs or ask on the mailing list. Contributions welcome, as always.

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.

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

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
- the design is a bit tentative and not all of it is implemented; for example, the triangle in front of server entries cannot be used to unfold the entry, only the “setup now” button does that (MB #8315)
- recovery features like restoring from backup and handling of unexpected slow syncs (MB #2416) are missing

Redesigned and reimplemented D-Bus API:
+ central syncevo-dbus-server controls configurations and sync sessions: http://syncevolution.org/development/direct-synchronization-aka-syncml-s…
+ 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)
- waiting for peer not reported over D-Bus and not shown in sync-ui (MB #2229)
- interactive password request not implemented yet (MB #6376)
- availability of peers not detected (connected for HTTP, paired for Bluetooth; MB #7700)
- once started, syncevo-dbus-server keeps running forever (MB #7711)
- restoring backups only possible via command line (MB #8144)

Revised configuration layout (MB #8048, design document):
+ 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
- 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)
- suspend/resume support is untested (MB #2425)
- an HTTP client which stops sending messages blocks the server forever (MB #7710)
- 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 serverexample 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
- a configuration must be created for each peer manually, including a syncURL that contains the peer’s MAC address (MB #7838) and correct settings for generating the SAN message (MB #7871)
- 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 an alpha, 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.

SyncEvolution 0.9.2 is still in the pipeline. It is a minor update, addressing several non-critical issues. All of these are also fixed in 1.0 alpha 1:

  • 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.

  • autotools + Boost: –with-boost had no effect (MB#7856)
  • configure: detect incorrect use of –with-synthesis-src
  • 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.

SyncEvolution 0.9.1 released

SyncEvolution 0.9.1 is available. It replaces 0.9 as the official stable release. Changes since that version are listed below. Changes made between beta releases (for those who helped testing them) are documented in the beta release announcement.

There are some known issues, see below. The more issues get reported and fixed, the sooner there will be a 0.9.2 maintenance update, so keep the reports coming. If you want to report something or get involved, then contact the team.

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 current “master” branch, SyncEvolution itself is already able to act as a SyncML server. Support for direct synchronization via Bluetooth is planned for 1.0. A snapshot release will be made available as soon as possible – end of October obviously did not work out…

SyncEvolution 0.9 -> 0.9.1, 26.10.2009

Mobical and Memotoo are now officially supported.

Memotoo uses vCard 2.1 with several Evolution specific extensions. It uses iCalendar 2.0, however, without actually supporting the advanced features of it. Times are converted to UTC and meeting information are lost.

Mobical uses vCard 2.1 and vCalendar 1.0 as data formats, with the result that many properties used in Evolution are not supported by the server. In particular calendar support is very limited (known issues when events are in time zones different from the one selected locally and on the server, no support for meetings). For details see README.mobical.

Beware that the Mobical SyncML password is not the same as the one for their web site. Log into mobical.net, then go to “my accounts >> configure new device >> manual settings” to find the SyncML credentials.

It is now possible to compile database backends outside of SyncEvolution, install them and have SyncEvolution use them automatically like any other backend. The backend API has been enhanced considerably. For example, backend developers have access to a modular set of utility classes that can be mixed into a specific implementation. Backends can access the internal Synthesis representation directly and therefore no longer need their own vCard/vCalendar/iCalendar parser.

The sqlite demo backend can be enabled and compiled again with –enable-sqlite. It demonstrates how to map directly from the Synthesis field list to some internal format (an SQLite database schema in this case).

Other changes:

  • Resend messages to cope with intermittent loss of network connectivity (Moblin Bugzilla #3427). See the new “ResendDuration” and “ResendDelay” configuration properties for details.
  • SyncEvolution command line uses the GNOME keyring when the new –keyring option is given.
  • The logging of added and updated items was enhanced. Events, tasks and memos are logged with a short description instead of just the local ID. The description for contacts was improved.
  • Receiving photos from Mobical failed because Mobical does not quite follow the vCard 2.1 (Moblin Bugzilla #6668). Sending photos worked, but added a few bytes of garbage at the end of each photo (typically ignored when showing). Parser was made more tolerant by Synthesis and encoder bug was fixed.
  • Task priorities used by Mobical and Evolution did not match: vCalendar 1.0 uses 1-3, iCalendar 2.0 uses 1-9 (MB #6664). SyncEvolution now translates between the two ranges, with some information getting lost when talking to a peer which only supports the smaller range.
  • Importing work and home phone numbers from Google into desktop Evolution works better, because SyncEvolution now adds the “VOICE” flag expected by Evolution (MB#6501).
  • SSL certificate checking with Google is enabled by default and enabled in Moblin, because libsoup in that distro has the necessary fix. Without that fix, all connection attempts fail. The binaries on syncevolution.org are compiled with –disable-ssl-certificate-check, so users who want the additional security must enable it.
  • .rpms on syncevolution.org no longer specify a dependency on certain Perl features. This depencency was a problem on Mandriva. Unwanted hard dependencies on libecal in syncevolution.org binaries are avoided for real this time (MB#6552).
  • Some sync-UI enhancements (describe sync services, avoid crash with very long input in some of the text boxes (MB#5219), set application icon, improved some strings).
  • sync-UI: now disables sources which are not supported when setting up a configuration, like memos on Moblin (MB #6672). Previously the source was enabled, which prevented using using the configuration as-is on the command line.
  • The sync UI allowed to enable calendar and task synchronization with Google although Google does not support that (MB#5871). In new installations this is prevented by clearing the URI for those data categories.
  • Trying to remove a non-existent configuration via the command line now raises an error, to catch typos (MB #6673).
  • Improved checks which logs in the logdir belong to the current server (MB#5215).
  • Improved sanity checking of integer configuration parameters (MB#6500).
  • Spelling fix: “aboring” => “aborting”

Known issues:

  • Mobical and Memotoo do not have a description in the GUI yet.
  • ZYB.com is not supported because of a known anchor handling problem in the server (MB#2424).
  • When running as a cron job with GNOME >= 2.24, a D-Bus session must be created manually as described here: http://www.estamos.de/blog/2009/05/08/running-syncevolution-as-cron-job/ In 0.9.1, the “GConf Error: Failed to contact configuration server” message is hidden from the user, leading to a failed syncs with error code 500 and no further explanation (MB #7655).
  • There is an unreproducible report that a refresh-from-client sync of the Evolution “Birthday & Anniversaries” calendar no longer works with 0.9.x, comment in the bug report if you run into this.
  • The IPv6 configuration in Ubuntu 9.10 “Karmic Koala” in combination with libsoup and myFUNAMBOL causes network connectivity problems.
  • Local problems during a sync are recorded with ERROR messages, but do not affect the overall sync result and thus might go unnoticed. The local problem in that report is “calendar: extracting event”, with no explanation at this point.

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.

Source, Installation, Further information

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

i386, amd64 and lpia binaries 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 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 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.

After installation, follow the getting started steps.

SyncEvolution 0.9.1 beta released

SyncEvolution 0.9.1 beta 2 is available, release after fixing all issues which were found in beta 1. It is going to replace 0.9 as the official stable release soon, so this is the chance to find and report problems before they sneak into the final 0.9.1 – die, bugs, die!

SyncEvolution 0.9.1 beta 2 -> 0.9.1, 26.10.2009

Minor changes:

  • spelling fixes in NEWS file (–source-type => –source-property)
  • update to zh_CN
  • improved autotools compilation of libsynthesis

SyncEvolution 0.9.1 beta 1 -> 0.9.1 beta 2, 19.10.2009

Several fixes:

  • Receiving photos from Mobical failed because Mobical does not quite follow the vCard 2.1 (Moblin Bugzilla #6668). Sending photos worked, but added a few bytes of garbage at the end of each photo (typically ignored when showing). Parser was made more tolerant by Synthesis and encoder bug was fixed.
  • Task priorities used by Mobical and Evolution did not match: vCalendar 1.0 uses 1-3, iCalendar 2.0 uses 1-9 (MB #6664). SyncEvolution now translates between the two ranges, with some information getting lost when talking to a peer which only supports the smaller range.
  • The workaround for detecting an endless stream of Alert 222 messages (caused by misbehavior of certain servers when a specific message has to be resent) aborted certain valid (albeit somewhat pathologic) sync sessions. Improved the heuristic so that it still catches the real loop without aborting in that other case.
  • sync-ui: now disables sources which are not supported when setting up a configuration, like memos on Moblin (MB #6672). Previously the source was enabled, which prevented using using the configuration as-is on the command line.
  • .rpms on syncevolution.org no longer specify a dependency on certain Perl features. This depencency was a problem on Mandriva. Unwanted hard dependencies on libecal in syncevolution.org binaries are avoided for real this time (MB#6552).
  • Trying to remove a non-existent configuration via the command line now raises an error, to catch typos (MB #6673).
  • Message resend options: added sanity checks to catch negative values, clarified that duration is given in seconds, 0s resend interval disables resending (MB #6500).
  • Spelling fix: “aboring” => “aborting”

SyncEvolution 0.9 -> 0.9.1 beta 1, 06.10.2009

Mobical and Memotoo are now officially supported.

Memotoo uses vCard 2.1 with several Evolution specific extensions. It uses iCalendar 2.0, however, without actually supporting the advanced features of it. Times are converted to UTC and meeting information are lost.

Mobical uses vCard 2.1 and vCalendar 1.0 as data formats, with the result that many properties used in Evolution are not supported by the server. In particular calendar support is very limited (known issues when events are in time zones different from the one selected locally and on the server, no support for meetings). For details see README.mobical.

Beware that the Mobical SyncML password is not the same as the one for their web site. Log into mobical.net, then go to “my accounts >> configure new device >> manual settings” to find the SyncML credentials.

It is now possible to compile database backends outside of SyncEvolution, install them and have SyncEvolution use them automatically like any other backend. The backend API has been enhanced considerably. For example, backend developers have access to a modular set of utility classes that can be mixed into a specific implementation. Backends can access the internal Synthesis representation directly and therefore no longer need their own vCard/vCalendar/iCalendar parser.

The sqlite demo backend can be enabled and compiled again with –enable-sqlite. It demonstrates how to map directly from the Synthesis field list to some internal format (an SQLite database schema in this case).

Other changes:

  • Resend messages to cope with intermittent loss of network connectivity (Moblin Bugzilla #3427). See the new “ResendDuration” and “ResendDelay” configuration properties for details.
  • The logging of added and updated items was enhanced. Events, tasks and memos are logged with a short description instead of just the local ID. The description for contacts was improved.
  • The sync UI allowed to enable calendar and task synchronization with Google although Google does not support that (MB#5871). In new installations this is prevented by clearing the URI for those data categories.
  • Importing work and home phone numbers from Google into desktop Evolution works better, because SyncEvolution now adds the “VOICE” flag expected by Evolution (MB#6501).
  • SyncEvolution command line uses the GNOME keyring when the new –keyring option is given.
  • SSL certificate checking with Google is enabled by default and enabled in Moblin, because libsoup in that distro has the necessary fix. Without that fix, all connection attempts fail. The binaries on syncevolution.org are compiled with –disable-ssl-certificate-check, so users who want the additional security must enable it.
  • syncevolution.org binaries should be compatible with a wider range of Evolution releases again (MB#6552).
  • Some sync UI enhancements (describe sync services, avoid crash with very long input in some of the text boxes (MB#5219), set application icon, improved some strings).
  • Improved checks which logs in the logdir belong to the current server (MB#5215).
  • Improved sanity checking of integer configuration parameters (MB#6500).

Known issue:

  • Mobical and Memotoo do not have a description in the GUI yet.
  • ZYB.com is not supported because of a known anchor handling problem in the server (MB#2424).

Source, Installation, Further information

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

Binaries 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 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.

After installation, follow the getting started steps.

SyncEvolution 0.9 released

SyncEvolution 0.9 has been released! The 0.9 version replaces 0.8.1 as the stable version on Linux desktops. Mac OS X and Maemo have not been updated and remain at 0.8.1 (hint: volunteers wanted). 0.9 binaries in .deb, .tar.gz and (for the first time) .rpm format are provided for x86 in 32 and 64 bit mode.

Moblin 2.0 comes with SyncEvolution included in the normal Moblin image, with updates provided via the package repositories.

Planning and work for SyncEvolution 1.0 is in full swing. 1.0 is intended to add the SyncML server role for direct synchronization with other devices. If you want to get involved, then contact the team: http://syncevolution.org/support

Changes SyncEvolution 0.8.1 -> 0.9

This is a major new release, with first steps towards further improvements. From this release on, the Synthesis SyncML engine will be the underlying SyncML and data conversion engine.

A native GTK GUI is now included. The “sync-ui” program depends on a backend D-Bus service (”synevo-dbus-server”) and several auxiliary files. Therefore, it only runs without hacks after installation in /usr (possible with .deb, .rpm and binary .tar.gz archives, and with “sudo make install”, after compiling from source). The normal command line tool still works without being installed.

In this release, the data handling model was changed from “all items are sent verbatim to the SyncML server” to “parse and convert”. The argument for the former approach was that the SyncML server should be the only entity in the system which does data conversion. The previous releases already had to deviate from this approach to accommodate for minor client/server incompatibilities and for vCard 2.1 support, so the new approach just takes it one step further.

The main reason for going to full semantic conversion is vCalendar 1.0 support. Support by servers for iCalendar 2.0, the only format supported by 0.8.1, is often still incomplete or even non-existent. By doing the conversion on the client side, SyncEvolution is now able to synchronize events and tasks with a wider variety of servers.

It is still true that properties not supported by a server cannot be synchronized to other devices, so using a server with full iCalendar 2.0 support is recommended. But in contrast to 0.8.1, information that can be stored only locally is no longer lost when receiving an incomplete update from the SyncML server, thanks to intelligent merging, provided by the Synthesis engine. This depends on an accurate description of the server’s capabilities, which might not be provided by all of them. This still needs to be tested in more detail.

Interoperability with servers tested extensively in this release. The following servers are now supported:

  • ScheduleWorld. There is very complete support for Evolution data. The
    only known issues are around resuming from an interrupted sync.
  • Google contact sync.

    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
  • Funambol, 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 by adding support for some vCard extensions (X-MANAGER/ASSISTANT/SPOUSE/ANNIVERSARY, #2418). Lost ACTION property has a work around (#2422).

    To enable that support in an existing configuration 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.

WARNING: After switching from a previous release to the current 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.

Other changes in detail:

  • vCalendar 1.0 is now supported.
  • Both libcurl and libsoup can be selected at compile time as HTTP(S) transport mechanism.
  • SF #2101015: Expect: 100-continue header results in 417 Error with proxy. Should no longer occur with the HTTP transports in this release.
  • SF #1874805: Syncing with Funambol results in loosing all-day property. This now works thanks to the Synthesis data conversion rules.
  • SF #2586600: Synchronisation with mobical.net fails in 0.8.1. Works now, but there are some known issues (Bugzilla #3009) and therefore mobical.net is not officially supported yet.
  • SF #2542968: Separator for categories should not be escaped. Done correctly by the Synthesis vcard conversion.
  • bug fix: Evolution notes with only a summary and no description were not sent correctly to the server. Instead of sending the summary, an empty text was sent.
  • CTRL-C no longer kills SyncEvolution right away. Instead it asks the server to suspend the session. If that takes too long, then pressing CTRL-C twice quickly will abort the sync without waiting for the server (Warning, this may lead to a slow sync in the next session).
  • WBXML is enabled by default now, except for Funambol (#2415). Using WBXML reduces message sizes and increases parsing performance.
  • New configuration templates can be added to /etc/default/applications/syncevolution. These templates may contain icons, which are used by the GUI (no icons shipped right now).
  • Information about previous synchronization sessions is now stored in a machine-readable format and can be accessed using the new –print-sessions options. The output of this information is more complete and more nicely formatted.
  • –status now shows not only data changes since the last sync, but also item changes (see README for the difference between the two).
  • The new –restore option allows restoring local data to the state as it was before or after a sync. For this to work, “logdir” must be set (done by default for new configurations). The format of database dumps was changed to implement this feature. Instead of in a flat file, items are now saved as individual files in a directory. To get the previous format back (for example, to import as one .vcf or .ics file manually) concatenate these files.
  • With –remove, one can remove configurations. It leaves data files and the local databases untouched.

Known issues:

  • The GUI includes the number of locally deleted items during a refresh-from-server sync in the number of “received changes” (#5185), which is a bit misleading. This is a result of #3314, which introduced changes not “received” from the server.
  • When a network error occurs and the client never notices that the connection to the server was lost, it will hang forever, waiting for the server’s reply (#3427).
  • The file backend now works only for data formats understood by SyncEvolution and the Synthesis engine. Items are parsed when exchanging them among the backend, engine, and server, in contrast to 0.8.1, where item content was not touched locally (#5046).
  • The ZYB.com server sends conflicting sync anchors, so most syncs don’t work as expected (#2424).
  • The sqlite demo and Mac OS X contacts backends do not compile at the moment because they still need to be adapted to the new infrastructure.

Source, Installation, Further information

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

Binaries 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 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 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.

After installation, follow the getting started steps.