Horde development
From Kolab wiki
A new Kolab specific framework for Horde has been developed during 2005 and 2008. The framework allows Horde a reliable access to the Kolab server for the first time.
The following subsections discuss the different parts that are required to make Horde work together with a Kolab server. In addition any remaining problems or possible improvements are listed.
You might also wish to consult the primary project page for Horde/Kolab.
Contents |
Project status
The new framework was nearly finished with the release of Horde-3.2 and can be considered stable enough for production use. Shortly after the release of 3.2 the framework has seen some drastic structural changes that turn the framework into a developers library and further improve access to the Kolab server.
This new structure will provide the basis for Kolab Server access within Horde for the next few years.
Horde code
Framework
Auth
Horde authentication is implemented based on IMAP authentication. There is a special "kolab" driver for the authentication system implementing this. This driver also allows login via a shorter UID which is remapped to the users e-mail address by accessing the Kolab LDAP tree.
Improvements
- The Auth driver should be capable of handling "special" Kolab users correctly (or at least aid in helping them correctly). "Special" users are administrators, maintainers or domain-maintairs.
Group
A special "kolab" driver exists that implements the concept of "distribution lists" stored in LDAP on the Kolab server. These Kolab Sever groups are mapped to user groups within Horde. Note: Kolab also has the concept of distribution lists that users can store in IMAP. These two should not be confused.
Improvements
- Write access for the administrator could be implemented.
- A file based Group driver could be useful if people want to avoid LDAP usage.
- The group driver should be cleaned up to use the new Kolab_Server module within the Horde framework.
History
The history driver is based on an SQL database and for Kolab an SQLite db is the recommended option.
Kolab_Format
This package provides an implementation of the Kolab format specification.
Developers might be interested in the extended package description.
Kolab_Server
This package provides read/write access to the Kolab Server user database which is stored in LDAP.
Developers might be interested in the extended package description.
Improvements
- The package currently only implements read access to the LDAP database. It should also implement write access. That would allow to convert the Kolab webadmin to use the package as a basis for the GUI.
Kolab
The core system for Kolab support is mainly concerned with cached IMAP access and reading/writing the Kolab format. It also contains some other Kolab specific utilities.
Problems
- The Kolab driver currently does not know how to handle attachments which are allowed within the Kolab format. Issue: 1989.
- There is no collision detection at the moment. If an object is modified at the same time as another Kolab client accessed the object Horde will overwrite the values from the other client. Issue: 1986.
Improvements
- The code in this module needs to be restructured once we reach Horde 4 as there were severe structural constraints whithin Horde 3 that will fall away in the initial development phase of Horde 4
- IMAP access should work through a single class that does not use a special PHP patch if possible.
- The IMAP folder list might benefit from caching, too.
- Speed optimization would be good in many places.
- The code for logging IMAP modifications by external Kolab clients should only react to external modifications and not to modifications done by Horde internally (the current iplementation elicits two History calls for each internal change). CVS
- Support login by non-standard users (such as the manager or domain maintainers). Bug: 6043.
Perms
The "Perms" package implements the Horde specific permission system. It can be based on a SQL database driver and for Kolab an SQLite db is the recommended option.
Improvements
- The Kolab permission system only supports ACLs on IMAP folders at the moment. These map to share permissions in Horde. But the Horde permission system has a broader concept of permissions and it would be nice if Horde with Kolab would support the full range of Horde permission settings.
Prefs
The Horde user preferences have been traditionally stored in the Kolab LDAP tree. This is still the recommended version and there exists a special "kolab" driver that implements this option. There are also other options available for storing the user preferences and you can choose between SQL db, file and IMAP based approaches if you don't want to use LDAP.
Share
The share system has a special IMAP based "kolab" driver.
Improvements
- IMAP specific code should be moved into the Kolab module.
SyncML
SyncML works SQL based. For the Kolab server an SQLite db is the recommended option.
Turba
Turba is the Horde address book application.
Improvements
- Provide support for contact pictures and attachments. This depends on attachment support in the Kolab module. Issue: 1986.
- Complete and/or fix support of distribution lists.
Kronolith
Kronolith is the Horde calendar application.
Nag
Nag is the Horde ToDo list manager.
Problems
- The ID system is still broken and needs to be fixed for SyncML support.
Improvements
- Support for task recurrence in Nag would be nice.
Mnemo
Mnemo is the Horde note manager.
Problems
- The ID system is still broken and needs to be fixed for SyncML support.
IMP
IMP is the Horde mail client.
Ingo
Ingo is the Horde filter manager.
Problems
- Filters are stored in the Horde preferences system. This does not completely work an requires a tiny patch. It would be better to store filters in IMAP.
Dimp
Dimp is the dynamic (AJAX based) Horde mail client.
Mimp
Mimp is the mobile Horde mail client.
PHP code in Kolab CVS
The newer Kolab server now uses the most recent Horde code base and a lot of the old PHP code in Kolab has been cleaned up and partially merged into the Horde::Kolab module (see above).
This provides an overview of the remaining code in Kolab CVS.
kolab-freebusy
This provides the web scripts required for free/busy.
Improvements
- Could be merged into php-kolab or even Horde::Kolab
kolab-filter
This provides the postfix filter scripts required for the Kolab server.
Improvements
- Could be merged into php-kolab or even Horde::Kolab
kolab-fbview
This special application is a modified Horde kronolith solely used for viewing free/busy information. It only exists as a special set of patches.
Improvements
- The remaining patches should be merged into Horde CVS.
php-kolab
This is a combined package of PHP library files containing code for the free/busy system and the postfix filters.
Kolab-Filter
This provides PHP classes for kolab-filter.
Improvements
- Restructure the resource handling to use the current Horde code to reduce code duplication.
- Merge the resource handling into the Horde::Kolab module
- Maybe the whole package could be merge into Horde::Kolab
Kolab-Freebusy
This provides PHP classes for kolab-freebusy.
Improvements
- Maybe the whole package could be merge into Horde::Kolab
kolab-webadmin
The Kolab server web administration frontend.
Problems
- It is hard to write PHP code that looks worse or is less maintainable. This could use some major fixing.
Improvements
- Rewrite this in Horde
