GoogleSummerOfCode
From OpenSim
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.

