Why can't we simply structure existing systems and software this way? In typical systems, the ``operating system'' (the kernel, and any daemons running with special permissions) implements access control, as well as distribution, and a naming mechanism that provides the appearance of a uniform system. Because those components are under administrative control, the user has no hope of altering the aggregation mechanism to integrate remote resources.

Applications that are likely to be used across administrative domains implement application-specific distribution mechanisms. However, without access to the source and a lot of free time, the user is unlikely to modify all of his applications to provide himself with a coherent, personal single-system image.

In order to meet our goals, we need to factor naming and distribution out of the OS (and out of applications), into modules that the user can configure and replace at will. Applications can then assume they run on top of a single-system image, leaving the aggregation decisions up to the user.