Ticket #11 (closed feature: fixed)
Opened 2010-02-15T18:09:12-06:00
Last modified 2012-03-05T14:44:43-06:00
Improve plugins infrastructure
Reported by: | curtis | Owned by: | curtis |
---|---|---|---|
Priority: | critical | Milestone: |
|
Component: | Plugin Framework | Version: | |
Severity: | non-issue | Keywords: | |
Cc: | Blocked By: | #139, #149, #189, #207, #208, #213, #241, #287, #302, #380 | |
Blocking: |
Description
The ImageJ plugin architecture is simple and effective but lacks several desirable features possible with a more sophisticated infrastructure, such as:
- Self-documentation of a plugin's capabilities and expectations (currently limited support with PlugInFilter.DOES_* fields), including typed inputs and outputs
- Distinction between multiple kinds of plugins (e.g., I/O vs. image processing vs. general-purpose; currently limited support in the form of PlugIn vs. PlugInFilter)
- Ability to link plugins together to define workflows (currently done via macros)
This has been discussed in the thread " Plugin infrastructure" on the ImageJX discussion group.
As part of that discussion, Johannes Schindelin has proposed an updated plugin architecture:
- PATCH 0/3 - Proof-of-concept of my plugin architecture proposal
- PATCH 1/3 - A versatile abstract plugin class
- PATCH 2/3 - Add convenience classes to wrap Runnable instances into PlugIns
- PATCH 3/3 - Add an example for a new plugin using the fiji.plugin.Parameter method
We would like to more fully explore this design while maintaining support for legacy plugins. For workflows, we may wish to explore enabling technologies such as OSGi. It may also be worthwhile to check out KNIME for further ideas as well.
Change History
comment:1 Changed 2010-02-16T21:40:31-06:00 by curtis
comment:3 Changed 2011-02-16T13:00:09-06:00 by curtis
- Status changed from accepted to closed
- Resolution set to fixed
The ij-plugin project now has a fleshed-out annotated plugins design, based on initial work by Johannes Schindelin and Grant Harris. It also integrates a more general module/workflow interface hierarchy developed by Aivar Grislis. More work remains, but we have a pretty clear direction for plugins, modules and workflows now.
comment:6 Changed 2012-02-26T20:31:12-06:00 by curtis
- Status changed from closed to reopened
- Resolution fixed deleted
- Milestone changed from progress-report to imagej-2.0-beta2
There are still some outstanding tickets blocking this feature from being fully completed.
comment:15 Changed 2012-03-02T13:14:03-06:00 by curtis
- Owner changed from gharris to curtis
- Status changed from reopened to assigned
comment:16 Changed 2012-03-05T14:38:17-06:00 by curtis
- Milestone changed from imagej-2.0-beta2 to progress-report
comment:17 Changed 2012-03-05T14:44:43-06:00 by curtis
- Status changed from assigned to closed
- Resolution set to fixed
Another technology to investigate is the Java Image Science Toolkit, used by MIPAV to provide automated GUI generation for application plug-ins, graphical layout tools, and command line interfaces. It would be very useful to share plugins between multiple systems such as ImageJ, MIPAV, V3D, ITK/VTK and others.