So I know I've already posted a topic (Validating IP and Region) but I wanted 
to introduce myself; some may have encountered me in Second Life before as 
Haravikk Mistral, which is the same name I'll be using on osgrid and elsewhere. 
After one too many fallings out with Lindens and their backwards way of doing 
things (and extortionate pricing for simulators, about 20 times more than 
they're worth by my estimate) I'm through with Second Life and looking to help 
out with OpenSimulator however I can. My interests for now are largely focused 
on scripting as that's a big part of what I want to do, but I may branch out 
into other areas in future.


To start off with I'm going to be looking for any of the smaller LSL functions 
and bugs that I can help with (recommendations welcome, otherwise I'll be 
trawling the bug tracker)!


However, one particular area I'm interested in is porting the Second Life 
Experience system; I know it's a bigger project, and I don't intend to jump in 
for a little while, but I'm curious to know if anyone has done any initial work 
or design yet? It's something I've found very handy in SL, but protested 
vehemently against due to the premium account requirement, even though I've 
always had one, as I hated that new features were being restricted to premium 
accounts only; however, this is not an issue that Open Simulator would have.

Anyway, I've been thinking about what it would take to implement, and while 
there's a fair bit of work that may be needed, it doesn't seem too complex. All 
it should really need is a new grid service for the "experience server", plus 
tie-ins for the GUI side in the viewer and of course the nitty gritty of the 
unique functions, as well as automatically granted permissions. If no-one is 
working on this then I'd like to take a look at doing a preliminary pass of 
what exactly is needed, and to work up a design document.

The only real area of difficulty that I can think of initially (and that I'd 
love to discuss) is the issue of protecting experience keys. As you may know, 
the experience system in SL is predicated on trusting that the keys assigned to 
objects remain private; no-mod objects may have a key assigned by the creator 
that should never be revealed, while modifiable objects can have an experience 
key of your choice added, but in both cases the key will never leave the region 
unless you have permission to see it. Now, this is fine for static objects 
within a region where you own land, as you presumably already trust that 
region, but it becomes more complex when you consider that attachments can also 
have experience keys that they will carry around with them.

So far I've thought of two options:

Hope for the Best: Since malicious regions can already potentially do quite a 
bit of harm, there's an argument to be made for not worrying about it too much 
and just reproducing the SL system as precisely as possible. The issue here is 
that once a key is leaked that's it, and trust in an experience is potentially 
broken (leading to a risk of the key being revoked, black-listed etc., 
requiring all legitimate devices to obtain a new key).
Disallow Experience Key Travel: This is a bit restrictive, but is the simplest 
alternative I can think of. Basically the idea is that the experience key 
assigned to an object is locked to the current estate, any attempt to remove 
the object from the estate (including by teleporting while wearing it, or 
taking it into inventory) will result in a warning that doing so will cause the 
key to be removed, leaving you with an experience disabled version of the 
device. If you want to reenable it you would then need to re-add the key 
yourself, if able, so a bit inconvenient.
Key Aliasing: Instead of one basic key that's at risk, there could be a system 
of key "aliasing" used. Basically what this means is that instead of applying 
your experience's "root key", an alias is generated and issued, which the 
experience server can track internally. The most powerful version of this 
system could issue unique alias keys to each estate (or region); when you 
attempt to take an experience enabled device to a new estate/region, the 
experience server will issue a new alias for the destination. This way, at 
worst all that can be stolen is a per-region/estate version of your experience 
key, which cannot be applied to objects (as it's not a root key). The tricky 
part with this system is handling how keys pass through the GUI; if 
communication is always between the viewer and the current region then the 
region will still receive a root key whenever you do anything experience 
related in the GUI, either that or the GUI would need to work with the current 
region's alias (even more complex, but theoretically possible)! Taking an item 
into inventory raises some question marks, especially with hyper-grid and 
import/export support; it's possible the key could be encrypted somehow, thus 
the experience server would give an encrypted alias that only it can decrypt 
when the object attempts to resume experience support.

If anyone has any other ideas, or has done any work towards this then I'd love 
to hear about it! Like I say, I think it's too early for me to jump in on 
something so involved, but because there's a lot to do it's probably a good 
idea to start now and begin planning the details ASAP.


I'll be making an appearance on IRC at some point; been a long time since I 
used it for anything so will need to pick out a Mac client that I like 
(recommendations welcome!) but I'm in the UK and tend to have sporadic 
availability, so I tend to prefer mailing lists and forums for this sort of 
thing.
_______________________________________________
Opensim-dev mailing list
[email protected]
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev

Reply via email to