Reed Hedges | 22 Jan 17:08

More new S5 classes/concepts


I'm going through S5 a bit more deeply now.

Pete, can you give a summary explanation of these new classes/concepts, 
and how you use them, what they do, etc.

What are:
   ComponentWrapper
   Promise
   Status (used with a Promise it seems?)
   IVobject
   VobjectImpl
   ImplementationWrapper
   ImplementationComponent
   ConstructorFunctionWrapper
   ConstructonFunctionFunctor
   ConstructorFunctionComponent
   The host's factory (i.e. from Host::getFactory())
   ParentChildLinkWrapper
   the "SITE_...blahblah..._NAMESPACE" namespace
   DataType
   DataTypeWrapper
   Class
   ClassWrapper
   the "vos:abcdefg12345...[1]/foo/bar" strings that appear various places
   What is something's "owner" (i.e. the getOwner() virtual methods that 
lots of classes have)

What kinds of things are generated by the code generator, and from what 
bits of information?
(Continue reading)

Reed Hedges | 22 Jan 17:27

Re: More new S5 classes/concepts


And just a general impression... S5 is becoming really complex and 
daunting (and sophisticated, and hopefully very powerful) piece of 
software.  But this means that we're going to need to put a *lot* of 
work in documenting, tutorials, as well as just polishing and refining 
the API itself, to make it easier for newbies to understand, or at least 
get started with the most common operations (like creating new 
types/components, etc.)  Just something to keep in mind as it's being 
developed and designed... if you think of a way to make it make more 
sense or be more natural, at least post it somewhere for future 
consideration....

Reed
Reed Hedges | 27 Jan 21:39

Re: More new S5 classes/concepts


Started listing S5 changes at:

   http://interreality.org/wiki/S5
   http://interreality.org/wiki/ChangesToA3dl

Will fill them in a bit as I go through the vos-d archives and talk to 
Pete more.

Reed
Peter Amstutz | 28 Jan 05:38

Re: More new S5 classes/concepts

On Tue, Jan 22, 2008 at 11:12:05AM -0500, Reed Hedges wrote:
> 
> I'm going through S5 a bit more deeply now.
> 
> Pete, can you give a summary explanation of these new classes/concepts, 
> and how you use them, what they do, etc.
>
> What are:
>    ComponentWrapper

A Component is an object that is attached to a vobject to extend its 
capabilities -- what was called a MetaObject in s4.

Wrapper classes are handles which control access to the actual 
underlying object.  They provide reference counting, support for 
Promises/Futures, and (eventually) marshalling arguments in order to do 
inter-thread and inter-process method calls.

>    Promise
>    Status (used with a Promise it seems?)

A Promise is returned by a method call in order to represent the result 
of a computation that may or may not have completed.  In normal 
object-oriented programming, a method call is synchronous and only 
returns control to the caller by completing the call and returning a 
result, or signaling an error by throwing an exception.  When making 
method calls between threads or over the network, it is useful to be 
able to return control to the caller with a status of "pending".  A 
"Promise" is a promise to provide the result of the computation at some 
point in the future (which is why it is closely connected to the 
(Continue reading)

Lalo Martins | 28 Jan 16:28

Re: More new S5 classes/concepts

Also spracht Peter Amstutz (Sun, 27 Jan 2008 23:38:04 -0500):
> (lots of clarifications on s5 concepts/classes)

On that note... can we have a documenting property (akin to Python's 
docstrings and __doc__)?  Preferably with nice syntax sugar on XOD :-)  
Just having all the information you have on this post, right there on the 
XOD file (and presumably the C++ generated from it) would have helped 
immensely.

Also... I can't make heads or tails of interreality3d :-( could we have a 
very minimal "hello world"?

best,
                                               Lalo Martins
--

-- 
      So many of our dreams at first seem impossible,
       then they seem improbable, and then, when we
       summon the will, they soon become inevitable.
                           -----
                  http://lalomartins.info/
GNU: never give up freedom              http://www.gnu.org/
Peter Amstutz | 31 Jan 06:52

Re: More new S5 classes/concepts

On Mon, Jan 28, 2008 at 03:28:57PM +0000, Lalo Martins wrote:
> Also spracht Peter Amstutz (Sun, 27 Jan 2008 23:38:04 -0500):
> > (lots of clarifications on s5 concepts/classes)
> 
> On that note... can we have a documenting property (akin to Python's 
> docstrings and __doc__)?  Preferably with nice syntax sugar on XOD :-)  
> Just having all the information you have on this post, right there on the 
> XOD file (and presumably the C++ generated from it) would have helped 
> immensely.

