We need late distribution: the ability to modify the
distribution of server software without invalidating its clients.
However, the simple fact to distribute sequential software
typically affects its semantics.
Similar decoupling has been achieved in sequential programming
through static typing. Static typing is built on top of the concept of
scope. Initially, scopes were only functional. OO
extended the concept to class scopes, allowing for a
breakthrough in supporting abstraction. Nevertheless, it is functional
scopes which pave their way.
Functions, however, define scopes only by a side-effect of
sequentiality!
Distribution precisely breaks this side-effect. It does it by
introducing time into a so far timeless paradigm. To be restored as
scopes, functional scopes must be temporal. This is possible
if we design them as identifiable instances of operation
classes.
In this way, non-deterministic events may still occur at run-time,
but they are to be dealt with only within specific scopes. The
locality of programming, one great achievement of OO, is thus restored
over distributed computing.