The design of the Sprite process migration system involved a tradeoff between transparency, residual dependencies, performance, and complexity, all of which conflict with each other. Sprite emphasized transparency and performance. Transparency is difficult because it can force shared state to be distributed and difficult to manage.
Users expect to receive the full capabilities of the workstations on their desks.
The design of the kernel requires the use of kernel calls for interprocess communication. Rsh offers remote execution, but lacks transparency, eviction, performance, and automatic selection. The user, however, must choose which processes will be migrated. Processes have lots of state. Some things must be on the same machine as the process, and the overhead cannot be excessive.