-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ok, Lalo and I have been discussing and brainstorming where we want to go with scripting in VOS. There seem to be a couple of different possible approaches.

The first option is to continue what we have now, which is binding the C++ API into a target language (Python). This is useful if you want to write a VOS program in pure Python, however it doesn't help that much with embedding, where you need to be able to load and initialize script fragments from C++. Also Python cannot really be sandboxed, so Python would only be useful on the server side.

The second option, which is what we are leaning towards, is to ignore Python for now and go directly to using Javascript (using Spidermonkey). This is more interesting because not only would it allow server side scripting, it opens the door for client side scripting. The fact that several other libraries we are looking to intergrate with (OpenVRML, AWS2) use Spidermonkey also helps. Javascript is really the only language that I know of that has a proven track record of being resistant to attacks (of all sorts), is easily sandboxed, and can partition different parts of the runtime into different contexts with different levels of security.

However, what we would really like to do is just solve the scripting problem once. If we can put the right infrastructure in place, then new languages can be added relatively easily by plugging into that infrastructure.

The idea I have been turning over in my head for a while is that cross-language marshalling is really not very different from passing messages over the network, and we already HAVE a message passing system. Why not just have the client scripting language use the VOS message API to access the site? This would be mean that *every* VOS call outside of C++ would run over the messaging system. It would be a bit less efficient than SWIG bindings (not by much?) but it would probably be good enough.

This would mean a few changes in VOS. We could introduce a lightweight C API that basically only covered sending and receiving messages, and then the scripting bindings would be a relatively easy matter of connecting to the lightweight API, and recreating the VOS API in a way suitable to the target language. If we come up with an interface language (Object Type Definition) then we could even generate those APIs automatically. The data types passable via this interface would be the same as the Property datatypes I proposed earlier. This would have the useful side effect of finally documenting the various VOS message protocols as well :-)

At this point you could probably make a case that we've reinvented CORBA or *COM, so if anyone with more experience with these technologies can compare and contrast, I would be very interested to hear :-)

An interesting side note is that since the interface was originally designed for high-latency networks, various mechanisms already exist to batch up requests across the message layer. Something to think about.

If this sounds like the way to go, then we need to discuss exactly what infrastructure changes we need in VOS to be able to support scripts this way.

[   Peter Amstutz   ][ [EMAIL PROTECTED] ][ [EMAIL PROTECTED]  ]
[Lead Programmer][Interreality Project][Virtual Reality for the Internet]
[ VOS: Next Generation Internet Communication][ http://interreality.org ]
[ http://interreality.org/~tetron ][ pgpkey:  pgpkeys.mit.edu  18C21DF7 ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFEV3Z3aeHUyhjCHfcRAkL5AJ9Fub2Udolg3HzMX6lN/bW2Y3D5gACdFFft
G0lgjghQ5xjXLeOfj/2Pis0=
=xR6I
-----END PGP SIGNATURE-----


_______________________________________________
vos-d mailing list
vos-d@interreality.org
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d

Reply via email to