opensimulator: project & framework

Post on 21-May-2022

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Crista Lopes

UC Irvine

(Diva Canto, OS developer)

OpenSimulator: Project & Framework

Outline

• Project history, statistics and dynamics

• The OpenSimulator Software Framework

• Weaknesses & Wish List

• Development with / for OpenSimulator

• Research with / for OpenSimulator

Opensimulator @ OpenHub

https://www.openhub.net/p/opensimulator

Opensimulator @ OpenHub

https://www.openhub.net/p/opensimulator

Who are the developers?

• ~45% Entrepreneurs

• ~30% Hobbyists

• ~30% Companies

• ~5% Academics

[Teigland et al 2012] http://nordicworlds.net/2012/03/14/round-two-of-academic-paper-on-opensimulator-community/

Diverse 3-tier community

Developers

Operators

End users

Power / Interest Grid

Powe

r

Interest

Core devs

Core testers

Grid operators

Users

Code contributors

What the Project is not

• Single commercial venture backed up by stable revenue

• Operators of a common grid

• Birds of a feather

Tremendous impact in software architecture

THE FRAMEWORK

Dealing with conflicting visions

1 2 3

One vision wins Growth in all directions Small core + plugins

Simulator

Assets Inventory Avatar …

Login Service

User Accounts

User’s “viewer” client

Internet

OpenSim.Region.PhysicsModule.*

Software Architecture – Simulator

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

OpenSim.ApplicationPlugins.LoadRegions

OpenSim.ApplicationPlugins.RegionModulesController

OpenSim.Region.OptionalModules ... OpenSim.Region.CoreModules

/OpenSim/Startup

/OpenSim/RegionModules

Software Architecture – Services

OpenSim.Framework OpenSim.Data

OpenSim.Services.Interfaces

OpenSim.Services.*

OpenSim.Data. SQLite OpenSim.Data.MySQL

OpenSim.Region.CoreModules

OpenSim.Region.Framework

Software Architecture – Robust Backend

OpenSim.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

Robust /Robust/Connector

OpenSim.Data

OpenSim.Services.Interfaces

OpenSim.Services.*

OpenSim.Data. SQLite OpenSim.Data.MySQL OpenSim.Region.CoreModules

OpenSim.Region.Framework

OpenSim.Server.Handlers OpenSim.Services.Connectors

Software Architecture – Simian Backend

OpenSim.Framework

Simian Infrastructure

(Apache + PHP)

OpenSim.Services.Interfaces

OpenSim.Region.CoreModules

OpenSim.Region.Framework

OpenSim.Services.Connectors

Software Architecture – Any Backend

OpenSim.Framework

Any Infrastructure

OpenSim.Services.Interfaces

MyNetworkConnectorModules

OpenSim.Region.Framework

OpenSim.Region.PhysicsModule.*

Software Architecture – Clients?

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

OpenSim.ApplicationPlugins.LoadRegions

OpenSim.ApplicationPlugins.RegionModulesController

OpenSim.Region.OptionalModules ... OpenSim.Region.CoreModules

/OpenSim/Startup

/OpenSim/RegionModules

Software Architecture – SL Client

OpenSim.Framework (IClientAPI)

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

OpenSim.Region.ClientStack.LindenUDP

OpenSim.Region.ClientStack.LindenCaps

/OpenSim/RegionModules

Many Feature Modules

Software Architecture – Other Clients

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

Feature Modules My Protocol Module

Software Architecture – Physics

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

OpenSim.Region.PhysicsModule.*

OpenSim.Region.PhysicsModules.SharedBase

Software Architecture – Alternate Physics

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

My Physics

OpenSim.Region.PhysicsModules.SharedBase

Software Architecture – Scripting

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

OpenSim.Region.ScriptEngine.XEngine

OpenSim.Region.ScriptEngine.Shared*

Software Architecture – Alternate Scripting

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

My Scripting Engine

OpenSim.Region.ScriptEngine.Shared*

SL Viewer Protocol Module LLUDP Server SL Viewer Feature Modules LLCAPS Modules

Script Engine Module Physics Simulation Modules

Another View of the Architecture (Simulator)

OpenSim

Startup Plugin Loader

Region Loader Region Modules Loader

3D Scene Manager

...

HTTP Server

Resource Service Connectors

...

Architectural Principles

• Inversion of control: framework users can add any additional features / capabilities by developing their own plugins

• Default replaceable implementations: everything that is important has a default implementation in the core distribution that is replaceable by framework users who can code

• Conservative Additions: new plugins may or may not be added to the core distribution depending on many factors, including:

• How much users want it

• Control over its evolution (plugin dev’s decision)

• Overhead of its maintenance (core devs’ decision)

WEAKNESSES AND WISH LIST

Framework Issues

• Leakage of the LL client onto the core of the framework • Makes supporting other clients difficult

• Still some entropy on plugin mechanisms • Mono addins vs. roll-our-own

• Some APIs aren’t completely generic

• 3rd party package management

• Documentation

Default Plugins Issues

• XEngine is littered with bugs, some of which cause instability of the whole simulator

SL Application Issues

• Inappropriate, inflexible UI

• Complicated networking, unsuitable for corporate uses

• Does not support casual viewing (install required)

DEVELOPMENT WITH / FOR OPENSIMULATOR

Developing New Applications

• Assuming the Linden viewer as is:

• Server-side plugins

• UI development with Linden viewer / LSL scripting

• Assuming new viewer

• New viewer itself

• Server-side plugins, including protocol

New Module

Developing New Applications

Simulator

Assets Inventory Avatar …

Login Service

User Accounts

New Application

Internet

New Module New Module

Viewer: Evolution vs. Revolution

• Evolution

Rendering engine par to none for amateur 3D content

It is possible to address the networking and UI issues

• Revolution

Modern graphics

Programmable/downloadable everything, including UI

Criteria for deciding

• Ease of creating 3D environments

• Ease of experiencing 3D environments

• Single user vs. multi user experiences

• Target users (corporate vs. home)

• Funding available

RESEARCH WITH / FOR OPENSIMULATOR

OpenSimulator from a research perspective

• Distributed real-time interactive system with simulation, graphics and scripting • Everything that’s hard in software!

• Open source • We can play with it!

• With sizeable user community • Impact! (and ethnography too!)

• What’s not to love?!

Interesting Research Challenges

• Scalability – more users, more content, more events

• The N^2 problem

• Assessing system design alternatives

• Multi-dimensional matrix

• Scripting

• Multi-tenancy execution engines, Server-side vs. client-side computations

• Testing distributed RT systems, non-functional properties

• The lost world of Software Engineering

• Detecting problems without testing

• Static analysis, better type systems

• Documentation

• English from source code?

• Independent but related aspects of simulation

• Better software processes through technical means

• Decentralization of VEs

• Social engineering through technical means

technical

social (NSF)

top related