Re: [vos-d] s5 progress and design - OTD XML

2007-12-07 Thread Lalo Martins
Also spracht Reed Hedges (Fri, 07 Dec 2007 10:57:10 -0500):
 Oh, ok, then my sketch is not really SOD, just a similar thing. Sorry
 for apropriating the name.  I didn't know that you implemented your
 format (or forgot).  Why wasn't it merged into the main S4 repository?

Hmm... ehn... that's a good question :-P didn't even think about it.  
Guess s5 came around before I could finish it?

 I couldn't access your bzr repository, can you maybe post an example SOD
 file just so those of us getting nervous about editing all that XML can
 relax a bit :)

Ah yes, the repository was in a temporary location... I now pushed it to 
http://interreality.org/~lalo/bzr/sod (or for those who can, bzr+ssh://
interreality.org/home/lalo/bzr/sod).  I also checked it out there, so you 
can actually see the source by going to the same URL; the example is at 
http://interreality.org/~lalo/bzr/sod/doc/examples/3dworld-blocks.sod

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/


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


Re: [vos-d] s5 progress and design - OTD XML

2007-12-07 Thread Reed Hedges
On Fri, Dec 07, 2007 at 06:01:30PM +, Lalo Martins wrote:
 Also spracht Reed Hedges (Fri, 07 Dec 2007 10:57:10 -0500):
  Oh, ok, then my sketch is not really SOD, just a similar thing. Sorry
  for apropriating the name.  I didn't know that you implemented your
  format (or forgot).  Why wasn't it merged into the main S4 repository?
 
 Hmm... ehn... that's a good question :-P didn't even think about it.  
 Guess s5 came around before I could finish it?
 
  I couldn't access your bzr repository, can you maybe post an example SOD
  file just so those of us getting nervous about editing all that XML can
  relax a bit :)
 
 Ah yes, the repository was in a temporary location... I now pushed it to 
 http://interreality.org/~lalo/bzr/sod (or for those who can, bzr+ssh://
 interreality.org/home/lalo/bzr/sod).  I also checked it out there, so you 
 can actually see the source by going to the same URL; the example is at 
 http://interreality.org/~lalo/bzr/sod/doc/examples/3dworld-blocks.sod


Looks nice. My only comments are that the ...end syntax is a bit unexpected
(would have used braces, and/or allow a block to be on one line with some
seperator other than newline, like ;), and was initially confused as to what 
with: meant.  Also, to give a property a value and a type you must use 
with:...end, right, you can't have a one-line property with a type?

But anyway, it's nice and minimal and would be a good addition to VOS, I'll add
it to xplanner or something.


Reed


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


Re: [vos-d] s5 progress and design

2007-12-06 Thread Karsten Otto
Am 05.12.2007 um 22:13 schrieb Peter Amstutz:

 On Wed, Dec 05, 2007 at 11:43:47AM +0100, Karsten Otto wrote:
 Hi Peter, some questions/comments from the top of my head:

 What does importReplica() imply exactly? Is this just loading a local
 copy, or does it include contactig the remote site and merging  
 updates?

 The idea is this is actually a copy of (a subset) of the site at some
 revision.  You're loading from this copy, which might have been
 retrieved from the server, or maybe from somewhere else.  After  
 loading
 the replica, you might contact the server to find out if anything has
 changed between the revision you have and the most recent  
 revision.  It
 is heavily inspired by distributed version control, although the focus
 is more on disseminating signed updates from a central site than on
 branching and merging.

Ok, I see. But this implies there could be more servers than just  
one, each hosting a replica. Which one do I contact for updates? With  
VOP/VIP URLs this was straightforward, but please remind me again,  
how do I contact a vos:0011223344... key-based site? Is there a name  
server somewhere?

 The interface description seems to slowly approach WSDL Land... Have
 you considered some shorthand syntax to free a developer of all the
 XML clutter? Or do you envision GUI-based development tools for this
 (really the only way to live with WSDL if you have to use it)?

 I agree.  It's not high on my own list of priorities, but this  
 would be
 a good, easy project if someone wants to help out. (hint, hint)

