As is usually the case for me, what started as a quick integration of Sphere Studio with Cell turned into a massive refactoring project:
https://github.com/Radnen/spherestudio/commits/cell-integration
The plugin system is in the process of a major overhaul. Plugin modules are no longer limited to a single role, and can in fact serve many. This is accomplished by having all plugins derive from IPluginMain and then, when they initialize themselves, they can register various roles for themselves, like this:
cellCompiler = new CellCompiler(conf);
starter = new minisphereStarter(conf);
PluginManager.RegisterPlugin(this, cellCompiler, "Cell");
PluginManager.RegisterPlugin(this, starter, "minisphere");
The great part of this system is that RegisterPlugin() takes a reference to the PluginMain, so cleanup is simple:
PluginManager.UnregisterPlugins(this);
The other new addition is Starters. A Starter handles all the details of launching an engine (command line, environment, etc.) so that the IDE doesn't have to care what the details of the engine being used are. As long as a compatible compiler is used, e.g. Cell for minisphere, everything works seamlessly.