Kontact and Citadel – experiences

kde-logo-official
While there are many FLOSS Groupware servers out there, hardly any one them is reliable working with any FLOSS client. Recently my company had to bring Citadel and Kontact together, and we used the opportunity to patch while we go.

Background

Recently my company, the credativ GmbH, was faced with the task to sync the usual groupware data (calender, tasks, addresses) between a mobile phone and a PIM client – using FLOSS and via Internet. The natural solution of course is Funambol to get the data of the phone. The next step is to connect that one to a groupware server and access the server via a well known KDE 3 groupware client.

However, having a closer look at the currently available FLOSS groupware solutions was quite disillusioning. While there are many nice servers, there are hardly any solutions where a server works correctly with a client. The best working example is maybe Kolab-Kontact, but Kolab doesn’t work easily together with Funambol. Actually, the current groupware-Funambol connector only supports three groupware servers: Citadel, OpenGroupware and eGroupware. For various reasons we settled on Citadel, and now the task was to check how well this works together with Kontact.

Citadel

Citadel is rather unique in the groupware world. It is one of the oldest projects, and started off as something different than it is today. For that reason there are many historically grown things – like the room concept. However, once you get used to that the server is quite usable, and the developer community was very helpful.

Regarding the described setup there were only smaller things to fix, and the Citadel guys did that for us, so thanks to them. Citadel still desperately needs a theme which is pleasing the eyes – the current one looks horrible. But that is a task for a web designer and can come after the code basically works.

Kontact – solved problems

Kontact has quite some problems on many levels. The main reason behind all these problems is the protocol: there is no single open standard for doing groupware stuff, there are many different. There is though Groupdav, an attempt to create such a common standard, but until now Groupdav is still a proposal, and besides some missing main functions (no notifications when the content was changed, for example) it wasn’t accepted by everyone. As a result, the current Groupdav support in Kontact is mixed, and we tried to check what worked, what didn’t, and what was fixable for us.

The first problem was that Kontact of KDE 3 has problems with special characters like German umlauts. That is described in Bug #159795, and the patches necessary to fix that behavior are added to the bug report. This is fixed in KDE 4 anyway, so the patch is only interesting for people who are working with Kontact of KDE 3.x for some more time.

The second problem was that tasks flagged as complete were not synced properly – at least, the complete flag part wasn’t synced. When in Kontact a task was flagged as completed it didn’t show up as such on Citadel and vice versa. The problem seems to be that Kontact looks at the percentage value of the completion while Citadel looks at the parameter ‘COMPLETED’. See Bug #171905 for more details – and a patch.

The base for the third problem lies more in the groupdav protocol than in Kontact: there is no mechanism defined to inform the client that the content on the server has been updated. That is sad – and requires the client to pull for changes. This is not properly implemented in Kontact. Therefore we settled on a hack: whenever a resource in Kontact (addressbook or organizer) is deactivated and again activated, the content is reloaded. We decided to trigger exact that action with a refresh button.
Immediately the question comes up if that should not be triggered by time, but the usual work flow in an office is: “Hey, Joe, it’s me, John, have you seen the new appointment I just added to your calendar?” – a time base pulling would confuse the user, a button to pull would not. The bug to this problem is Bug #175409 – including the patches.

Kontact – problems still valid

While we were able to fix some of the problems (hurray Open Source) there are still some things left: we were not able to properly implement a working Free/Busy system with Kontact and Citadel. This is definitely due to some rather strange bus in Kontact, and will require quite some rewrite of Kontact’s resource plugins. But since Akonadi will be out soon the question is if that should be fixed now or if we should wait until Akonadi is out and then have another look at it.

Final words

Kontact and Citadel do work together somehow. And the bits which are missing can be fixed. However, it is clear that Kontact developed into something which was not planned originally, and that a revolutionary change is needed.
Akonadi will hopefully bring this change, but currently it is not there yet.

But even if Akonadi arrives right in time – and with plugins for all the needs we have – the underlying problem of the broken groupdav protocol remains. It is sad somehow that there are so many fine FLOSS Groupware servers out there but that there is hardly any protocol which is supported by all of them and delivers all the features the users want. No wonder that Outlook/Exchange has such a strong position right now.