Everything is a distributed object

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
21 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Everything is a distributed object

Michael van der Gulik
Martin Drautzburg wrote:

> Hello all,
>
> I've seen various attempts to add distributed computing capabilities on top of
> an existing language. For a true distributed system I would expect it to be
> possible to instantiate objects of a remote class or to subclass a remote
> class and other stuff like this. My impression is that those things are
> difficult when built on top of an existing language.
>
> Since the paradigm "everything is an object" pays so well, I thought it might
> be less painful to implement a distributed system from ground up, starting
> with the paradigm: "everything is a distributed object". Maybe languages like
> Erlang and E get close to this paradigm. Other than those I am not aware of
> any attempts to implement distributed computhing in this way (from ground
> up).
>
> Are you aware of any ?

I'm working on one; http://www.squeaksource.com/DPON.html. Note that the
version there is really, really old and doesn't run. My current version
does remote invocation and a few other nice things, but is still very
unstable. I can't release it until I've sorted out IP issues with my
current employer (or get fired :-) ).

For the record: Distributed computing is *hard*. I think in terms of
asynchronous, reliable message passing. You have to remember that the
message might be slow, or that it might be very slow so that random
messages turn up when you considered them lost, or remote hosts might
die, or the worst: remote hosts might just get plain confused. Add
security to the mix and the mind boggles.

The original, old, architecture doc is here:
http://www.gulik.co.nz/dpon_design.pdf. This is also out of date.

The architecture I've thought up allows any old Smalltalk object to be a
distributed object, including SmallIntegers, Classes (including
MethodDictionaries), and hopefully BlockClosures when I get that far.
Each object can be replicated using any algorithm - so far I've done
CopyRepAlg (which is pass-by-copy), remote object invocation and a
couple of master/slave broadcasting algorithms. The distribution is
seamless (in that you use a distributed object just like a plain object)
except that if something goes wrong, it'll hang :-).

I've also had a good think about using capabilities for security and
"Domains" for making sure that untrusted code can run locally without
consuming too many resources or getting unauthorised access to stuff.
The code for the Domains stuff is in
http://www.squeaksource.com/Domains, and a description is here:
http://people.squeakfoundation.org/article/62.html.

Cheers,
Michael.


12