Hi guys,

I like this requirement based approach, a few +1, comments and questions below.

Pete Robbins wrote:
Hi Oisin,

Here's the dumb question: What do you mean by "Plugin"? Is it a composite or
group of composites?

Cheers,


Or just a set of extensions packaged in a library that you plug into the runtime?


On 17/08/06, Oisin Hurley <[EMAIL PROTECTED]> wrote:

Hi guys,
I thought I might kick off a thread on pluggability in the C++
implementation to get some ideas rolling around, so while these
are not 'requirements' at all, they might eventually lead to
some ;)

1. Language independence is not an issue here, so all plugins
are described and implemented in C++.

+1, a plugin may want to integrate pieces of code in another language but it always integrates with the Tuscany runtime through C++.


2. It should be reasonably straightforward to make a plugin
with minimum code, so things like base plugin classes as part
of the core are a good thing.


+1, plugins should not be exposed to details of the runtime or interactions that they don't need to know about. Also I'd like to keep the base "plugin" classes as thin as possible, they would be interfaces if interfaces existed in C++.

I'll add a few more requirements here :)
The extension programming model should be easy to understand by people who have read the SCA spec. Using consistent terminology (e.g. an "implementation" plugin/extension contributes the support for a particular component "implementation" type) will help. Also the model used by the developer of an extension should be consistent enough with the model described in the SCA spec. The in-memory model describing SCA assemblies can be optimized for use by the runtime, but it should be easy to grasp by the guy who just read the SCA spec and just understood what a composite, component, service or reference are.

3. Plugins can be loaded on-demand, from dynamic libraries,
and many plugins can be put into a library.


Do you really mean multiple plugins in a library? or one plugin per library contributing multiple extensions? I guess this depends on what we mean by plugin :)

4. Plugins can be statically linked with an application.


Could you describe the use case you have in mind? Does that apply to just plugins? or the whole runtime?

5. Plugins should be evictable too, provided that this feature
is supported on the target platform.

6. There will need to be some kind of manager thingie to keep
track of plugins and their state at runtime.


I've been thinking about this and wondering what the architecture of the runtime will be with many different plugins? Are you guys envisioning one big process with different (maybe incompatible?) libraries loaded in it? or a more distributed architecture with multiple processes? I must admit I've been toying with the idea of having multiple processes handling the various component implementation types and binding types, then it would be quite easy to bring them up/down... What do you think?

7. Plugins need to support an interface for initialization
and shutdown at the least. There will need to be some kind
of simple lifecycle put together. Request for lifecycle
transitions will need to support parameters

+1 for a simple lifecycle interface. What kind of parameters do you have in mind?

8. Plugins have names. Easy.

+1
9. Plugins have versions, and dependencies on other plugins too.


We may want to get there at some point, but I was not sure that we really needed this to start with... Would it make sense to stage this and start with a simple solution with no versions and no dependencies, and get into the whole versioning / dependency / coexistence of multiple versions etc. later?

10. Plugins describe and can validate their own configuration.


+1, I like the idea of having plugins describe their own config and handle the validation. Are you talking about things that the installer or system administrator can configure, for example the python implementation extension will look for scripts in a specific directory, which needs to be configured? or are you talking about configuration described in SCDL documents?

11. Plugins need to be signable, or equivalent.


May be a dumb question, but is this different from signing the core Tuscany runtime?

Comments?


One more requirement... Our pluggability story should cover the following additional aspects: - validating SCA application artifacts (for example an <implementation.python> element in a .composite file) and reporting errors in a meaningful way (the python extension should tell the application developer that the python script he specified in file sample.composite on line 23 cannot be found) - contributions to any codegen / build / install / configure steps required to get the particular implementation, binding or policy working - contribution to our administration and monitoring story, which still needs to be defined :)

--oh

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to