I am tempted, but probably wouldn't get around to it for a while due  
to the workload of my current day job. Anybody else? :-)

 The fact that you need a *site* for an interface description seems
 pretty strange to me, even though I am aware you are re-using the XOD
 stuff for this... but do developers really have to generate a siteID
 key for every interface they design? Rather pointless, isn't it?
 While it may make sense to actually have the OTD vobject structure
 linked on a site that uses it, you usually don't know the target site
 (s) at development time. Maybe modify the XOD parser to consider the
 site/siteID optional, or use a shorthand syntax in the first  
 place :-)

 That's because the site is actually part of the logical namespace.   
 What
 this means is (site id shortened for brevity):

   vos:00112233/OTD/vos/FooClass
 is entirely different from
   vos:44556677/OTD/vos/FooClass

 Because the class vobject itself is a different vobject located on a
 different site.  This means an object that implements the first
 FooClass is not necessarily compatible with the second FooClass.

 Another way of thinking of it is that the act of defining and making
 available the interface definition is the same as publishing any other
 type of data via VOS.

Uh, okay... so... The site in this document is just a namespace,  
which makes sense given the new idea of a site being some abstract  
thing manifested only by lots of replicas. I.e. when I use the type  
vos:00112233/OTD/vos/FooClass I am using a replica of the abstract  
type definition.

I was confused since I still though of a site as something you  
could connect to with Ter'angreal or mesh, while the new kind does  
not necessarily have any actual servers hosting the replicas.

... Right?

 A large part of the change in terminology is due to an overall  
 change in
 thinking.  The idea is to not differentiate between local and remote
 objects per se, but have objects than I can change and objects I  
 need
 to talk to someone else to change.  Hence the notion of our local  
 copy
 of such objects being a replica, and if we know our local copy is up
 to date (by checking revisions) then it is trivial to service read
 requests using the local copy.

Ok, so the average user will never be concerned with MyTypeImpl, but  
only ever interacts with MyTypeWrapper? In this case I agree with  
reed to drop the Wrapper part and just call the thing MyType.

Regards,
Karsten Otto (kao)

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


Re: [vos-d] s5 progress and design

2007-12-06 Thread Peter Amstutz
On Thu, Dec 06, 2007 at 11:11:31AM +0100, Karsten Otto wrote:

 Ok, I see. But this implies there could be more servers than just  
 one, each hosting a replica. Which one do I contact for updates? With  
 VOP/VIP URLs this was straightforward, but please remind me again,  
 how do I contact a vos:0011223344... key-based site? Is there a name  
 server somewhere?

There's one additional complication, which is that there are sites and 
there are hosts.  A host is a special kind of site which is never 
replicated and represents a single process/single instance of a server.  
The goal being that a site can be clustered across multiple hosts.  So a 
site is bound to one or more hosts, and connections are made between 
hosts rather than between sites.  This provides a layer of abstraction 
between the concrete concept of a site (an actual OS process on a 
physical computer) and the virtual concept of a site which is replicated 
many places.

Ownership of a site simply means knowing the private key.  If you know 
the private key, you are able to issue properly signed documents that 
describe the state of (and state changes to) the site.

To answer your question, yes, this requires some way of mapping 
identifiers to network addresses.  My original idea was that the site 
issues a signed document listing one or more hosts ids that are 
authorized for that site, and the host issues a signed document listing 
one or more network addresses it can be contacted at.  That contact 
information is propagated through friend-of-a-friend introductions, so 
that if some site tells you to contact another site, it can also provide 
the contact information.  Other name resolution methods (DNS/MDNS, 
distributed hash tables, central metaserver on interreality.org, or ???) 
would also be a good idea.  Unlike DNS, spoofing replies is much more 
difficult, since the replies have to be signed to coorrespond with the 
same public id you are trying to resolve.

