Re: [ogpx] Limits to interoperability of scripted objects
Morgaine <morgaine.dinova@googlemail.com> Tue, 10 November 2009 22:36 UTC
Return-Path: <morgaine.dinova@googlemail.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 6DC223A68BF for <ogpx@core3.amsl.com>;
Tue, 10 Nov 2009 14:36:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.833
X-Spam-Level:
X-Spam-Status: No, score=-0.833 tagged_above=-999 required=5 tests=[AWL=-0.277,
BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SARE_ADULT2=1.42]
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 Gdn4ng7Up58m for
<ogpx@core3.amsl.com>; Tue, 10 Nov 2009 14:36:26 -0800 (PST)
Received: from mail-ew0-f207.google.com (mail-ew0-f207.google.com
[209.85.219.207]) by core3.amsl.com (Postfix) with ESMTP id D2FAA3A68AE for
<ogpx@ietf.org>; Tue, 10 Nov 2009 14:36:23 -0800 (PST)
Received: by ewy3 with SMTP id 3so579286ewy.37 for <ogpx@ietf.org>;
Tue, 10 Nov 2009 14:36:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma;
h=domainkey-signature:mime-version:received:in-reply-to:references
:date:message-id:subject:from:to:content-type;
bh=aHzhkccASUYO96guEslKDC/9wvFchHg6C6UKAgSKHhg=;
b=XOtN0iYNGtralVnn1hti2WTsCUIbL/ffCynzBWm8RELnf3X7fzqbvvs36Er3LkJ2S9
AeuxbxbMQ8qlzazBIvkH/Uu3VHtX+R+c1LUu8RmmVv3opz/cAdwzcw5vxcNlgCLSYisu
PJZVpEk/CRh+NYvOozuUw9DKbQcI4rEXOj1YI=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:content-type;
b=fDE8tqAywJ3Sam9rD/QO4mYwevEZY7FGZLZPQk/DhtVPbWDvgx3JDuo8RIft0BdZaq
imMZEMpFBtC3ZXC5xQbnM6p5afzeuJrAqf/O9h7PGOnYlXWt9+5dE1vdYNzkIgOLimgf
SqHhC4SJPV+Tq5z+Txxf6RxxhakvNQOwbYpFM=
MIME-Version: 1.0
Received: by 10.216.85.137 with SMTP id u9mr208503wee.214.1257892605216;
Tue, 10 Nov 2009 14:36:45 -0800 (PST)
In-Reply-To: <4AF8ECDE.2010900@cox.net>
References: <e0b04bba0910262215td0cf125lb3129947e8f81891@mail.gmail.com>
<f72742de0910270951x6b4536d8wef165e850ba16ef8@mail.gmail.com>
<e0b04bba0911091956j5edc4840pd5a32d98eff3776e@mail.gmail.com>
<4AF8ECDE.2010900@cox.net>
Date: Tue, 10 Nov 2009 22:36:45 +0000
Message-ID: <e0b04bba0911101436ve9855f1u34f6fa229cfea72c@mail.gmail.com>
From: Morgaine <morgaine.dinova@googlemail.com>
To: ogpx@ietf.org
Content-Type: multipart/alternative; boundary=0016e6db2dcbe6480004780bf195
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, 10 Nov 2009 22:36:29 -0000
+1 Lawson. :-) I don't want to endorse any single linguistic approach to client-side scripting, as that would deny the opportunity for progress along many different language fronts in parallel. It would also limit the scope for using the many language-specific development tools available today, and it would not harness the skills that people have earned with particular languages and tools. In my view, the right approach to client-side scripting is to "*provide none but support all*", through the simple strategy of defining a socket API for scripts that attach to viewers as regular system processes. This automatically provides support for hundreds of languages that have socket libraries, makes full use of multiple cores with zero effort in parallelization, and avoids the vast majority of pitfalls associated with concurrent programming using threads and shared memory. It delivers a large number of other benefits as well, too many to describe here. For more detailed information on this approach, the wiki page at https://wiki.secondlife.com/wiki/Multi-Process_Client_VAG_--_draft provides a wealth of considerations for an entire viewer structured around such a design. For client-side scripting within existing SL viewers, the language-agnostic / scripts-as-processes idea was captured a year ago in a tentative subsystem design for the third-party Imprudence viewer (derived from LL's GPL sources). The overall architecture is illustrated in this diagram -- http://imprudenceviewer.org/w/images/4/48/Plugin_system_flow_APIs.png . Further details can be found in the threads marked "Plugins" in the Imprudence Development forum -- http://imprudenceviewer.org/forums/viewforum.php?f=7 . So how does all this tie in with VWRAP? The way I think it should be tied in is by thinking of the client-side "consumer" of the protocol not as an application, but as an API that can be used by many different types of application. Focusing on a "viewer" in traditional SL terms will tend to drive protocol design towards a non-automated future with poor computational properties, in much the way that the focus on human-controlled browsers has led to websites that need to be scraped for data --- a very inferior way of developing interfaces to systems. The SL viewer was designed in "the browser way" (the intended consumer is expected to be a human with all relevant limbs and senses available), as a result of which there is no clear inner API to which a client-side scripting engine can be cleanly interfaced, nor is there a clear means of adapting the endpoint for accessibility, nor for automation. We can improve on this by thinking of the client end of the protocol as an LLSD-based API and ensuring that it is full-featured and well supported by the protocol, rather than as an application as the OGP documents currently describe it. Full applications usually have a rather ill-defined feature set, whereas APIs can be tightly defined and checked for coverage, which translates immediately into a more understandable design and far more testable implementations. I'd like to see a change of emphasis from "viewer application" to "viewer API" for the above reasons, as a generalization of the software that hosts the client-side endpoint. Even more concretely, we should be thinking in terms of *libraries* as concrete implementations of VWRAP, in exactly the same way that libomv did when it reverse-engineered the SL legacy protocol. A self-contained protocol library would be a far cleaner and more maintainable factoring of the software, compared to dispersing the protocol implementation into the mysterious depths of a very large monolithic viewer that is widely acknowledged to be poorly structured and too monolithic. Adding even more code to the main body of the application just compounds the current problem. Unfortunately, "dispersing the protocol implementation into the mysterious depths of a very large monolithic viewer" is exactly the route currently being taken for prototyping the protocol. I believe that choosing that approach was a mistake on several grounds, not the least of which is that it provides a very obscure and inflexible platform for testing and modifying our protocols as they evolve. Protocol development and testing requires the opposite of these properties. I recommend that that decision be reconsidered before more time and effort is spent in a direction that has limited utility for protocol development. A protocol library would be far easier to understand, maintain, and develop. It would not bloat the main body of viewer code further, it would be testable with far greater ease by calling it from scripts, and it would be open to far more eyeballs than the current viewer which represents a substantial challenge to practically all its developers. Morgaine. =========================================== On Tue, Nov 10, 2009 at 4:32 AM, Lawson English <lenglish5@cox.net> wrote: > Morgaine has seen me hype this many types, but perhaps Joshua and others > have not not: > > http://wiki.secondlife.com/wiki/User:Saijanai_Kuhn/Plugins_discussion ... > > > There's many uses for client-side scripting, from custom GUIs to > manipulation of elements (avatars, objects, etc) going out to the sim > directly, to manipulating objects client-side only say for use in a > mechanima play where only the other characters in the play can see what is > going on. Hybrid situations, as is done with the puppeteering code mentioned > at the bottom of the page, could delay updating until everything is resolved > client-side. A collection of avatars could be participating in a private > play, battle, simulation, whatever, and only use the main simulator to > provide a backdrop for whatever it is they are doing with or without > eventually updating the simulator as to their position/actions/etc. > > And no doubt there are many other scenarios that we haven't conceived of > yet where "client side scripting" would be useful. And one extreme is the > Second Life use-case where the server handles virtually every aspect of the > avatar except limited user input. At the other end is the Croquet/Cobalt > case where clients act as servers for their own private worlds that are, in > principle, P2P in nature. While the VWRAP scenario assumes more Second > Life-ish scenarios, there's plenty of room for more Croquet-like situations, > IMHO. The server(s) need not know what input the client is working with. > Perhaps there's enhanced physics being used in a special MC Escher style > world. or perhaps the client is getting a direct feed of planetarium data to > light up the sky. Both situations exist or are being worked on in a > rudimentary way in Second Life itself. There's no reason to assume ANY > limitations save those required for security/trust issues, and those will > need to be applied on the server side for any realistically secure scenario > (assuming that the client-side plug-ins are trustworthy for the end-user's > purposes, of course) > > > Lawson > > > > Morgaine wrote: > >> On Tue, Oct 27, 2009 at 4:51 PM, Joshua Bell <josh@lindenlab.com <mailto: >> josh@lindenlab.com>> wrote: >> >> >> * 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. >> >> >> I like both of those ideas. I wonder if we could support them both in >> principle with minimal effort by providing a generic hook using script >> metadata. Let some attribute select between "region" (for scripts running >> in the current region as in SL), "avatar" (for HUD scripts that run in-world >> but don't need region events so they can be run in a separate load-balaced >> server pool), "home" (for scripts that always run in the agent's home >> region), and "client" (for client-side scripts or plugins). Further >> attributes could specify the language and maybe a startup argument list too. >> (These are just random ideas, not cohesive.) >> >> Thinking about the scripting languages themselves, presumably nobody would >> argue in favour of turning LSL into an interop standard given the poverty of >> its syntax, but even worse is the tortuous and complex semantic of its >> system calls which would be very problematic to standardize, or maybe >> impossible. The SL scripting environment has evolved in a way that isn't >> conducive to portability, not only because the implementation is closed and >> quite unique, but also because it's tied fairly strongly to a proprietary >> physics engine for events/simulation and to a rather esoteric communications >> model. These things conspire to make standardising around the SL scripting >> mechanism very unlikely. This gives us a solution to cross off the list, >> but unfortunately doesn't offer us anything in its place. >> >> Being realistic, forcing language commonality at this early stage is just >> not going to happen, so we might as well lubricate the protocol machinery to >> allow multiple scripting systems to be supported. Eventually a de-facto >> standard will emerge as happened with Javascript. Let people with more >> spare time than we have sort it out, and may the best idea win. :-) >> >> As lubrication, I think we should provide at the very least some generic >> and extensible metadata hooks in the protocol for this, otherwise the spec >> will be modified incompatibly outside of the standard to support the diverse >> scripting requirements of worlds, and then interop suffers. >> >> >> Morgaine. >> >> >> >> >> >> ========================================= >> >> On Tue, Oct 27, 2009 at 4:51 PM, Joshua Bell <josh@lindenlab.com <mailto: >> josh@lindenlab.com>> wrote: >> >> Good analysis as usual, Morgaine! >> >> >> On Mon, Oct 26, 2009 at 10:15 PM, Morgaine >> <morgaine.dinova@googlemail.com >> <mailto:morgaine.dinova@googlemail.com>> 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. >> >> >> _______________________________________________ >> ogpx mailing list >> ogpx@ietf.org <mailto:ogpx@ietf.org> >> >> https://www.ietf.org/mailman/listinfo/ogpx >> >> >> ------------------------------------------------------------------------ >> >> >> _______________________________________________ >> ogpx mailing list >> ogpx@ietf.org >> https://www.ietf.org/mailman/listinfo/ogpx >> >> > >
- [ogpx] Limits to interoperability of scripted obj… Morgaine
- Re: [ogpx] Limits to interoperability of scripted… Joshua Bell
- Re: [ogpx] Limits to interoperability of scripted… Morgaine
- Re: [ogpx] Limits to interoperability of scripted… Lawson English
- Re: [ogpx] Limits to interoperability of scripted… Joshua Bell
- Re: [ogpx] Limits to interoperability of scripted… Carlo Wood
- [ogpx] Synchronization of gestures (was: Limits t… Carlo Wood
- Re: [ogpx] Limits to interoperability of scripted… Morgaine
- Re: [ogpx] Synchronization of gestures (was: Limi… Carlo Wood
- Re: [ogpx] Synchronization of gestures (was: Limi… Han Sontse
- Re: [ogpx] Synchronization of gestures (was: Limi… Carlo Wood
- Re: [ogpx] Synchronization of gestures (was: Limi… Carlo Wood
- Re: [ogpx] Synchronization of gestures Lawson English
- Re: [ogpx] Synchronization of gestures Carlo Wood
- Re: [ogpx] Synchronization of gestures (was: Limi… Nexii Malthus
- Re: [ogpx] Synchronization of gestures (was: Limi… Carlo Wood