Plugin Specification - MiracleBlue/JSaw GitHub Wiki
This page is for discussing and jotting down ideas for the plugin specification as it is being developed
In order to make it easy for people to develop their own plugins for JSaw, we need to approach the development of the system that handles plugins from a bottom-up perspective. Before we can know how to develop the API, we must first decide how it should be used, and what plugins should look like.
A successful plugin system should, ideally, have these attributes:
- All plugin components should be packaged up as one "thing"
- Settings, parameters and properties that are used within the plugin which are publicly modifiable by UI controls are to be grouped by their particular use or component, and are to be initialised and stored in one place
- UI construction should more or less be automagic for certain aspects of plugins such as the settings panel and common parameters and components. However, there should also be a method for defining custom user interface components, following certain rules, in order to make sure any custom UI code plays nicely with the rest of the application
- Each and every plugin should have its own unique identifier. An idea would be to have something similar to application UUIDs which take the form of backward URIs, such as "com.miracleblue.myplugin"
- Plugins should take the form of generic roles, such as a "Generator" for instrument generator plugins, "FX" for effects processing plugins. There are also other roles that should be made available, such as plugins that interact directly with sequencers, or that can automate controls in other areas of the application.