For the separate matter of mapping human-readable names to site ids, I 
don't have an answer to that.  That's sort of a sticky problem because 
such a system should be hardened against all sorts of abuse (spamming, 
domain squatters, etc) many of which are social and not technical.  I'm 
imagine there's been some interesting research into this area, though, 
which would be worth looking in to.

 Uh, okay... so... The site in this document is just a namespace,  
 which makes sense given the new idea of a site being some abstract  
 thing manifested only by lots of replicas. I.e. when I use the type  
 vos:00112233/OTD/vos/FooClass I am using a replica of the abstract  
 type definition.
 
 I was confused since I still though of a site as something you  
 could connect to with Ter'angreal or mesh, while the new kind does  
 not necessarily have any actual servers hosting the replicas.
 
 ... Right?

You've got it.  The idea is to move towards content-oriented addressing 
rather than location-based addressing, at least at the granularity of a 
site.  Of course, for interactive sessions, you maintain a session to an 
actual server which is the actual site, so that you can exchange updates 
in real time (for walking around in a 3D world or whatever).

 Ok, so the average user will never be concerned with MyTypeImpl, but  
 only ever interacts with MyTypeWrapper? In this case I agree with  
 reed to drop the Wrapper part and just call the thing MyType.

The average user is concerned with MyTypeImpl if they are implementing 
new components, which I would hope to be a common operation (as common 
as adding new classes to any object oriented application).  The user 
also needs to supply the correct implementation when instantiating a new 
vobject, since if there are (for example) two implementations of 
IOutputStream, you need to select which one you actually want.  In terms 
of actually calling methods on it, it is isolated from the user via the 
wrapper class, for implementation reasons I discussed previously.

I'm still mulling it over.  It does make the client code easier to read, 
but at the expense of potentially introducing confusion between the 
wrapper classes and real classes, which have very very different 
semantics.

-- 
[   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 ]



signature.asc
Description: Digital signature
___
vos-d mailing list
vos-d@interreality.org
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d


Re: [vos-d] s5 progress and design

2007-12-06 Thread Karsten Otto
Am 06.12.2007 um 16:02 schrieb Peter Amstutz:

 To answer your question, yes, this requires some way of mapping
 identifiers to network addresses.  My original idea was that the site
 issues a signed document listing one or more hosts ids that are
 authorized for that site, and the host issues a signed document  
 listing
 one or more network addresses it can be contacted at.
Why all the indirections? Wouldn't it be enough to put one or more  
lines of the kind
host addr=interreality.org port=4231 protocol=vip/
(port and protocol being opzional) into the site replica document? It  
*is* a signed document already, isn't it?
So if you already got one from somewhere, you only need to check the  
signature once.
You would omit this on an abstract site like your interface  
definitions, and imply that the user should choose randomly from the  
given hosts when establishing a connection.

 That contact
 information is propagated through friend-of-a-friend introductions, so
 that if some site tells you to contact another site, it can also  
 provide
 the contact information.  Other name resolution methods (DNS/MDNS,
 distributed hash tables, central metaserver on interreality.org,  
 or ???)
 would also be a good idea.  Unlike DNS, spoofing replies is much more
 difficult, since the replies have to be signed to coorrespond with the
 same public id you are trying to resolve.

Well, these are two separate things really, aren't they? The first  
ist a matter of key management and distribution, including trust in  
the fact that a key really belongs to the person claiming to own it.  
I don't really see a need to invent something new here, people may  
either use certification hierarchies (X.509) or grassroots cross- 
signing (GPG) at their choice.

