[vos-d] status and scheming

Peter Amstutz tetron at interreality.org
Fri Dec 1 01:32:22 EST 2006


Here's a rundown of the status of development with VOS these days, and 
some design ideas I'm currently working on.

-) Sebastian Malcolm is testing the 0.24-dev branch in bzr.  If things 
work out for him, this will turn into an 0.24 release.

-) 0.24 will be the last release using the current codebase.  
Development has started on a new kernel implementation, codenamed "s5".

-) Lalo Martins is going to be working on Python and Javascript bindings 
between the s5 development branch.

-) I am focusing my efforts on bringing the s5 branch up to speed.  
Because it is largely a ground up rewrite of VOS, there is a lot of work 
still to be done.

-) I need to sit down and write out a detailed design, but the ultimate 
goal of this new version is to provide a language-neutral runtime object 
system that will make it easy to stitch together code in different 
languages running different processes and on different computers.

-) What does this have to do with 3D?  Well, one conclusion I drew from 
s4 development was that it isn't sufficient to just move data around.  
To do anything interesting in 3D requires interactivity, and 
interactivity requires enabling users to easily write their own programs 
and scripts that work over the VOS system.

-) I am currently still bootstrapping the s5 "kernel".  I am working on 
implementing the core API and reflecting the reflection system.  Vobject 
type method interfaces are written in XML.  This interface description 
is loaded at runtime and is effectively a class description.  It is used 
for various purposes, the most important being to generate stub/skeleton 
code that implement marshaling and unmarshaling method calls, and 
binding symbolic methods to actual implementations (where the 
implementation just need to be callable as a C function, and could 
eventually be Python, C++, C#, whatever).  I'm working on writing the 
reflection system in itself, meaning the XML interface file, which is 
loaded into the reflection classes, describes the reflection classes, 
and when run through the code generator generates the reflection 
classes.  This obviously require some bootstrapping :-) Also, the core 
Vobject API is implemented, so you can add/replace/remove child links on 
a vobject.  I have a constantly-growing suite of currently about 100 
unit tests to make sure development stays on track.

-) Once that is done I will have a choice.  Either a) continue working 
on backend stuff, such as implementing networking, persistance and 
caching components, or b) take the capabilities of the basic kernel and 
(hopefully) scripting bindings and work towards piecing together the 
next generation of the browser application (it might be time to retire 
the name Ter'Angreal, as well ... it confuses people).  Now, this is a 
difficult decision.  On the one hand, VOS without the networking means 
we don't have multiuser, which is a very basic part of the "VOS vision".  
On the other hand, 3D graphics are pretty, and will tend to attract 
users.  A scriptable 3D environment, while not unique, is still a very 
cool piece of technology, and I think there will be interesting aspects 
to the VOS runtime environment that go beyond what you would get from, 
say, PyOgre.  Also, it will give the runtime kernel a real user quicker, 
so API and performance issues can be caught and addressed earlier.  
(Although conversely, designing the 3D app without a network could also 
be dangerous).

I'm not talking about writing the whole 3D browser, just a demo browser 
app that show basic geometry and support scripted interactions.

-) As part of the design, I came up some ideas that I wanted to mention.  
I was thinking about how to implement animation, and a couple of things 
occurred to me.  Animation loops specify a some set of actions 
parameterized by time; when you trigger a loop as part of the larger 
simulation, the "world" time is plugged into the animation data as the 
time parameter to generate the actual frames.  What struck me as 
interesting, though, is that the relationship between the time on 
the animation track, and world time, is kind of like the distinction 
between world space and object space -- that the time parameter that 
gets plugged into the animation loop has a linear transform relationship 
with the "world" time.

Thinking more about time parameters, it occurred to me that other types 
of data might be similarly "keyframed" or "snapshotted", and that this 
suddenly has interesting parallels with version control.  A keyframe 
gives the particular position of a point at some time; a version gives a 
particular contents of a document at some time.  I wonder if the two 
concepts could be merged somehow?  Wouldn't it be neat if you you could 
dial back to the state of any data the same way as you move an animation 
slider?

I'm pretty far from deciding at all how this would work, but it is 
certain that we need a time parameter for animation, so it is worth 
exploring fully the potential benefit of introducing a deep concept of 
(relative!) time into VOS.

(** lalo mentioned that if you had an animation that was also in version 
control, that data would have *multiple* time dimensions.  We could then 
advertise VOS as a 5-dimensional virtual world.  This makes my head 
hurt.)

Comments?

[   Peter Amstutz  ][ tetron at interreality.org ][ peter.amstutz at gdit.com ]
[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 ]

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.interreality.org/pipermail/vos-d/attachments/20061201/0c25aff1/attachment.pgp 


More information about the vos-d mailing list