There's a "description" property which is pretty much what you're asking 
for, it can be attached to most elements (classes, methods, members, 
etc) and is intended to be used for output to code comments and to code 
documentation tools.

With regards to syntactic sugar, the current XOD format is intended to 
be very low level data structure dump.  What I would like to do is use 
XSLT or a macro language to define translations from a friendlier syntax 
(which can include all sort of helpful tags) to a low level 
representation such as XOD.

> Also... I can't make heads or tails of interreality3d :-( could we have a 
> very minimal "hello world"?

Ask and ye shall receive.  Take a look at voss5/src/app/helloworld.

--

-- 
[ Peter Amstutz ][ tetron@... ][peter.amstutz@...]
[Lead Programmer][Interreality Project][Virtual Reality for the Internet]
[ VOS: Next Generation Internet Communication][ http://interreality.org ]
(Continue reading)

S Mattison | 14 Feb 01:10

Re: More new S5 classes/concepts

Have you guys taken a look at opencroquet.org yet? They've been doing
some neat stuff over there. I don't think it's as advanced, from a
networking detail perspective, as your software, but it's still worth
a look I think.

-S
Karsten Otto | 14 Feb 10:56

Re: More new S5 classes/concepts

Well, I had a look at Croquet before, and even though it seems to be  
called OpenCroquet now, I am still not impressed. Admittedly, they  
have some nice eye candy, and working portals. These can even display  
non-VR applications like web browsers and chess games, neat. Didn't  
we have that in S3 too?

However, their networking model requires a sequencer or other time  
synchronization mechanism, even for bulk traffic like object  
movement. This inevitably becomes a bottleneck, so the system cannot  
handle large scale simulations (like Stephenson's "Metaverse  
Street"). Even SIMNET could do better than that.

Regards,
Karsten Otto (kao)
Reed Hedges | 14 Feb 20:21

Re: More new S5 classes/concepts


Croquet is very cool. I know Pete and I have been following it and reading about
it since we started VOS.  I don't know if its details have influenced our design
much, but some the end goals and features are similar.

A lot about it is not documented, as far as I can tell.  It's all is Squeak, 
which can be an obstacle (both because of the language and because of the way 
some things must be done within the framework.)  And it doesn't really come 
with much out of the box (though at this point, neither does Interreality).
With networking, it was designed to support a few particular features, which are
sort of unusual (originally meant for a LAN only, no internet; in a sense it's
really a number of seperate single-user worlds, that can optionally synchronize). 
We've taken a more practical and direct approach I think.

There is a commercial product based on it that appears to be fairly complete and
work well (quaq.com).

Reed
Reed Hedges | 1 Mar 19:50

Re: More new S5 classes/concepts

What is the "Extension Manager"? (WHat's an ExtensionManagerWrapper?)

What is a Service Manager (site.getServiceManager)?
Reed Hedges | 1 Mar 19:52

Re: More new S5 classes/concepts

Also what is the rationale behind all the stuff in the IO namespace? 
Is'nt it just a wrapper around standard C++ io?
Reed Hedges | 1 Mar 22:06

Re: More new S5 classes/concepts


I've updated http://interreality.org/wiki/S5 with this information. 
Peter, can you please check it and fix it if anything is inaccurate?  I 
did elide some of the minor details, just in the interest of clarity.

Some minor comments below about naming things to be less confusing to 
think about if you want...

Also it might help people understand how VOS works if the libvos code 
was seperated a bit into directories or the files were named according 
to use 'layers'...  E.g. I don't think people need to the code 
generation infrastructure much?

>>    ConstructorFunctionWrapper
>>    ConstructonFunctionFunctor
>>    ConstructorFunctionComponent
> 

rename ConstructorFunction* to Constructor*? Are there other 
ConstructorThings?

>>    The host's factory (i.e. from Host::getFactory())
> 
> In order to create new objects attached to a particular Site, you use 
> the Factory object on that site (Hosts are a special type of Site.)  
> This is the basically the same as s4 with Site::createVobject(), but 
> separating the Factory out to a distinct Vobject.
> 

Would it make sense to hide all this 
(Continue reading)

Peter Amstutz | 3 Mar 23:34

Re: More new S5 classes/concepts

On Sat, Mar 01, 2008 at 04:06:09PM -0500, Reed Hedges wrote:
> 
> I've updated http://interreality.org/wiki/S5 with this information. 
> Peter, can you please check it and fix it if anything is inaccurate?  I 
> did elide some of the minor details, just in the interest of clarity.
> 
> Some minor comments below about naming things to be less confusing to 
> think about if you want...
> 
> Also it might help people understand how VOS works if the libvos code 
> was seperated a bit into directories or the files were named according 
> to use 'layers'...  E.g. I don't think people need to the code 
> generation infrastructure much?

The current scheme of dumping everything (autogenerated or not) into one directory is something I 
would like to change.

You need to use the code generation utilities to define new classes, so it is a key piece of the 
s5 design, unless you mean for other people working on libvos specifically.

> >>    ConstructorFunctionWrapper
> >>    ConstructonFunctionFunctor
> >>    ConstructorFunctionComponent
> > 
> 
> rename ConstructorFunction* to Constructor*? Are there other 
> ConstructorThings?

Yea, that could be renamed.  Although I believe that constructs Component objects, so a better 
name would actually be ComponentConstructor (which would be just as long as the current name, but 
(Continue reading)

Reed Hedges | 3 Mar 23:27

Re: More new S5 classes/concepts


I was under the impression that, for the most part, you are always going 
to be working through Wrapper objects.  Is this true?

>> I still think it would be easier for people to use VOS if the wrapper 
>> classes had "plain" names, and the thing being wrapped had the funny 
>> name.  E.g.
>>
>> DataType is the wrapper for DataTypeCore or DataTypeImp or DataTypeBase.
> 
> The same reason I stated before, I want to avoid confusion between having a reference to an 
> object and having an actual copy of the object.  We could call them "Handles" instead of 
> "Wrappers" (so you would access objects through DataTypeHandle or VobjectHandle) which might be 
> clearer.  Changing the name would be a hassle, though (search and replace across dozens of 
> files).
> 
> This is something of an artifact of how the C++ binding is implemented (due to the limits of C++) 
> and can be done more cleanly in languages with better reflection facilities or dynamic typing.
> 
>> I.e. it seems to me that at the most basic, and starting/newbie "use 
>> level" users just need to work with wrappers. Through the vobject 
>> wrappers they find children, access component wrappers, etc.  So this 
>> "use level" should be the simplest and hide some of the complexity 
>> that's going on.
> 
> Well, the hope is that eventually newbies won't be using C++, they'll be using Python or C# or 
> some other more civilized language.
HEBLACK, J | 4 Mar 02:41
Favicon

Dream about 3d irc client

Hi,

I had this dream last night where I was being contacted by someone on
irc but they kept sending pictures and 3d animation graphics to me along
with text and pix-elated stuff through the client. That was sort of
weird. I don't know if interreality can do something like that but it is
something to think about.

On the subject of dreams, I also recently had a lucid dream (one in
which inside the dream you realize that you are dreaming) -- about work.
For the most part at work I look at pdf and html files to manually see
if there are any discrepancies. That's what I was doing in the dream.

Keep up the good work!

--

-- 
JASON A HEBLACK                                     (650) 289 - 0954
450 EAST O'KEEFE, APT. 3
jason.heblack@...
EAST PALO ALTO, CA  94303  
Peter Amstutz | 4 Mar 15:55

Re: More new S5 classes/concepts

On Mon, Mar 03, 2008 at 05:27:46PM -0500, Reed Hedges wrote:

> I was under the impression that, for the most part, you are always going 
> to be working through Wrapper objects.  Is this true?

The ultimate purpose of the wrappers is support marshaling for cross-language and 
cross-host method calls.  Since C++ doesn't have a built in interception facility, you have to 
insert some stub code in between the caller and the target.  One way to do this would be remote 
objects like we had in s4, but that doesn't handle the cross-language/cross-thread cases very 
well.  Instead, s5 has very lightweight wrappers which manage access to the underlying object.

So yes, in normal code you almost always want to be working through the wrapper classes, since 
they make everything else work (marshaling, reference counting, promises).

I'm willing to entertain naming schemes other than "-Wrapper", I just don't want it to be the 
stem name for the simple reason that due to the semantics of C++ it would be ambigious whether 
you are working with a smart pointer or a copy of the actual object.  Possible alternatives:

 VobjectWrapper
 VobjectHandle
 VobjectStub
 VobjectPtr
 VobjectRef

--

-- 
[ Peter Amstutz ][ tetron@... ][peter.amstutz@...]
[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 ]

(Continue reading)


Gmane