opensimulator: project & framework

37
Crista Lopes UC Irvine (Diva Canto, OS developer) OpenSimulator: Project & Framework

Upload: others

Post on 21-May-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OpenSimulator: Project & Framework

Crista Lopes

UC Irvine

(Diva Canto, OS developer)

OpenSimulator: Project & Framework

Page 2: OpenSimulator: Project & Framework

Outline

• Project history, statistics and dynamics

• The OpenSimulator Software Framework

• Weaknesses & Wish List

• Development with / for OpenSimulator

• Research with / for OpenSimulator

Page 3: OpenSimulator: Project & Framework

Opensimulator @ OpenHub

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

Page 4: OpenSimulator: Project & Framework

Opensimulator @ OpenHub

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

Page 5: OpenSimulator: Project & Framework

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/

Page 6: OpenSimulator: Project & Framework

Diverse 3-tier community

Developers

Operators

End users

Page 7: OpenSimulator: Project & Framework

Power / Interest Grid

Powe

r

Interest

Core devs

Core testers

Grid operators

Users

Code contributors

Page 8: OpenSimulator: Project & Framework

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

Page 9: OpenSimulator: Project & Framework

THE FRAMEWORK

Page 10: OpenSimulator: Project & Framework

Dealing with conflicting visions

1 2 3

One vision wins Growth in all directions Small core + plugins

Page 11: OpenSimulator: Project & Framework

Simulator

Assets Inventory Avatar …

Login Service

User Accounts

User’s “viewer” client

Internet

Page 12: OpenSimulator: Project & Framework

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

Page 13: OpenSimulator: Project & Framework

Software Architecture – Services

OpenSim.Framework OpenSim.Data

OpenSim.Services.Interfaces

OpenSim.Services.*

OpenSim.Data. SQLite OpenSim.Data.MySQL

OpenSim.Region.CoreModules

OpenSim.Region.Framework

Page 14: OpenSimulator: Project & 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

Page 15: OpenSimulator: Project & Framework

Software Architecture – Simian Backend

OpenSim.Framework

Simian Infrastructure

(Apache + PHP)

OpenSim.Services.Interfaces

OpenSim.Region.CoreModules

OpenSim.Region.Framework

OpenSim.Services.Connectors

Page 16: OpenSimulator: Project & Framework

Software Architecture – Any Backend

OpenSim.Framework

Any Infrastructure

OpenSim.Services.Interfaces

MyNetworkConnectorModules

OpenSim.Region.Framework

Page 17: OpenSimulator: Project & 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

Page 18: OpenSimulator: Project & Framework

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

Page 19: OpenSimulator: Project & Framework

Software Architecture – Other Clients

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

Feature Modules My Protocol Module

Page 20: OpenSimulator: Project & Framework

Software Architecture – Physics

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

OpenSim.Region.PhysicsModule.*

OpenSim.Region.PhysicsModules.SharedBase

Page 21: OpenSimulator: Project & Framework

Software Architecture – Alternate Physics

OpenSim.Framework

OpenSim.Region.Framework

OpenSim.Framework.HttpServer

OpenSim.Framework.Servers

OpenSim

/OpenSim/RegionModules

My Physics

OpenSim.Region.PhysicsModules.SharedBase

Page 22: OpenSimulator: Project & Framework

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*

Page 23: OpenSimulator: Project & Framework

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*

Page 24: OpenSimulator: Project & Framework

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

...

Page 25: OpenSimulator: Project & Framework

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)

Page 26: OpenSimulator: Project & Framework

WEAKNESSES AND WISH LIST

Page 27: OpenSimulator: Project & Framework

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

Page 28: OpenSimulator: Project & Framework

Default Plugins Issues

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

Page 29: OpenSimulator: Project & Framework

SL Application Issues

• Inappropriate, inflexible UI

• Complicated networking, unsuitable for corporate uses

• Does not support casual viewing (install required)

Page 30: OpenSimulator: Project & Framework

DEVELOPMENT WITH / FOR OPENSIMULATOR

Page 31: OpenSimulator: Project & Framework

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

Page 32: OpenSimulator: Project & Framework

New Module

Developing New Applications

Simulator

Assets Inventory Avatar …

Login Service

User Accounts

New Application

Internet

New Module New Module

Page 33: OpenSimulator: Project & Framework

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

Page 34: OpenSimulator: Project & Framework

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

Page 35: OpenSimulator: Project & Framework

RESEARCH WITH / FOR OPENSIMULATOR

Page 36: OpenSimulator: Project & Framework

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?!

Page 37: OpenSimulator: Project & Framework

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)