[Opensim-dev] moving away from grid vs. standalone

diva at metaverseink.com diva at metaverseink.com
Wed Apr 29 18:50:51 UTC 2009


Justin Clark-Casey wrote:
> I like this generally but I do have the following comments.
> 
> 1.  I'm not a huge fan of this since, like Stefan, I'd ideally like it to be possible to package an OpenSim that 
> supports only a single architecture, with no trace of other architecture code in there at all.  Putting everything into 
> one dll makes this impossible, though perhaps it's not really that big a deal.  Is it really not possibly to do this via 
> plugins (where the hg code relies on the presence of local service plugins?).

OK. It might be possible to merge the hypergrid-related conditionals in 
the connectors of what's currently known as OGS1. If that's possible, 
then we'd have two dlls:

OpenSim.Region.ResourceServicesConnectors.Local.dll
OpenSim.Region.ResourceServicesConnectors.Remote.dll

Where "Remote" means calls to local and remote services out there, and 
not just to the ones associated with the grid; so includes calls to, for 
example, user services of foreign users -- if the sim is configured to 
deal with them.

We already have the dependency OGS1 depends-on Local, that would 
continue to be, that is, Remote depends-on Local. So the fact that a sim 
uses the Remote dll doesn't mean that all calls to services are remote 
calls; some may be local.

> 2.  On your previous suggested ini stuff, in my opinion something like
> 
> UserService = { local | remote }
> 
> would be clearer than
> 
> LocalUserService = {True|False}
> 
>  From what I remember, specifying remote is understandable even if the services are actually on the same machine (but 
> one has chosen to run them as separate processes).  Local would naturally denote the use of services in the same process 
>   as the simulator.

Actually, there's a subtle but very important difference in the case of 
hypergrid. A standalone grid wanting to allow Guests would have to use 
the Remote dll, even though the service for local users is local.

This is, in fact, the kernel of the complexity here. Local has been 
designed to be Sandbox connectors, and OSG1 has been designed to connect 
with exactly *one* of each type of service. All remote calls in it 
hardcode serversInfo.xxxURL.

The Hypergrid needs the regions to interact with *several* of each type 
of service, potentially, including the local one. So, most of the 
hypergrid changes have to do with determining local vs remote and, if 
remote, determining the service URL, making it a variable instead of a 
constant.

The question is: do you want to hold on the the 'old' grid model, 
*architecturally speaking*? (not behaviorally) Or do you want to 
generalize the architecture, and then let people configure its 
*behavior* with things like

AllowGuests = {True|False}

?

I have a preference for the generalization, but I'm not strongly 
pushing, I can go both ways.
The thing that *really* needs to go is this

gridmode = {True|False}

This is an absolute show stopper; it binds us down to two monolithic things.

So if we want to keep 3 architectures around, as separate architectures 
(and not one, more general), we have a meta option here:

ServiceConnectors = {Sandbox|LLGrid|Hypergrid}

With this, I can make the hypergrid architecture have configuration 
variables to be able to generate all of the behaviors of Sandbox and 
LLGrid, and more -- basically place the ideas on my original email under 
the Hypergrid mode, and leave the other two as they are now.




More information about the Opensim-dev mailing list