Current technology provides for object A to create new object B by invoking object C. If A and B are at different sites then the object will arise at C’s site which is probably inopportune. Current technology does not provide tools to manage dynamic distribution. The distribution (site selection) usually arises from bootstrapping techniques. The directories of systems like RMI and VisiBroker can be used to control distribution but only by violating capability design. I know of no system that can deliver information on the distribution of the objects of an application. Even more remote is any suggestion on how to tune a distributed application by controlling where objects go. Most remote of all is a suggestion of how to dynamically move an object with its state to improve performance.

These are hard problems. Java has a good start at moving object behavior but not objects which are coupled state and behavior. Tools to manage distribution would need to violate the compartmentalization that is natural for capability design. Such violation may often be good design. The distribution manager need not be in a position to damage the semantics of an application. The meter keeper in Keykos can control when a suite of domains run, but not what they do.

Distribution management tools should probably allow instrumenting a running application at object interfaces to determine the consequences of a proposed move.

Distribution management logic cannot usually be entirely separated from application logic. It would be well to find tools for the distribution manager which do not require that the managed objects be reimplemented, or even recompiled, for the manager do its job. These tools must allow the manager to observe and control distribution. A name space seems necessary to identify components of the application by “type”. It may be necessary for a distribution manager to be able to identify objects of some type without having the authority to use the type.