[Opensim-dev] OpenSim Comms

Cristina Videira Lopes lopes at ics.uci.edu
Sun Dec 28 03:44:10 UTC 2008


Hi,

As some of you know I've been working on improving the sim-sim 
ChildUpdate message to include a lot more information than what it has 
now. This is needed for a variety of purposes, including improving 
region crossings and TPs, but not only. In talking to Melanie and 
Teravus, we decided that since this improvement is going to break 
sim-sim comms anyway, it wouldn't be a bad idea to try something radical 
and do this over HTTP POST instead of remoting.

The good news is that I have this working. But before I commit anything 
to trunk, I'd like to hear from you about OpenSim comms in general, and 
their future. But I don't want this topic to degenerate in the 
conversation about standalone vs. grid. I think that issue is marginal 
here, since this is about remote sim-sim comms, independent of the UGAIM 
services.

 From what I understand, everyone dislikes OGS1 for all sorts of 
different reasons. From where I stand, Remoting in sim-sim comms is an 
unnecessary tie to .Net. This HTTP POST method is really neat, I think, 
and we could move all remote sim-sim comms to use HTTP POST, which will 
make OpenSim  a lot more interoperable (yes, somebody might want to 
write non-.Net simulator and have it talk to OpenSim :-).

But the real question is: should we *replace* the remoting methods in 
OGS1 with this other thing, or should someone do some plugin magic in 
order to be able to configure OpenSim with different communication 
components?

To be very concrete. I started doing this new ChildAgentUpdate method as 
a replacement of the existing one in OGS1. If I commit what I have, the 
previous mechanism for ChildUpdates will disappear into svn history, and 
this new one will pop up in the middle of Remoting (and XMLPRC, mind 
you) methods. I'm not sure this is the right thing to do. An alternative 
is to start another namespace called, say, OGS2, and rewrite all methods 
that use remoting in OGS1 with methods in OGS2 that use HTTP POST. If I 
do this, and without proper componentization, I'll have to do a similar 
trick that I did for the HG, ie. make the comms configuration affect the 
application classes themselves. But it's a little worse than for the HG, 
because the data structures passed around are seriously intertwined 
between Environment.Scenes and Comms. As we make improvements in those 
data structures (as is the case in the ChildAgentUpdate message), we 
need to change Environment.Scenes. Plus, regions using OGS1 won't work 
with regions using OGS2.

So the even more real question is this: do we really want to make Comms 
a replaceable component? Something that can be completely replaced under 
the hood? If so, then componentizing it is a must, and the question is 
how. If not, replacing OGS1 with another thing that serves as references 
implementation of a standard protocol might be ok.

Thoughts?

Crista




More information about the Opensim-dev mailing list