About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
plug-in_architecture

This is an old revision of the document!


Plug-in Architecture

The Problem

Upgrading and extending VuFind should be easier – especially when it comes time to upgrade to a new version. If we are going to significantly overhaul the VuFind code for a 2.0 release, building a new architecture that makes extensibility cleaner and easier should be a high priority.

The Current State

VuFind currently has several different types of plug-ins (authentication mechanisms, record drivers, ILS drivers, etc., etc.). The concept of theme inheritance is also somewhat related. Where they exist, these mechanisms are useful and powerful, but different mechanisms do not always work in totally consistent ways, and there is not a strong separation between local custom content/configuration and the distributed VuFind core.

Possible Solutions

Feel free to add to this section – the idea is currently to list possible solutions and evaluate advantages and disadvantages.

Use an existing PHP framework?

Since VuFind's initial release, many frameworks have appeared which simplify the construction of a web application. We should look at these and see if any would be suitable for VuFind.

Zend Framework

This one is relatively lightweight and seems like a good candidate if we are also interested in making use of Maven.

CodeIgniter

Another popular lightweight framework, available here.

Joomla

This project advertises itself as both a CMS and an application framework. The CMS element might be a nice bonus feature, but at the same time, tying VuFind to a particular CMS might become an obstacle to adoption (the same argument goes for Drupal).

Reconsider Smarty?

Smarty templates are not as popular as they once were, though they may still serve some useful functions within the library environment. We should consider alternatives, especially if it helps make VuFind development less complex and more consistent.

Does PHP 6 Help?

PHP 6 is going to introduce namespace support – might this be helpful for differentiating between VuFind core and local modifications in a straightforward, unambiguous way?

plug-in_architecture.1295971562.txt.gz · Last modified: 2014/06/13 13:13 (external edit)