The other is the question where you get a (partial) site replica  
document in the first place. If you just follow a link from one site  
to another, you should already have this information (see above),  
assuming that a link includes a minimal replica of the target site  
document including its site and host parts. If you are not  
connected yet, I'd suggest to leverage the power of URLs. People are  
used to exchange these nowadays, and they can specify any kind of  
data source you could possibly imagine WWW, local file, FTP  
server, freenet... Just like torrent files really. Where you get it  
from is not really a problem, since you can always check its  
authenticity if you have/trust in the signing key.

 For the separate matter of mapping human-readable names to site ids, I
 don't have an answer to that.  That's sort of a sticky problem because
 such a system should be hardened against all sorts of abuse (spamming,
 domain squatters, etc) many of which are social and not technical.   
 I'm
 imagine there's been some interesting research into this area, though,
 which would be worth looking in to.

Well do we really need names for site IDs? I mean, web pages  
don't have names either, do they? If you want, a site replica  
document could contain a line of the form
titleMy Cool VOS Site/title
or similar that would show up in history bookmarks and other places  
requiring human readable labels.


 Ok, so the average user will never be concerned with MyTypeImpl, but
 only ever interacts with MyTypeWrapper? In this case I agree with
 reed to drop the Wrapper part and just call the thing MyType.

 The average user is concerned with MyTypeImpl if they are implementing
 new components, which I would hope to be a common operation (as common
 as adding new classes to any object oriented application).  The user
 also needs to supply the correct implementation when instantiating  
 a new
 vobject, since if there are (for example) two implementations of
 IOutputStream, you need to select which one you actually want.  In  
 terms
 of actually calling methods on it, it is isolated from the user via  
 the
 wrapper class, for implementation reasons I discussed previously.

Uh... by user I meant someone just surfing a site, or simply  
accessing existing information from some program. This kind of user  
would only ever see a bunch of FooWrappers and wonder about them...
The kind of user you seem to have in mind is actually an author or  
developer, who indeed would need to mess around with FooImpls so  
that users in the sense above can use them. There should be a  
distinction between the two... and the system should be more  
convenient for the user than the author. Like, how many people author  
web pages, and how many just browse them?

 I'm still mulling it over.  It does make the client code easier to  
 read,
 but at the expense of potentially introducing confusion between the
 wrapper classes and real classes, which have very very different
 semantics.

I was thinking in the way the established systems like CORBA or RMI  
handle this issue. They already do distinguish between author and  
user, and are optimized for use by the latter on the assumtion that  

Re: [vos-d] s5 progress and design

2007-12-06 Thread Peter Amstutz
On Thu, Dec 06, 2007 at 05:50:04PM +0100, Karsten Otto wrote:

 Why all the indirections? Wouldn't it be enough to put one or more  
 lines of the kind
 host addr=interreality.org port=4231 protocol=vip/
 (port and protocol being opzional) into the site replica document? It  
 *is* a signed document already, isn't it?
 So if you already got one from somewhere, you only need to check the  
 signature once.
 You would omit this on an abstract site like your interface  
 definitions, and imply that the user should choose randomly from the  
 given hosts when establishing a connection.

I haven't implemented this yet, so I haven't committed to a particular 
way of doing it.  The main reason for having hosts identified with 
distinct ids is so that there is an unambigous identifier without having 
to get into the ambigities of comparing hostnames and IP addresses.  So 
for example, if a host is hosting multiple sites, you don't make 
separate connections to the same host for each site.  I'm also 
considering that VOS messages might be sent over multiple different 
transports, such as TCP/VIP, or HTTP/XML-RPC, or XMPP, or email, etc.  
So the host-network address binding is very fluid.

That said, where available, it does make sense to bundle site-host and 
host-network address bindings in the same document, for convenience.

 Well, these are two separate things really, aren't they? The first ist 
 a matter of key management and distribution, including trust in the 
 fact that a key really belongs to the person claiming to own it.  I 
 don't really see a need to invent something new here, people may 
 either use certification hierarchies (X.509) or grassroots cross- 
 signing (GPG) at their choice.

