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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
plug-in_architecture [2011/03/11 13:51] demiankatzplug-in_architecture [2015/08/25 15:37] (current) demiankatz
Line 1: Line 1:
 ====== Plug-in Architecture ====== ====== Plug-in Architecture ======
  
-===== The Problem ===== +// The content of this page is very outdated and has been deleted to prevent confusionThose interested in reading it for historical reasons can find earlier revisions in the history of the wiki//
- +
-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. +
-This [[http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP_2|feature comparison chart in Wikipedia]] may be helpful. +
- +
-=== 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 [[http://codeigniter.com/|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). +
- +
-=== Kohana === +
- +
-[[http://kohanaframework.org|Kohana]] is a PHP framework similar in many ways to Ruby on Rails. +
- +
-==== Borrow ideas from Rails? ==== +
- +
-Obviously, VuFind is going to remain a PHP-based project; if you want discovery on Rails, [[http://projectblacklight.org/|Blacklight]] has that territory well covered, and Rails' very heavy dependence on naming conventions would make migration from existing legacy VuFind code unnecessarily complicated.  However, it's not a bad idea to borrow some design principles from Rails.  Here are a couple of ideas that might be helpful to VuFind: +
- +
-  * Render shared page layouts AFTER action-specific page contents -- this way you can pass page-specific details (like title tag contents) from template to template rather than having to embed it in the controller. +
-  * Share the URL routing logic with the templates so that the same logic which resolves incoming requests can also be used to build outgoing links. +
- +
-(feel free to expand this list if you have strong feelings about any other Rails conventions) +
- +
-==== 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?+
 ---- struct data ---- ---- struct data ----
 +properties.Page Owner : 
 ---- ----
  
plug-in_architecture.1299851490.txt.gz · Last modified: 2014/06/13 13:13 (external edit)