[OT] Insight on distributed computing wanted

Martin Drautzburg martin.drautzburg at web.de
Fri May 14 15:55:37 UTC 2004

I've been pondering over the question: 

        "information is no much easier to transport than material
        objects, so why is distributed computing so difficult".

It is haunting me. I wrote down some thoughts and I'd be happy to
receive some pointers or feedback. I am only posting it here, because
I know there are some thoughtful people on this list.


	Moving an object from one place to another means to detach it
	from its original world and attach it to a new world. As
	Einstein would say: you can always see the object as
	motionless and the world around it as moving.

	This means that there has to be a well-defined boundary
	between the object and its world. This is "obvious" for
	material objects (quantum physics ignored) but non obvious for
	Smalltalk objects.

	Objects ultimatively reference their worlds. A Canvas object
	eventually references my graphics card, my monitor and the
	eyes and the brain of me, the user. None of these objects can
	be transported easily, so the boundary between a Canvas object
	and its world is definitely above the graphics card.  The
	graphics card and all other material objects are
	"immobile". Maybe even the Canvas object itself is immobile.

	In any case there are mobile and immobile Objects.

	When the world of an object is replaced the object needs to
	attach itself to a new world. If the object should expose a
	"similar" behaviour in the new world, then the two worlds must
	be reasonably alike. The same is true for material objects.


	You can use objects from a distance by remote-controlling
	them. In that case, the objects itself does not move, but it
	sends and receives objects.

	A TV remote control sends IR pulses to the the remote object
	(the TV set) and the TV set sends light to the spectator. Both
	the IR pulses and the light are objects that are known to be
	very mobile. This is why this works.

	In an RPC scenario you typically send simple objects
	(integers, strings) across the wire. Again these kind of
	objects usually behave well when their worlds change as long
	as they do not reference their world. A string ":0" meaning
	my DISPLAY can be sent easily but it actually has a reference
	to my monitor. Sending such an object will sometimes work (it
	will reference the DISPLAY of the receiver) and sometimes not.

	If you however send more interesting objects like Canvases
	across the wire, then things aren't that simple anymore.


	You typically don't want to expose too much information. An
	object on the sender side may "know more" than is relevant for
	the receiver. Likewise the object on the receiver side may
	know more about the receiver than is relevant for the sender.

	This means that objects have to "mutate". They can be in one
	of three states:

	- objects attached to the sender's world
	- object detached
	- object attachted to the receiver's world

	The detached object carries a minimal common subset of the
	information that is present in the attached objects.


More information about the Squeak-dev mailing list