|
|
Log in / Subscribe / Register

SyncEvolution releases version 0.9 beta 1

From:  Patrick Ohly <patrick.ohly-AT-gmx.de>
To:  lwn-AT-lwn.net
Subject:  SyncEvolution 0.9 beta 1: Part of Moblin, Full-time Project, using Synthesis SyncML Engine
Date:  Wed, 13 May 2009 15:30:48 +0200
Message-ID:  <1242221448.28817.347.camel@pohly-MOBL>

Introduction
============
SyncEvolution [1] synchronizes personal information management (PIM)
data like contacts, calenders, tasks and memos via the SyncML
information synchronization standard. Primarily it works with GNOME's
Evolution, but support for other platforms was added over time, like
Maemo and Mac OS X. SyncEvolution was the first SyncML client for the
iPhone, available for jail-broken devices before there even was an
official SDK. The emphasis always was on stability and reliability,
which is why it still doesn't have a fancy GUI except for the
third-party Genesis front-end. It has been a spare-time project for over
three years; now I am happy to announce [2] that I have the opportunity
to work on it full time for my employer Intel as part of the Moblin
initiative [3].

This change is an opportunity for SyncEvolution to go beyond its
traditional role of a simple SyncML client for (mostly) Evolution. It's
too early to announce specific plans, but the intention is to include a
GUI and also work on direct device-to-device and device-to-desktop
synchronization. This will all be open source, so if you want to help,
then let's talk (see below). 

Moving to Synthesis SyncML Engine
=================================
The other big change in direction is that SyncEvolution 0.9 will be
based on the Synthesis SyncML Engine [4], which is getting re-released
under the LGPL by Synthesis. The Funambol C++ library, the basis for
SyncEvolution in previous releases, has served SyncEvolution well.
SyncEvolution wouldn't exist if Funambol hadn't released their source
code. I hope that my contributions to Funambol (port to Linux+autotools,
interoperability testing, CPPUnit testing framework, to name just some
of them) will continue to be useful even though now it is time to move
on and I'm not going to contribute directly anymore. 

I look forward to similarly productive cooperation with Synthesis. So
far, I have added the autotools build scripts to it, made sure that it
compiles cleanly with gcc on 32 and 64 bit, and fixed a few issues that
came up due to the different way of using the source in SyncEvolution. 

Why change a running system? It's because the Synthesis code base is
arguably a better match for SyncEvolution's goals. The core engine is
written in C++ and implements both the client *and* the server side of
the synchronization. The Funambol server is implemented as a Java
Enterprise application and depends on an application server like Tomcat.
The bundle made available by Funambol of course runs on normal desktops,
but this is not a replacement for a normal desktop application.
Refactoring the server so that its SyncML engine can be used without an
application server would be a lot of work and likely lead to patches
that cannot be accepted upstream because they change the core
architecture. 

There are several other advantages that come from switching to the
Synthesis engine: 
      * suspend/resume support (not used yet in 0.9 beta 1) 
      * description of SyncEvolution capabilities are generated
        automatically 
      * WBXML, the more efficient encoding of SyncML messages, is now
        supported (but disabled by default in 0.9 beta 1 for further
        testing) 
      * SyncEvolution can and will be licensed as LGPL, which is a
        better choice for a project that is meant to become the
        infrastructure that others build their applications upon. 

Data Conversion
===============
Because the Synthesis engine implements the data format conversions and
merging required for a SyncML server and makes that functionality
available also to SyncML clients, it was easy to implement another
fundamental change in SyncEvolution: 0.9 switches from an "all items are
sent verbatim to the SyncML server" to a "parse and convert" data
handling model. The argument for the former approach was that the SyncML
server should be the only entity in the system which does data
conversion. But faced with real-world constraints, the previous releases
already had to deviate from this approach to accommodate for minor
client/server incompatibilities and for vCard 2.1 support. 

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
only be stored 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 -
still needs to be tested in more detail. 

What do these changes mean for related projects?
================================================
I look forward to continuing the cooperation with Funambol and
ScheduleWorld on interoperability. The use of open standards for
synchronization is going to benefit everyone involved because it allows
users to synchronize who wouldn't be able to do that otherwise, but it
requires testing to ensure that the different components in the system
really work well together. Other SyncML server developers and operators
are welcome to join the SyncEvolution interoperability testing as long
as they: 
      * provide test accounts 
      * assist with analyzing problems 
      * support SyncEvolution users who want to use the service 

With the goal of supporting direct synchronization, SyncEvolution enters
a space that other projects also focus on, for example OpenSync and
Conduit. We already discussed opportunities for cooperation with
OpenSync: OpenSync currently doesn't have stable code for conversion
between different formats like vCalendar and iCalendar or vCard
2.1<->3.0, which is essential for a useful 0.40 release. Perhaps the
Synthesis code can fill this gap. The Conduit project seems to be less
focused on PIM data and mobile devices, but if there is a chance to
cooperate, then it's certainly worth discussing that. 

The goal is to continue with SyncEvolution and Synthesis not just as
open source, but also as open projects, with as much communication on
public channels as possible. This is just getting started, so bear with
us (and kindly remind us!) while we figure out how to do this properly.

SyncEvolution 0.9 beta 1
========================
The focus of this first beta was to reach the same level of
functionality and stability as in 0.8.1. Therefore this beta does not
yet bring much new features; this will be the focus of further beta
releases until finally 0.9 will be a full replacement for 0.8.1. For
details, see the NEWS file [5].

Download + Installation
=======================
The source tar ball of SyncEvolution 0.9 beta 1 with the corresponding
Synthesis source included is available in the estamos.de download
directory [6]. 

Precompiled binaries will be made available for Moblin soon. For other
platforms please compile from source. Compilation, installation and
usage works as before and described in the README. Here's how one can
compile and use the latest sources: 
  cd /tmp
  git clone git://git.moblin.org/syncevolution.git
  cd syncevolution
  ./autogen.sh
  mkdir compilation
  cd compilation
  ../configure --disable-shared \
               --with-synthesis-src=git://git.moblin.org/libsynthesis.git
  make
  PATH=pwd/src:$PATH
  syncevolution

Further Information
=================== 
[1] main project site: http://www.estamos.de/projects/SyncML/
[2] announcement on blog:
http://www.estamos.de/blog/2009/05/13/syncevolution-09-be...
[3] Moblin project site (development aspects, git repositories, bug tracker):
http://moblin.org/projects/syncevolution/
[4] Synthesis open source project: http://www.synthesis.ch/indefero/index.php/p/libsynthesis/
[5] detailed release notes: http://git.moblin.org/cgit.cgi/syncevolution/plain/NEWS
[6] source tar balls: http://www.estamos.de/download/syncevolution/sources/

-- 
Bye, Patrick Ohly
--  
Patrick.Ohly@gmx.de
http://www.estamos.de/





to post comments


Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds