[Opensim-dev] The Future of OpenSimulator

Diva Canto diva at metaverseink.com
Sat Aug 15 16:54:35 UTC 2015


It's really difficult to have a meaningful conversation about the future 
of OpenSimulator without understanding what OpenSimulator really is, 
from a technical perspective.

Dahlia and Misterblue already mentioned it, but I'll mention it 
again.OpenSimulator, as designed by this particular team of developers, 
is a framework or an application server, not a complete product. It's 
full of hooks so that people can create their own products while having 
a good jump start with a bunch of default application behavior. So, off 
the box, it looks like SL (plus a few goodies), as that seems to be the 
default behavior that most people are/were interested in, to leverage 
the existence of the SL viewers; but if you want, it can be made to look 
like something completely different.

The best analogy for what OpenSimulator is is this (courtesy of Apple):
https://developer.apple.com/library/mac/referencelibrary/GettingStarted/RoadMapOSX/books/IntegrateYourCodewiththeFrameworks/Art/house_framework.png

At its core, embodied in the dll OpenSim.Region.Framework, it's a 3d 
scene manager. That's about it; that's all that's hardcoded. The scene 
manager interacts with the rest of the software via a number of 
interfaces that are expected to be implemented in some way or another, 
and that are all dynamically loaded via an external specification 
(plugins). Most notably, there are interfaces for: user clients, 
physics, scripting, numerous backend resource services, data storage 
providers, and a generic interface for adding any kind of additional 
features to the scene manager (aka "Region Modules" given by the mono 
addin extension point /OpenSim/RegionModules). There is also an even 
lower-level generic interface that allows the injection of additional 
features at the server level (given by the mono addin extension point 
/OpenSim/Startup).

Just above that core, embodied by several other dynamically loaded dlls, 
there is the default application behavior of SL, with almost 
feature-full support for the LL protocol 
(OpenSim.Region.ClientStack.LindenUDP.dll and many others). This 
behavior can be replaced by providing other dlls that implement the same 
interfaces. So if you want to support any other client protocol, you 
can, by implementing the corresponding interface that the scene manager 
expects clients to have.

Using that Apple image of what a framework is, people can have lots of 
ideas for how their favorite house will look like. I have mine. But 
that's not what OpenSimulator is. OpenSimulator is the framework, plus 
the default "Linden house" that can be replaced entirely.

Having explained that, the conversation about the future of 
OpenSimulator is a conversation about the future of the framework and 
default application behavior that comes with it, not about any 
particular alternative "house." There can be separate conversations 
about alternative houses, but I doubt they will be of interest to the 
exact same team that has built, and is building, the framework.

So what kinds of topics should we talk about when discussing the future 
of the framework? Here are some:

1 - The APIs. Some APIs are already pretty solid and flexible, others 
are a complete mess. The client API, for example, is a fur ball, because 
it is meant to be a generic client API but so far we have had only one 
type of client. Unfortunately, it's hard to untangle that fur ball 
without having at least another type of client that comes in and 
challenges the assumptions made very early on.

2 - Leakage from the Linden application onto the core of the framework. 
The picture I painted is very compelling (I hope!) but the reality is 
just a little bit different. From early on, there was some leakage from 
the design of the Linden house onto the core of the framework. For 
example, the data structures we use for modeling 3d scenes are heavily 
influenced by how the Linden viewers expect things. It would be nice to 
drain the core from that influence. This will be a major undertaking, 
and I don't know who among us has time/motivation to do it, but I know 
that there have been designs and plans to do it, which unfortunately 
didn't pan out.

3 - Documentation of the framework. Community-led open source projects 
tend to fare really poorly on this, and OpenSimulator is no exception. 
The Wiki is a mess. The code has been the most reliable documentation so 
far (for me, at least), followed by asking questions on the IRC. This 
raises the bar for what kinds of people can develop addons for 
OpenSimulator; people who are comfortable with reading tons of code and 
asking questions to complete strangers eventually start to understand 
how the framework is architected; people who need to read English get 
frustrated and go away. Maybe not a bad entrance criteria for a while, 
but if we want more action on the kinds of houses people build, the bar 
needs to be lowered by providing documentation. I don't have a solution 
for this, because translating from C# to English is a boring job that no 
core developer is willing to do [for free], but I sure would love to see 
some action!

4 - The ease of finding and sharing alternative implementations of APIs 
from 3rd party developers. This one is pretty high up on my priority 
list and, in my view, it's the single major technical goal that needs to 
be achieved before we can tag 1.0. Without a package distribution system 
that connects providers and consumers, frameworks are of very little 
use; the only way we can help connect them is to add more things to the 
core package, which is alarming -- complexity of software grows 
exponentially with the number of modules, not linearly. I have been 
experimenting with the mono addins package manager for my own addons; 
I'll have more information of how that really fares on the next release, 
when some people will have to upgrade my addons using the package 
manager command line tool.

5 - The default "house." There is no question in my mind that this needs 
some repairs, and I am really happy with how much closer we have been 
working with viewer developers. Realistically, this evolution will be 
not be a radical departure from what SL is, it will be just a bunch of 
small improvements, hopefully leading to viewers that are a lot more 
secure and programmable. For radical departures, see above my 
description of OpenSimulator and the previous point 4 for how to connect 
these more radical "houses" to potential consumers.






More information about the Opensim-dev mailing list