Well, what I am fundamentally trying to acomplish with VOS is the 
ability to publish an object store identified using my public key and 
using the signing ability granted by knowing the private key to control 
who can issue authorized updates associated with that site.  The only 
guarantee that clients have on receiving the data is that it was 
authorized by the entity holding the corresponding private key.

You're right, particularly when not using human-readable names, there is 
a significant danger of social engineering attacks -- you don't need to 
spoof the actual site, you just need to fool someone into thinking that 
your site is the authentic one.  Some kind of certificate PKI system 
will be necessary.  I haven't studied it enough to have a design for it 
in VOS yet (whether leveraging an existing system, or coming up with 
something ourselves).

I picked elliptic curve cryptography due to fact that the keys are very 
short (relative to RSA) which facilitates using the complete public key 
as the primary identifier.  At the moment I'm using 128 bit ECC keys, 
which grants 64 bits of security.  Since the public keys are used as 
public identifiers (effectively GUIDs), there is a tension between 
providing adequate security, and using keys which are short enough to be 
used as identifiers without causing message bloat.

 Well do we really need names for site IDs? I mean, web pages  
 don't have names either, do they? If you want, a site replica  
 document could contain a line of the form
 titleMy Cool VOS Site/title
 or similar that would show up in history bookmarks and other places  
 requiring human readable labels.

The naming I am concerned with in this case is more like domain names 
than individual page names.  Which is tied up in the issue of 
certificates, and generally associating an abstract numerical ID with 
some actual individual or organization.

 Uh... by user I meant someone just surfing a site, or simply  
 accessing existing information from some program. This kind of user  
 would only ever see a bunch of FooWrappers and wonder about them...

Somebody who is just surfing isn't going to see that stuff anyway, any 
more than you have to wade through a bunch of weird HTML tags just to 
visit Google.

The FooWrapper terminology should just be considered an implementation 
detail specific to the C++ binding.  Ideally a scripting language 
binding to VOS wouldn't expose that, you'd just see objects of type 
Foo.  In the actual application, you just see a green foo ball in 3D 
that you can grab and move around.

 The kind of user you seem to have in mind is actually an author or  
 developer, who indeed would need to mess around with FooImpls so  
 that users in the sense above can use them. There should be a  
 distinction between the two... and the system should be more  
 convenient for the user than the author. Like, how many people author  
 web pages, and how many just browse them?

This doesn't make sense.  The only people who are exposed to this will 
be developers, and C++ developers at that.

 I was thinking in the way the established systems like CORBA or RMI  
 handle this issue. They already do distinguish between author and  
 user, and are optimized for use by the latter 

Re: [vos-d] s5 progress and design

2007-12-06 Thread Reed Hedges

I don't know about Karsten, but the reason I have a knee-jerk reaction 
against suffixes like Wrapper is that it just feels like cruft, based 
on other systems where the word had no consistent meaning, at least from 
a user's perspective, it just seemed a hack to extend an API or 
facilitate its use without changing the deeper classes, or it was in 
fact an implementation detail that just happened to be exposed to the 
user.

It's another naming issue I guess.  Call it a Handle and use an H 
suffix. Or an Accessor.   Call it a Lever, I don't know :) Wrapper 
just has bad connotations to some of us :)  (Maybe like Component)  In 
the end it will just be something that a C++ user has to learn what it 
means, but at first glance they have to have trust that it's actually 
very useful and that there's a good reason they have to do that extra 
typing.

Reed


Peter Amstutz wrote:
 On Thu, Dec 06, 2007 at 05:50:04PM +0100, Karsten Otto wrote:
 
 My concern is that if the wrapper class is named with just the name 
 stem, the following situation is very confusing:
 
 {
   Vobject* foo = getFoo();
   delete foo;
   // Oops.  I think I deleted foo, but all I did was delete
   // the wrapper.  The underlying object is actually still there.
 }
 
 {
   VobjectWrapper* foo;
   delete foo;
   // I know it is a wrapper, so I know I'm just deleting the wrapper
   // and that the underlying object is untouched.
 }
 
 This is a little contrived, since wrappers are usually stack-allocated 
 (although the confusion is still there, just not as obvious), but 
 similar cases can be made for other common operations such as assignment 
 and comparison.
 
 It's ugly, but it should be considered an artifact of the 
 implementation.  Languages with better metaprogramming facilities (meta 
 object protocols, in the traditional academic sense) and hopefully 
 script language bindings should not require this technique.
 


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


Re: [vos-d] s5 progress and design - sites, hosts, and URLs oh my

2007-12-06 Thread Reed Hedges
Karsten Otto wrote:

 Ok, I see. But this implies there could be more servers than just  
 one, each hosting a replica. Which one do I contact for updates? With  
 VOP/VIP URLs this was straightforward, but please remind me again,  
 how do I contact a vos:0011223344... key-based site? Is there a name  
 server somewhere?

There are two layers, host and site, where before there was just a site.

Peter, does the following sound more or less like the way it's going to 
work or could work, roughly speaking? --   First, you contact a host, 
then you find the site and its vobjects.  You either already have a 
connection, or you have a URL like 
vip://interreality.org:4231/MyCoolWorld/thing.   You could say that 
interreality.org:4231 is the name of the host.   Then you go looking 
for the /MyCoolWorld/thing vobject, which is part of some site hosted on 
this host.  You could just send the host the name of your vobject 
(/MyCoolWorld/thing), and the remote host looks up which of its sites 
(if it has more than one) that vobject is part of [vobjects on different 
sites would have to be children of different root vobjects, like 
/site1, /site2, /MyCoolWorld], and returns a message informing you of 
your requested vobject's site identity information, you do key 
authentication, etc.  The site doesn't really have a name, but it has 
its key, and on any given host it has a unique root vobject that all its 
other vobjects are underneath (though that root could have different 
names on different hosts).This is not too dissimilar from the site 
handshaking/negotiation in S4, I think, it just has the extra part where 
you need to tell the remote site what vobject you want so it can figure 
out which site to use for that vobject, and tell you.

Yes, nobody should really have to every care about the actual site 
ID/key strings, unless they're debugging something or it happens to be 
useful in some code to have a unique value that  identifies the site 
(i.e. in S4 you would have used the site's URL for that) or are 
developing something more advanced involving site replication or 
distribution or whatever.  Or they are suspicious about a site's 
identity and want to manually verify whether it matches some record . 
End users (surfers) would still have URLs.

Though one thing I do want to get into the client application etc. more 
quickly than we would have in S4, is reimplementing the service 
directory we had in S3.  It incorporated both online directories of 
services (e.g. a 3D world), and LAN discovery.

Reed



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


Re: [vos-d] s5 progress and design - OTD XML

2007-12-06 Thread Lalo Martins
Also spracht Reed Hedges (Thu, 06 Dec 2007 17:46:37 -0500):
 Or you could use any file format for Vobjects, even COD.   Back in S4 I
   sketched out a possible curly-bracket format called SOD I think
 (don't remember it exactly anymore though, maybe there's a message about
 it in the archive?).

SOD was a plain-text format which I designed and actually implemented for 
s4.  I will most likely want to port it to s5 :-) (unless someone wants 
to do it first)

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/


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


Re: [vos-d] s5 progress and design

2007-12-05 Thread Peter Amstutz
On Wed, Dec 05, 2007 at 11:34:45AM -0500, Reed Hedges wrote:
 
 We should also include at this point a reminder of why there's a code 
 generator.
 
 If I understand things correctly, the goal is to use the code generator to 
 (a) generate code for different programming languages
 (b) make it easier for users to generate MetaObject (now called 
 Component) wrapper classes corresponding to different type interfaces 
 (and in different programming languages).
 
 The fact that Peter happened to use the code generator to generate VOS 
 itself is, again if I understand it correctly, partly for (a), and 
 partly to make sure it works well.
 
 Correct me if I'm wrong Pete.

You're on the right track, but there's more to it than that.

It provides a set of formal semantics for VOS which are defined 
externally of a particular programming language.  With the spec in hand, 
you only have to write a code generator (or other metaprogramming layer) 
and run it against the spec to map VOS onto a new target language.

It gives a self-contained type system, so when two programming languages 
talk about a VOS Class, they are unambigously referring to the same 
thing.  It also encourages developing an OS- and language-independent 
vobject-based standard library of APIs and components instead of 
dropping down to the language-specific standard library for common 
tasks.  For example, I've already added InputStream and OutputStream 
classes as part of VOS in order to read and write files.  This means you 
will be able to read from or write to streams which come from other 
language runtimes, processes, or hosts.

In the case of the C++ binding, the code generator will automate 
marshalling, unmarshalling, and pipling, which would be tedious and 
error prone to write by hand (and changes often during development).  
C++ template metaprogramming doesn't really help here, since templates 
don't provide the reflection features to be able to say for each method 
in this class...

Finally, the code generator also keeps some other miscellaneous 
boilerplate code in sync, such as registering classes and 
implementations, and embedded the correct copy of the interface spec in 
the executable so that reflection is available at runtime.

Rather than simply being a convenient tool, the VOS object model is 
almost a new language that happens to be hosted on C++.  I actually hope 
to see VOS implemented in other languages (and not just through foreign 
function interfaces) and think it will be a better fit for higher-level 
languages that already provide garbage collection, reflection, 
marshaling, promises, continuations, etc.

-- 
[   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 ]



signature.asc
Description: Digital signature
___
vos-d mailing list
vos-d@interreality.org
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d


Re: [vos-d] s5 progress and design

2007-12-05 Thread Reed Hedges

We should also include at this point a reminder of why there's a code 
generator.  

If I understand things correctly, the goal is to use the code generator to 
(a) generate code for different programming languages
(b) make it easier for users to generate MetaObject (now called Component) 
wrapper classes
corresponding to different type interfaces (and in different programming
languages).

The fact that Peter happened to use the code generator to generate VOS itself
is, again if I understand it correctly, partly for (a), and partly to make sure
it works well.

Correct me if I'm wrong Pete.

Reed



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


Re: [vos-d] s5 progress and design

2007-12-05 Thread Karsten Otto
Hi Peter, some questions/comments from the top of my head:

What does importReplica() imply exactly? Is this just loading a local  
copy, or does it include contactig the remote site and merging updates?

The property lookup example seems a bit verbose for a task that I  
assume will be quite frequent... Wouldn't this be wrapped into some  
MetaObject method getOccurrence() : String?

The interface description seems to slowly approach WSDL Land... Have  
you considered some shorthand syntax to free a developer of all the  
XML clutter? Or do you envision GUI-based development tools for this  
(really the only way to live with WSDL if you have to use it)?

The fact that you need a *site* for an interface description seems  
pretty strange to me, even though I am aware you are re-using the XOD  
stuff for this... but do developers really have to generate a siteID  
key for every interface they design? Rather pointless, isn't it?  
While it may make sense to actually have the OTD vobject structure  
linked on a site that uses it, you usually don't know the target site 
(s) at development time. Maybe modify the XOD parser to consider the  
site/siteID optional, or use a shorthand syntax in the first place :-)

What exactly is the site revision? An interface version in this case?  
What does this mean on a real site, i.e. virtual world? Does it  
change with every child addition/removal, or even every nested  
property value change? If so, what is the datatype, and what to do  
when it wraps?

Regarding naming, there seem to be MyType, MyTypeWrapper,  
MyTypeImpl... what exactly is the difference between the three? The  
old distinction Interface, RemoteType, LocalType does not quite seem  
to fit anymore in the way you use the new code.

Sort of confused,
Karsten Otto (kao)

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