Bug 380553

Summary: make plugin system more modular and generic
Product: [Applications] rkward Reporter: Thomas Friedrichsmeier <thomas.friedrichsmeier>
Component: generalAssignee: RKWard Team <rkward-devel>
Status: RESOLVED FIXED    
Severity: wishlist    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: All   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Thomas Friedrichsmeier 2005-04-25 17:41:12 UTC
-- This ticket was imported from http://sourceforge.net/p/rkward/feature-requests/19 on 2017-05-31 14:48:55 +0100 --
This is one of my long-term TODOs. I'm placing 
it in the Feature-Tracker in order to have a place, 
where I collect my thoughts about how this can 
be done. Consequently, some information in 
this tracker-item may be rather cryptic. Sorry 
about that. 

The plugin system should be reworked to be 
more modular. At the core there will be a class 
like "RKPluginComponent". 

The main ideas are: 
\- Plugins should be able to simply "include" 
certain components. E.g. a plugin to calculate a 
correlation could include a component to 
generate a scatterplot for this relation. 
Improvements in the scatterplot-component 
would automatically be available in the 
correlation plugin, and there would be no need 
to duplicate code. 
\- 
https://sourceforge.net/tracker/index.php?func=detail&aid=1069570&group\_id=50231&atid=459010 
Allowing a notebook or SEMMA-approach, i.e. a 
GUI-variant where you simply connect a series 
of calculations to each other 
\- Easy hooks to create plugins / plugin 
components using e.g. pyQt. I.e. implementation 
of a plugin / component should be easily 
possible in different languages. 


A plugin-component will have several 
components: 

\- A list of named input slots: 
For instance a component to transform a vector, 
will have an input slot for a numeric R object. 
\- A list of named output slots: 
Also this component will have an output slot for 
a \(transformed\) numeric R object. 
\- A QWidget derived GUI, allowing to set some 
options \(e.g. type of transformation\): 
There should be specialized input slots for each 
option settable in the GUI, so those options can 
be set from outside 
\- Further specialized input slots, e.g. controlling 
the visibility / enabledness of the GUI options 


Each plugin component will have to implement 
certain calls. Most importantly the 
code-generation function currently executed 
\(exlusively\) in PHP: 
preprocess \(\), calculate \(\), printout \(\), cleanup \(\). 
The plugin component will have to return 
meaningful \(or empty\) R-code on each of these 
calls depending on its settings. 
When used as a standalone plugin, this will 
work roughly as it is now. When included in 
another plugin, the including plugin will have to 
also "include" those code-sections. 
Each component may rely on the current 
PHP-backend to accomplish code-generation or 
use its own mechanisms. 


Further ideas: 
\- Special components that can be used by the 
main app, e.g. as import/export filters 


Main problems \(incomplete list\): 
\- Find a good description of input/output slots. 
This will have to include information on types of 
input allowed / output generated, whether an 
input is mandatory, whether an output is 
available with current settings, etc. 
\- Find out how e.g. pyQt-generated QWidgets 
can be integrated in ones generated by rkward. 
Comment 1 Thomas Friedrichsmeier 2006-03-26 18:12:52 UTC
Logged In: YES 
user\_id=300591

The main concepts of this feature request have been 
realized. Other long term items will be tackled when the 
time comes. Closing this item for now.
Comment 2 Thomas Friedrichsmeier 2006-03-26 18:12:52 UTC
- **status**: open --> closed