Andreas is coming out today to help work on Jasmine. He and I spoke
about a different approach to synchronization that is more along the
lines of the Solar Croquet architecture. Solar uses a key word, called
"meta" that is used to send messages remotely. The programmer is much
more responsible for how an object acts collaboratively.
The previous example of how a window works demonstrates the difference.
In the new Mad Hatter TeaTime model, the entire TeaParty, or container
of all the objects in a shared environment, is really the basis of
collaboration. That is, any message sent via the TeaParty is
replicated. This tends to be much higher order messages like events
(pointerDown, keyDown, etc). This gives the programmer less control,
but it also allows him to not worry about managing the replication of
state. The objects all run lock-step across all of the users - totally
In the Solar model, the object is totally responsible itself for
guaranteeing synchronization. This means that the programmer needs to
determine which key pieces of state need to be shared. When an event
occurs, the object can act on the event and simply share the result, or
the object can in turn send another message that replicates the
computation. The programmer decides. The advantage is that the
programmer can design an object that is quite efficient. The
disadvantage is that the programmer needs to have a very good
understanding of the nature of the communication - what is important
and what is not.
So the question is - do we trust the programmer?
If we do move forward on the Solar/meta approach, we would need to
seriously upgrade the world synchronization capability of the system.
There are two issues, one is replication of construction - new objects,
and the other is replication of world state, replication of existing
objects upon joining a TeaParty. Currently, our model of replication of
construction is pretty bad. I think I have a way to make this work
nicely, though. We have no replication of world state at all - though I
think this too can be handled nicely.
This would mark a major divergence between Jasmine and Mad Hatter. I
think it is a good idea to build Jasmine this way if only to explore