[Kolab-devel] web groupware

Gunnar Wrobel wrobel at pardus.de
Wed Feb 28 16:18:44 CET 2007

Hello Thomas,

> Here you go:
> http://www.intra2net.com/de/produkte/opensource/groupware/kolab_cache_20070222.tgz
> I've included a readme.txt with a description of all files. The most important 
> one is Kolab/Store.php. It does all the syncing and caching. All driver 
> implementations just make use of the store and XML converter (Kolab/XML.php).
> Let me know what you think.

now I had the time for an in-depth look at your code. I still think it
is the right approach and I tried to identify the necessary steps in
order to convert the code so that it fits the current Horde
framework. One question: It is open source and may be integrated into
Horde, right? The headers do not explicitely state that so I wanted to
be certain.

The following represents my current view - which is bound to change
while the code evolves :)

The current situation of the Kolab driver:

Currently the Kolab.php driver in the Horde framework provides a
rather shallow wrapper for some of the functionality necessary to work
with Kolab groupware objects (events, tasks, addresses, etc.). It
encapsules the necessary IMAP functionality and provides some basic
XML processing tools. But the functions exported are still very low
level and basically each of the Horde groupware applications (like
mnemo, nag, kronolith, etc.) need to implement their own driver that
knows how to handle the XML format.

Your cached driver:

The new model you present does not allow the different groupware
applications to directly modify the XML objects but uses hashes to
communicate the groupware object values to/from the Kolab driver. This
is a very good thing because the apps themselves should definitely
have no knowledge of the specific XML format involved. In addition the
Kolab driver is then free to implement storage of these values using
different mechanisms. In your case the storage mechanism provided is
the cached IMAP driver that will allow fast access to the groupware
objects. Two groupware objects have been implemented: events and

Integrating your code into Horde:

I would suggest a number of distinct steps in order to integrate the
caching driver into Horde without breaking too much of the current

 1) Splitting the current Kolab driver into a "Base driver", an "IMAP
    Storage driver" and a "XML groupware object driver". This first
    step will only provide a solution that allows to continue using
    the current structure but that can be deprecated later.

 2) Rework the "Base driver" to accept groupware object data as a
    hash. Adapt the "IMAP Storage driver" to this change.

 3) Create four XML groupware drivers that specifically handle tasks,
    events, addresses and notes.

 4) Rework the Kolab drivers of mnemo, kronolith, nag, and turba to
    work with the new hash based scheme instead of manipulating XML

 5) Add the cached storage driver.

Does that sound reasonable? Any comments from the people interested in

Currently I plan to start this conversion some time next week but I'll
also wait and see if I get reactions to this plan.



____ http://www.pardus.de _________________ http://gunnarwrobel.de _

    >> Mail at ease - Rent a kolab groupware server at p at rdus <<

p at rdus Kolab work is funded in part by KDAB and the Kolab Konsortium

More information about the devel mailing list