In this example, the subsystem tag <subsystem name="GuiCore"> is just a
holder of multiple <plugin> tags. When core.rb parses this file it
merely iterates over the contained <plugin> tags and creates them. The
subsystem is not represented in the running FreeBASE system and the name
is ignored. What I propose is that when the core.rb file reads in an
xml file that contains a <subsystem name="..."> tag it creates a plugin
(just like the <plugin> tag does) that is named as specified (GuiCore)
and has a dependency of all the plugins within it. It would be like
doing this:
<plugin name="GuiCore" version="1.0" autoload="true">
<module>FreeBASE::SubsystemPlugin</module>
<dependency state="LOADED" action="start">
<when plugin="GuiSetup" version="*" state="RUNNING"/>
<when plugin="AppFrames" version="*" state="RUNNING"/>
<when plugin="MenuBars" version="*" state="RUNNING"/>
<when plugin="MenuPanes" version="*" state="RUNNING"/>
<when plugin="EditPanes" version="*" state="RUNNING"/>
</dependency>
</plugin>
This would allow something that depends on this entire subsystem to be
dependant on it instead of its components.
<plugin name="FooPlugin" version="1.0" autoload="true">
<require>...</require>
<module>...</module>
<dependency state="LOADED" action="start">
<when plugin="GuiCore" version="*" state="RUNNING"/>
</dependency>
</plugin>
Does this make sense?