GoogleSummerOfCode

From OpenSim

Jump to: navigation, search



Google Summer of Code Application (To be submitted March 3rd, 2008)

See the current application in progress, GoogleSummerOfCode_APP <-- there

Introduction

OpenSim is going to be applying this year for the 2008 Google Summer of Code as a mentoring organization.

Each year, Google sponsors a set number of students to work on Open Source projects, last year 900 students were sponsored for about 3 months to work on projects. OpenSim sees this as a way to get some neat features implemented that core developers are too busy working on framework components to do.

Mentors

Primary Contacts

  • Adam Frisby (AdamZ) - Lead contact, person submitting the application.
  • Sean Dague (sdague) - Backup contact.

Additional Mentors

Eligibility requirements: All mentors must be an OpenSim developer with commit access, who has a bit of free time each week to speak with their sponsored student[s].

  • AdamZ
  • Tedd
  • Sdague
  • MW
  • justincc
  • Add your name here if you are interested

Possible Projects

Projects are sorted by guessed level of difficulty.

Easy

Implement LSL/OSSL scripting functions for compatibility with Second Life

OpenSim contains a working implementation of the LSL2 language, however is missing a number of library functions. This proposal is to look at the standard LSL function library (availible on the Second Life Wiki) and implement a corresponding function in OpenSim.

Some functions may require some skill or understanding of things such as 3D geometry algorithms, but should be researchable by a student.

Proposed by Adam

Implement World Map Texture Generation

Create a improved version of the world map generation function which takes into account builds that are in the region, ideally including texturing and shadowing information. The resulting generator should be fast enough to run across thousands of regions without significant problems.

Proposed by Adam


Simulator Save / Restore Tool

Expand upon save-xml2 to create XML representation of an entire simulator, including textures and embedded inventory. This would allow for easy storage of previous builds. There is a shell for an OpenSimExport tool to do this in the current opensim svn tree.

Proposed by Sean

Content Drop Box for OpenSim

Create a Simulator or site where Content could easily be uploaded to be contributed to the base OpenSim build under BSD license. This would include workflow to let those contributed resources been easily added to the base OpenSim build.

Proposed by Sean

Revised Stock Content Loading System

The current loading of stock resources is painful to add new ones to. A revised system would base the Inventory / Asset structure of the base inventory on the directory structure that the assets were stored in, and make it very easy to add new stock assets to OpenSim. The use of UUIDv5 sha1 based uuids would help in this regard.

Proposed by Sean

This should also encompass changes to the current stock asset loading system such that assets that are already in the database are not reloaded on each restart.

Seconded by Justin

Medium

Search

Implement a method of indexing and providing search facilities for regions, ideally with the ability to search multiple regions worth of data (ie, a grid or collection). There should be a method for tagging objects as well in such an environment.

Proposed by Adam & Sean

Collada / X3D Import/Export from OpenSim

Implement a working import and export function to OpenSim using the Collada standard 3D file format. The exporter should be able to export primitives as meshes (perhaps using something such as libprimrender, assuming it can be relicensed). The importer should be able to import these back as primitives, or if not possible to do so in an easily parseable 3D mesh format.

Proposed by Adam

Design and Implement New Scripting 'Standard Library'

As part of our goal to improve OpenSim, we'd be interested in seeing a more versatile OO-orientated scripting standard library. The standard library should include reasonably secure interfaces between the world and the script, and have the ability to integrate permissions checks.

Proposed by Adam

Content Version Control

Implement a system to create in world version control of the Simulator environment. An in world interface should be provided to the region own to:

  • save a revision
  • list revisions in the repository
  • restore to a revision

Revisioned content should include Terrain, Objects, Textures, Scripts

Proposed by Sean

Seconded by Adam

Note by Adam: Maybe a SVN plugin for OpenSim would be a good way of solving this, there are a few C#/.NET SVN interfaces availible.

OSMS(OpenSim Management System)

Implement a websystem that is able to manage the various aspects, that a OpenSim-community could use while interacting with the 2d-Web. The system makes use of the existing OpenSim mysql-database, and makes life easy for both administrators and users. Think of:

  • Administrator controls for modifying assets(Like massuploading of textures, scripts, etc.)
  • Inventory controls for users (texture uploads, object delivery system)
  • Profiles based on OpenSim db

Proposed languages: PHP, JSON, FLEX

See the OSMS-page for more details

Testing Framework

Implement a testing framework for OpenSim using NUnit or similar framework. Some unit-tests already exist but are not project-wide.

Difficult

Implement .Net Microthreading

Microthreading is similar to fibres, an user space thread implementation. In virtual worlds like Second Life one physical computer may be forced to run thousands of scripts, so assigning one thread to each script is not possible. Also one needs to be able to attach a script to an object that is moved freely between regions (between physical machines) while script is running. Therefore a custom microthreading implementation for multitasking thousands of .Net-assemblies with full stack/heap-control is needed. This will also benefit other projects by making .Net CLI/DLR the best choice for script implementation.

Proposed by Tedd

New standard virtual worlds protocols

Linden Labs has set up an Architecture Working Group where IBM and the community have worked towards standardizing virtual world protocols. Some of these protocols are close to completion and needs implementation. These protocols may be the future standard (think "http") protocols of virtual worlds. Protocols include ability to teleport between worlds and multiple 3rd party login/avatar servers. Linden Labs plan to implement these in Second Life. Their aim is to get the protocols W3C and IEEE aproved.

Proposed by Tedd

Additional Procedurally generated mesh shapes

Implement procedurally generated tri-mesh shapes that are currently un-implemented. Ellipsoid, Torus, Ring. Implement a multi-step face extruder (we currently have a single step face extruder)

Implement Mesh Collisions in Procedural Physics Engine

Implement mesh based collisions into the POS procedural physics engine.

Proposed by Adam

Procedurally Generated Environments

Create a module that will provide procedurally generated virtual world spaces including terrain, vegetation, and some basic building structures. This is marked as difficult because placement algorithms for non natural structures will be tough to get right.

Proposed by Sean

IM Bridge

Allow for IM in world to be linked to another IM protocol via libpurple.

Proposed by Sean

ODF Presenter

Make it possible to upload and ODF document (by overloading the Image upload function in the client), and transform it into an object and set of textures that lets you present with that content in the environment. This will include pulling together a lot of ODF parsing and generating bits.

Proposed by Sean

Integrate Bullet Physics Engine

Integrate the Bullet Physics Engine into OpenSim as a possible physics engine.

Proposed by Sean

Create an XSLT converter from nant build scripts to visual studio build files

The OpenSim build process could be made much cleaner if we could use nant natively, but still build the visual studio build files for symbol lookup. This would allow us to get rid of Prebuild.exe. This would also benefit a lot of other cross platform C# projects.

Proposed by Sean

Note by Adam: this probably isn't as easy as going the other way around. Visual studio doesnt have build files per-se, it has collections of directories arranged into Projects and Solutions. I do think Prebuild may be still the best solution, but I'd be happy to see a student prove me wrong.

Personal tools