RFC Name : Auto Plugin Install

Editor(s): ...

TableOfContents([2])

About this document

This is an official Request for Comment (RFC) for Add your text here.

For details on RFCs in general, check out the [http://www.answers.com/main/ntquery?method=4&dsid=2222&dekey=Request+for+Comments&gwp=8&curtab=2222_1&linktext=Request%20for%20Comments Wikipedia Entry: Request for Comments (RFCs)]

Status

How to Comment

To view/add comments, click on any of 'Comment' links below. By adding your ideas to the Wiki directly, we can more easily organize everyone's ideas, and keep clear records. Be sure to include today's date and your name for each comment. Here is an example to get things started: ["/Comment"].

Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the RFC makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.

Proposal

Cytoscape plugins are mainly developed by third parties to add extra functionality to Cytoscape. Many plugin authors are willing to share the plugins they developed. Cytoscape maintains a long list of plugins at Cytoscape website at (http://cytoscape.org/plugins2.php) and the list is growing over time.

Right now, if a user wants to install a plugin, he/she can only do it manually. (1) Look at the Cytoscape website or the plugin website he/she knows. (2) Download the plugin, (3) Install the plugin into the Cytoscape. To manage the plugins (add/delete/update), user needs to keep track of each plugins manually and must know where the Cytoscape plugins are placed (in a designated directory).

The goal of this project is to provide a “Plugin manager” at Cytoscape to automate the the plugin installation process, so the users will have GUIs to manage their plugins (add/delete/update). The GUIs will integrate Cytoscape, plugin website, and installation process together and user even don’t need to know what the designated Cytoscape plugin directory is. We also note that “Firefox” and “Eclipse” already have such practice to add their add-ons.

This project should include three components: (1) plugin database (2) plugin web site (3) plugin manager

Use Cases

Load a plugin “BiNGO” into Cytoscape with Plugin_Manager.

1. Launch Cytoscape, click menu “Plugins”, click submenu “Import/update plugins”.

2. A dialog with title “Plugin manager” shows up. All the plugins installed are listed in the JTable. There are three buttons at the right side of JTable, “Get plugins”, “Uninstall” and “Find Updates”.

3. Click the button “Get plugins”. A new dialog with title “Plugin List” pops up, which list all the plugins available (Retrieved dynamically from “CyPluginDB”). In the dialog, there is a JTree, which list five categories of Cytoscape plugins (“Functional Enrichment plugins”, “Analysis plugins”, “Network and Attribute I/O Plugins”, “Network Inference Plugins”). Click the tree node “Functional Enrichment plugins” expands the node, which list all the plugins belong to this category.

4. Click “BiNGO”, a new dialog with title “Add BiNGO Plugin” show up, which gives detail description of the plugin. A plugin may have several versions for download. Each radio button represents plugin versions that are compatible with the current Cytoscape version. There are three buttons at the end of the page, “Install”, “Use once”, “Cancel”. – If multiple versions are compatible might the user expect a description for each one so they can tell which one they want? If not offering the most recent version by default may make more sense.

5. Selected the version of plugin, click “Install” button will initiate the installation process. (License agreement dialog and progress bar) If “Use once” is clicked, the plugin will be load into memory only, not persist in disk.

6. After Installation is completed, an info dialog will inform the user that the plugin is installed.

Data flow diagram

attachment:DataFlowDiagram.png

Note: The web site may be built with PHP and MySQL. Cytoscape will have different versions. Plugins will also have different versions. Different versions may not compatible each other. Therefore a dynamic web site with database as back-end is desirable to retrieve plugins, which are compatible with current Cyoscape version.

Plugin database

Host: chianti.ucsd.edu Database name: CyPluginDB

* Current Design:

attachment:CyPluginDB_Schema.png

Plugin webpages

Host: cytoscape.org

1. Main page, which lists all the plugins. Same as usual, but data source will be from CyPluginDB. If the DB is updated, this page will be updated automatically.

2. Pages for each plugin

getPlugin.php parameters: PluginName

Plugin data management

1. Plugin author submit plugin to Cytoscape pluginSubmit.php (Web form)

Title: Submit Plugin to Cytoscape (File_upload) Authors: xxx Plugin_Name: textField Plugin_version: textField Release Date: May 2, 2005 Institution: textField Jar File: textField Verified to work in Cytoscape version: 2.3, 2.4 (checkboxes) Plugin URL: XXXXXXX.com

Submit button, cancel button

2. Load plugin to CyPluginDB after validation pluginLoading.py (web form, password required to upload, DB admin only) (ToDo: ScreenShot)

Plugin Manager

1. Manager makes http fetch request to given url (default to cytoscape.org), expect back an xml document with information about all available plugins:

<project>
  <!-- global info regarding the project these plugins come from -->
  <name> Cytoscape Plugins </name>
  <description> Test </description>
  <url> http://cytoscape.org/plugin-inquiry-url </url>

  <pluginlist>                          
        <plugin>
          <uniqueID>Some text that is the same from one version to the next</uniqueID>
          <name> foobar </name>
          <description> blah </description>
          <pluginVersion> 1.0 </pluginVersion>
          <cytoscapeVersion> 2.5 </cytoscapeVersion>
          <!-- jar or zip supported -->
          <filetype> jar </filetype>
          <category> Enrichment </category>
          <url> http://url/to/download/jar-or-zip-file.xxx </url>
          <authorlist>
            <author>
              <name> </name>
              <institution> </institution>
            </author>
          </authorlist>
        </plugin>
  </pluginlist>
</project>

User gets dialog box with plugins available for cytoscape version in use. This makes it easy for anyone else to set up a document for plugin downloads at their own site in case they don't submit to us.

PluginMgr (public methods)

Registering a Plugin

public class MyPlugin extends CytoscapePlugin 
  {
  public MyPlugin()
    {
    // do all my work
    }

  public PluginInfo getPluginInfoObj() 
    {
    PluginInfo Info = new PluginInfo(); 
    Info.setName("MyPlugin");
    Info.setDescription("Just something to show the user");
    // this is free text but all core plugins are of category 'core'
    Info.setCategory("core"); 
    // used to check for updated versions
    Info.setPluginVersion("0.5");
    Info.setCytoscapeVersion("2.5");
    }
  }

Any of the methods above that are not set are set to some default values when new PluginInfo() is called. CytoscapeInit uses the PluginManager to register all plugins. A plugin installed through our new system will have this information already set through the xml describing it. Any plugin installed through another process is encouraged to use the PluginInfo object to give as much information as possible about the plugin.

Implementation Plan

Deferred Items

Open Issues

Backward Compatibility

Plugins that do not implement the getPluginInfoObj() method and are not installed through the xml above will still be listed in "installed plugins" but will have less information.

Expected growth and plan for growth

References

Comments

PageComment2

Funding for Cytoscape is provided by a federal grant from the U.S. National Institute of General Medical Sciences (NIGMS) of the Na tional Institutes of Health (NIH) under award number GM070743-01. Corporate funding is provided through a contract from Unilever PLC.

MoinMoin Appliance - Powered by TurnKey Linux