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
Last revisionBoth sides next revision
plug-in_architecture [2011/01/25 16:09] demiankatzplug-in_architecture [2014/06/13 13:14] – external edit 127.0.0.1
Line 12: Line 12:
  
 Feel free to add to this section -- the idea is currently to list possible solutions and evaluate advantages and disadvantages. Feel free to add to this section -- the idea is currently to list possible solutions and evaluate advantages and disadvantages.
 +
  
  
Line 32: Line 33:
  
 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). 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? ==== ==== Reconsider Smarty? ====
Line 41: Line 55:
  
 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? 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?
 +
 +
 +
 +===== Redesign Goals =====
 +
 +As of 4/8/11, these are Demian's thoughts on reasonable goals for the redesign.  These presume certain answers to some of the questions above.  It's all still negotiable, so feel free to add comments.
 +
 +  * Maintain existing URL routes for compatibility, while potentially offering improved alternative routes
 +  * Maintain compatibility with existing configuration files (either directly or via an upgrade script)
 +  * Replace existing controller model with something more flexible (for example, well-designed context switching would be helpful for providing alternate API-style views)
 +  * Replace Smarty views with something PHP-based
 +  * Reduce external dependencies on obsolete code (i.e. deprecated PEAR libraries)
 +  * Make file organization and class naming more consistent (i.e. sort out the current web/sys quagmire)
 +  * Ensure that everything (models, views, controllers, routes, configurations) can be extended/overridden outside of the core for easy upgrading
 +
 ---- struct data ---- ---- struct data ----
 ---- ----
  
plug-in_architecture.txt · Last modified: 2015/08/25 15:37 by demiankatz