Version 9 (modified by Pat Tressel, 9 years ago) ( diff )


BluePrint: Plugins


A plugin is any modification to a system that can be applied independent of the base installation. Supporting plugins would allow people to extend Sahana Eden without their code needing to be added to trunk, and keeping their trunk install clean. This helps prevent merge conflicts between a customized site and trunk, and reduces the pressure to fork. It is possible that even some features offered by Sahana could be delivered as plugins.




The End-User wishes to be able to browse a repository of plugins, viewing their names, descriptions & who maintains them. They wish to be able to click on a plugin to easily install them into their running instance of Eden.


The Developer wishes to be able to develop new functionality which extends a base Eden install without needing to have anything added to Trunk.

This functionality may include:

  • Modules
    • Models
    • Controllers
  • Template
    • Settings
    • Prepop
    • Controller Customizations
    • Parsers
  • Theme
    • Views
    • CSS
  • Widgets
    • Applying the Widgets to existing modules would be done in controller customizations in templates


  • A plugin is a Web2Py application which acts as a co-app to the main Eden instance.
  • The plugin will have standard files to identify itself to Eden:
    • Metadata (Name, Description, Maintainer)
    • Menu entries
    • List of Modules to be added to Auth UI
  • The Eden instance can be configured with a list of plugins using settings.plugins = ["plugin1", "plugin2"]
    • This could be done in either models/ or a Template (unless this plugin includes the Template!)
    • Q: How can we download these from a URL if not found?
  • S3Menu to be extended to read the settings & add additional menu entries found in those folders
    • Templates which don't use S3Menu will not support these, but that's seen as a bug in these templates

Future extensions


Once implemented the design will move here:


Note: See TracWiki for help on using the wiki.