[RCD] Core Plugins

Ziba Scott ziba at umich.edu
Tue Mar 3 23:39:40 CET 2009

Hi Roundcube Plugin API Devs,

I wanted to float a concept out there for feedback: Core plugins. 
Hopefully I haven't missed a discussion about it elsewhere.

A core plugin would be a plugin which is required for roundcube to
function or must at least be replaced by a non-core plugin which serves
the same function.  This is something Drupal has implemented with (in my
opinion) great success.

I believe there would be several benefits to implementing some core,
required elements of roundcube using the plugin api:

* The plugin api is assured to become potent and robust as it's heavily
depended on
* There almost no learning gap between developing/maintaining a plugin
and a core feature.
* This would eliminate the need for code which reads:
    "check for a plugin to do this, otherwise do it the regular way"
* The non-plugin code base becomes smaller and more focused

I'm not proposing there be a concerted effort to re-factor everything as
plugins but making some core plugins could open doors.

In a test branch we plugin-ized a few core things and liked what we saw:

IMAP Caching: 
We replaced all the imap caching calls with plugin hook calls.  Then it
was easy to implement memcache caching instead of sql caching.

Temporary File Handling:
We replaced all the read/write attachments to disk calls with plugin
calls and wrote two plugins: Filesystem, to handle attachments just as
before and Database to handle attachments in a multi-server friendly
way.  Memcache would be another option.

We added a few hooks, re-factored rcube_contacts.php  and rcube_ldap.php
into plugins, and then made a horde contacts plugin.

What do you all think?

List info: http://lists.roundcube.net/dev/

More information about the Dev mailing list