Re: [ogpx] Limits to interoperability of scripted objects

Joshua Bell <josh@lindenlab.com> Tue, 27 October 2009 16:51 UTC

Return-Path: <josh@lindenlab.com>
X-Original-To: ogpx@core3.amsl.com
Delivered-To: ogpx@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2D43228C0EC for <ogpx@core3.amsl.com>; Tue, 27 Oct 2009 09:51:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.536
X-Spam-Level:
X-Spam-Status: No, score=-1.536 tagged_above=-999 required=5 tests=[AWL=0.440, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Yr-MyI2kehed for <ogpx@core3.amsl.com>; Tue, 27 Oct 2009 09:51:27 -0700 (PDT)
Received: from mail-iw0-f186.google.com (mail-iw0-f186.google.com [209.85.223.186]) by core3.amsl.com (Postfix) with ESMTP id DA4CD28C1F9 for <ogpx@ietf.org>; Tue, 27 Oct 2009 09:51:26 -0700 (PDT)
Received: by iwn16 with SMTP id 16so263458iwn.29 for <ogpx@ietf.org>; Tue, 27 Oct 2009 09:51:35 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.231.5.23 with SMTP id 23mr6762362ibt.45.1256662295537; Tue, 27 Oct 2009 09:51:35 -0700 (PDT)
In-Reply-To: <e0b04bba0910262215td0cf125lb3129947e8f81891@mail.gmail.com>
References: <e0b04bba0910262215td0cf125lb3129947e8f81891@mail.gmail.com>
Date: Tue, 27 Oct 2009 09:51:35 -0700
Message-ID: <f72742de0910270951x6b4536d8wef165e850ba16ef8@mail.gmail.com>
From: Joshua Bell <josh@lindenlab.com>
To: ogpx@ietf.org
Content-Type: multipart/alternative; boundary=00151773da30ba67d90476ed7d4a
Subject: Re: [ogpx] Limits to interoperability of scripted objects
X-BeenThere: ogpx@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Virtual Worlds and the Open Grid Protocol <ogpx.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ogpx>
List-Post: <mailto:ogpx@ietf.org>
List-Help: <mailto:ogpx-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 27 Oct 2009 16:51:28 -0000

Good analysis as usual, Morgaine!

On Mon, Oct 26, 2009 at 10:15 PM, Morgaine
<morgaine.dinova@googlemail.com>wrote;wrote:

> Being pragmatic about the situation, if we wish to see interop of scripting
> in the relatively near future, we need to find an approach that is
> inherently interoperable.  Here are some ideas that might be relevant to
> this end (these are alternatives, they don't all apply simultaneously):
>
>
>    1. Make script state transfer a deployment option:  both source and
>    destination regions have to allow script state transfer for it to happen.
>    2. Worlds running different scripting engine implementations do not
>    transfer state and hence scripts are initialized on teleport.
>    3. Define a common scripting language and virtual machine environment
>    --- ie. a web-like Javascript approach but for regions.
>    4. If script state continuity is desired on teleports between worlds
>    running different script engines, let such scripts run client-side.
>
>
A few thoughts on the above:

* Even though the Web appears to have given up on content negotiation over
HTTP, I'm still a fan and I think cross-system interop like this is a good
place for it. During Region-to-Region state transfer, you could imagine the
destination region advertising the script state types it accepts
(vendor/com.lindenlab.secondlife.lsl2mono, vendor/org.opensim.dotnetengine,
...), and the source region delivering one tagged with appropriate type. I
would imagine we'll need similar logic for static content as well - articles
of clothing could have have "prim" or "mesh" based versions, and regions may
prefer one type to another. (Although it would be more likely to have both
available on the region, and have content negotiation occur on the
region->viewer resource transfer.)

* Given the desire for "tourist" models (using the term loosely - I "live"
on my home grid, but like to visit other grids), it doesn't seem like
there's a one-size-fits-all approach (since region-to-region teleports in my
home grid and region-to-region teleports between grids utilize the same
protocol). So... this is definitely part of the protocol's mandate to sort
out.

* Combining the above two points, it implies that attachments will have to
cope with moving from areas where they have scripts running to scripts not
running (if the code/state is not compatible with the hosting region).
Fortunately, we have precedent for that. :)

* Infinity and I very briefly hand-waved about whether "portable" content
(primarily, attachments to avatars) should even be executed within the
region domain. Perhaps they should be executing in the agent domain? That's
a radical departure from how SL or OpenSim work today. (If you squint your
eyes and partition the current services, at least.) - at any rate, today
there is no script execution outside of a region. It's an intriguing idea,
but by no means complete - how such fine grained state might be updated
between domains, for example. Vehicles come to mind as another case, and
those have no clear "home base" for script execution. I suspect this is not
tractable for the first iteration of VWRAP, but I don't want to dismiss it.

* Your (3) (common scripting environment) is intriguing. Sun's Project
Wonderland uses Java (obviously...) as the common format, and (vastly
simplifying) all objects in the VW are Java objects. I'd love to learn more
from them about the challenges and successes. That said, at a protocol
level, I don't think we'd ever dictate a common environment, so going down
this road might turn into a de-facto common case of the content negotiation
(just as the Web technically allows for client-side scripting languages
other than Javascript, although they are used incredibly infrequently in
practice).

* Client-side scripts are also intriguing. If I think about what this means
in practice, it's that the client is able to manipulate the state of objects
in-world. Well, duh - that's what editing and appearance tools do! So...
that capability (pun intended!) is a requirement at the protocol level,
although I don't think we've even brushed on how to define it yet. It would
be intriguing if the protocol were such that the client could expose a
DOM-like view of the world to local scripts to observe and mutate.