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.