[Opensim-dev] Mono addins within OpenSim -- changes ahead

James Hughes jamesh at bluewallgroup.com
Tue Dec 30 19:07:33 UTC 2014


Could it be that the WindModule in #2 could be a root for submodules?

-BlueWall

On Mon, 2014-12-29 at 19:56 -0800, Diva Canto wrote:
> Since I'm looking at mono addins as a mechanism for managing 3rd party 
> packages for OpenSim, I couldn't help it but also look at the way mono 
> addins are being used within OpenSim. It is very confusing, with 
> extension points being declared on components that have very little to 
> do with the extensions. For example, OpenSim.exe itself defines 3 
> extension points:
> 
>      <ExtensionPoint path="/OpenSim/Startup">
>          <ExtensionNode name="Plugin" 
> type="OpenSim.Framework.PluginExtensionNode" 
> objectType="OpenSim.IApplicationPlugin"/>
>      </ExtensionPoint>
> 
>      <ExtensionPoint path="/OpenSim/WindModule" name="Wind Module 
> Plugins for wind models">
>          <ExtensionNode name="WindModel" 
> type="Mono.Addins.TypeExtensionNode" 
> objectType="OpenSim.Region.Framework.Interfaces.IWindModelPlugin"/>
>      </ExtensionPoint>
> 
>      <ExtensionPoint path="/OpenSim/RegionModules">
>          <ExtensionNode name="RegionModule" 
> type="Mono.Addins.TypeExtensionNode" 
> objectType="OpenSim.Region.Framework.Interfaces.IRegionModuleBase"/>
>      </ExtensionPoint>
> 
> While the first one is a genuine extension point of OpenSim.exe (the 
> object type is defined in it), the other two aren't. Both the WindModule 
> and the RegionModules extension points pertain to types that are defined 
> in OpenSim.Region.Framework.dll. In the code, as well as in intention, 
> these are extensions of OpenSim.Region.Framework. When we add region 
> modules, the main dependency is, indeed, that dll, and it's also the dll 
> that most affects the stability of 3rd party region modules. The future 
> API for region modules will pertain primarily to this dll. So this is 
> the right dll for defining the extension point for region modules.
> 
> OpenSim has an intermediate component for loading and activating region 
> modules, the RegionModuleControllerPlugin, which happens to be an 
> extension of /OpenSim/Startup. If anyone cares to do it, it is possible 
> to disable the current
> RegionModuleControllerPlugin and plugin another one instead that manages 
> region modules differently. I don't see a reason for doing that, and 
> honestly I don't see a reason for RegionModuleControllerPlugin to be an 
> addin in the first place. But that's what it is, and I don't plan to 
> change it. But it adds a layer of confusion about addins in OpenSim that 
> I believe is what what led to the current situation of hanging those 2 
> extension points from OpenSim.exe.
> 
> I really want to fix the broken conceptual model of hanging 
> /OpenSim/RegionModules and /OpenSim/WindModule out of OpenSim.exe. They 
> belong in OpenSim.Region.Framework.
> 
> I have made local changes in my repo that fix this, and it all works 
> correctly. However, this implies that everyone who develops region 
> modules will need to change the dependency of their region module dlls 
> from the mysterious
> [assembly: AddinDependency("OpenSim", "0.5")]
> to
> [assembly: AddinDependency("OpenSim.Region.Framework", "0.8.1")] (or 
> whatever version)
> 
> Also version numbers will change meaningfully from here on.
> 
> This change is trivial -- a global replace will do it.
> 
> I have this ready to be pushed, but wanted to give an opportunity for 
> discussion before I do it.
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at opensimulator.org
> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev




More information about the Opensim-dev mailing list