Wednesday, January 02, 2008

Funambol Community Showcase #1: SyncEvolution

The first days of the year, most people commit to doing something. I am not a smoker, so I can't stop doing that. Therefore, I am focusing on something else: showcasing the great projects in our community. There are so many and so diverse, that they risk to get lost. I have decided to pick some for a few weeks (or months) and have the developer(s) talk about it.

The showcase consists of Funambol developers and community members writing about Funambol mobile open source projects, components, apps, services and content. Showcase entries will be published periodically in my blog, to generate awareness of interesting projects in the community and to provide recognition for outstanding achievements by our dedicated developers and community members.


The debut entry in the showcase is SyncEvolution, written by long time Funambol community member Patrick Ohly. As his showcase entry mentions, Patrick has made multiple significant contributions to the Funambol code base. He is a star and I want sincerely to thank him for all of his efforts. I think you will find this entry to be quite interesting. If you would like to learn more about SyncEvolution, check out the links in the entry or contact Patrick for more information.

I plan to publish several more Showcase entries over the coming weeks, covering all aspects of Funambol such as the Java ME client, the Outlook plug-in, the Windows Mobile plug-in, the Device Management framework and much more. If you are interested in generating awareness for your Funambol project, just drop me a note. Thank you and enjoy the first showcase.

SyncEvolution

By Patrick Ohly
patrick.ohly@gmx.de

Overview

SyncEvolution synchronizes personal information management (PIM) data like contacts, calenders, tasks and memos via the SyncML synchronization standard. The version of SyncEvolution compiled for GNOME's Evolution supports all of these data items. The version compiled for Nokia 770/800/810 Internet Tablets, Mac OS X and the iPhone supports synchronizing the system address book. The command line tool 'syncevolution' (that is compiled separately for each of these platforms) performs the synchronization.

Background

In 2006, I became interested in SyncML because I had to replace my mobile phone. I wanted to choose a phone that I could synchronize with my address book, which was in the Evolution email client on Linux. As an open standard, SyncML looked promising and
Funambol already had open sourced a lot of SyncML-related code.

The sync4jevolution project had already been registered atSourceForge, but was empty and unused. So I started from scratch under the name "SyncEvolution", with the initial goal of writing a command line client primarily for contacts, because that was what I personally needed.

Adding more features and helping others to use SyncEvolution was another goal from the start, so in 2006, I also added support for calendar, memo and task sync.

Since the initial releases for Evolution on Linux, I also ported SyncEvolution to the Nokia Internet Tablets. This used the same libraries as Evolution, but with a different underlying technology, requiring quite a few workarounds.

In 2007, SyncEvolution finally left its Evolution roots behind with a port to the iPhone. SyncEvolution is the technology behind Funambol's iPhone plug-in. Since then, "SyncEvolution - the Evolution SyncML client" is dead, long live "SyncEvolution - The Missing Link".

Collateral Damage/Results

The work on SyncEvolution has brought results beyond the tool itself. When I started, the Funambol C++ client library only worked on Windows and Windows-based Smartphones. I ported it to Linux and POSIX-based systems, which provided the basis for several
other projects.

There was also no unit testing or test cases that could be used by developers of SyncML clients. Based on the CPPUnit framework, I implemented automated testing. SyncEvolution has been tested with this system from the initial release. Later, this system was decoupled from SyncEvolution and moved into the Funambol CVS so that now all clients based on the Funambol C++ library can use it.

Using SyncEvolution

SyncEvolution is provided in binary form for different platforms and of course also as source code. After installing a suitable version, the first step is creating the required text configuration files, usually by copying the provided examples and updating a few private fields. After that, the 'syncevolution' command line tool needs to be invoked to perform a synchronization. All of this is documented in detail on the home page.

Future Plans

The 0.7 release is done, with all features originally planned for it completed.

iPhone users are desperately waiting for calendar and memo support. There are no plans to work on that from my side because synchronizing the address book required quite a lot of work and guessing although it was at least similar to the Mac OS X address book.

When Apple releases the native iPhone SDK it might be a lot easier and therefore it makes sense to wait for that.

Further Information

The main home page of SyncEvolution is http://www.estamos.de/projects/SyncML/. It has sections on installation, getting started and compatibility with platforms and different SyncML servers.

My blog is the place to watch for announcements and news around SyncEvolution.
Posted by Fabrizio at 12:33  

2 Comments:

Blogger Nic said...  

Dear Patrick and Funambol team,
thansk for your great work, I use syncevolution all the time. By the way, users might want to take a look at a very nice open source GUI for syncevolution, it's called genesis: http://my.opera.com/freedo/blog/

As for Calendar support, I don't agree that it would be difficult, especially for Patrick, to set it up. It is already possible to sync evolution-calendar/google-calendar --> native iphone calendar using libical and a sqlite template. This works very well here, but only through ssh so far. It could be integrated easily into the funambol gui on the iphone to sync with the servers.

libical (LGPL): http://sourceforge.net/projects/freeassociation/

ical2sqlite:
http://wayetender.spawnpoint.com/post/1162/Sync_iPod-iPhone_Calendar_on_Linux
https://code.launchpad.net/ical2sqlite

As for syncing notes and todo list, the author of the MobileTodoList (native app on iphone) would be more than happy to sync using Funambol. The beta version 0.6b is extremely powerful with notes, todo, alarms et al.

MobileTodoList homepage:
http://www.include7.ch/index.php?page=iphone_mobiletodo

0.6 Beta:
http://www.include7.ch/mobiletodolist/MobileToDoList-06b.zip

You are very close to offering a complete package, please keep going! Your work is very appreciated.

Nic

Comment Posted at 04:38

Anonymous Ingvar Hagelund said...  

Syncing the iphone calendar from Linux: I wrote a perl wrapper for ical2sqlite that parses my ical data (from OpenXchange). Read my blog post at

http://ingvar.blog.linpro.no/2008/03/12/syncing-your-ical-calendar-to-the-iphone-from-linux/

Ingvar

Comment Posted at 12:21

Post a Comment

Links to this post:

Create a Link

Back to My Blog