Synchronize Horde with Outlook

It looks like it's finally possible to synchronize Horde with Outlook, using an external connector and the latest development code of Horde from CVS.

Karsten did it again. He refactored the SyncML code another time, implementing some of the missing bits to complete Horde's synchronization library.

We have DevInf (Device Information) support now, which means that adding support for a SyncML client that is not supported by default, because it "speaks" a variant of the standard implementation, is as easy as writing a small class that extends the default DevInf class. So far we have support for the P800/P900/P910 class of mobile phones and Sync4j. Several people are currently trying to get Nokia phones, Blackberry, and Synthesis clients for PocketPC and Palm working.

Very interesting is the support for Sync4j. Sync4j is the SyncML implementation for Java, and when we started implementing our PHP library they us offered to help writing a PHP plugin for their framework instead. Well, we went another road but are now getting together again, because they also developed a SyncML client that works with Microsoft Outlook, PocketPCs and Blackberry. We now support this client with our server so it's finally possible to synchronize your Outlook data with the Horde Groupware applications. Don't expect this to work without any glitches, this is still very early development code. But you can find instructions how to get it working on the bottom of Karsten's announcement.

Another change, not less important, is the abstraction from Horde specific code. The SyncML code used to be tied very closely to several components of the Horde framework like authentication, session handling, but of course also data export and import with the actual applications, and mapping between object IDs of the client and the server applications. Step by step this coupling is abstracted out to a general backend driver that applications or frameworks that want to use the library need to extend. Horde would then only be another concrete implementation of this driver. These changes are not complete yet, but with other projects currently trying to integrate the SyncML library into their own projects, they might get another boost.