Plugin System Architecture
I am trying to draft out a design for a plugin architecture. Included Is a simple diagram scribing my thoughts:
I am not sure if this is correct. This is what I think I am trying to achieve (for a 3d modeling app (this maya/3dsmax etc):
1) A Document is a working page / scene.
2) Loading a plugin is different for windows and unix (dll vs .so etc)
3) Two Main Types Of plugins: AppPlugin which doesn't alter the state of a document (save, export etc). DocPlugin which alters the state of a document (Create A 3D Shape In The Scene, Polygon Modifiers etc)
4) Plugins Are Loaded on-demand and organized by a single plugin registry that is controlled by a single kernel.
5) One kernel can have multiple documents and each Document consults the kernel when it wants to load a plugin and use it etc.
Any design ideas would be welcome also.