Helma Logo
main list history

Plugin Manager Module

Plugins are Modules that are not part of the Helma distribution. The plugin manager is a module that automates the process of installing, updating and uninstalling plugins in Helma NG.

The initial plugin manager implementation is scheduled for Helma 0.3 and will have a shell interface. Later versions may feature an additional web interface.

Use Case

A typical plugin manager session may look like this:

    helma> importModule('helma.plugins', 'plugins');
    helma> plugins
      installed: 3 plugins
      updatable: 1 plugin
      available: 2 plugins
    helma> plugins.updatable
      module name:  profiler     installed: 0.2    available: 0.3
    helma> plugins.updateAll()
      fetching profiler... done
      updating profiler... done
    helma> plugins.available
      module name:  markdown     author: ...       version:  0.1
      module name:  test         author: ...       version:  0.3.1
      module name:  imageutils   author: ...       version:  0.6
    helma> plugins.describe('test')
      module name:          test
      version:              0.3.1
      author:               Foobert Meyer <foobert@domain.com>
      description: 
        A unit testing framework for Helma NG. 
        Version 0.3.1 features enhancements in the shell interface 
        and a redesigned web interface.
    helma> plugins.install('test')
      fetching test... done
      installing test... done
    helma> 

Implementation

The plugin manager uses HTTP to fetch meta data and plugin archives from a remote plugin repository. The plugin repository uses a simple directory structure to store plugins and provides JSON formatted metadata. How metadata is organized among a central plugin list and per-plugin files, and how much information about available plugins and versions can be delegated to directory structure conventions remains to be seen.

The initial plugin repository implementation will be maintained by hand. Of course we'll want an application to manage the repository rather soon, but this is not a goal for the Helma 0.3 release. Also, adding or editing plugin repositories is not a goal for Helma 0.3.

The plugin manager will maintain local information about installed and available plugins using JSON files. The plugins themselves will be fetched as zip files. Internally, plugins are just NG modules and can contain JavaScript files, jar files, configuration files and any other kind of file resources. Whether plugins are unpacked in the NG modules directory, in a separate plugins directory, or not unpacked at all (i.e. added as zip repositories) remains to be determined.