User-Controlled Resource Configuration, continued
Configurable Component Organization
Because software components employ user-supplied namespaces exclusively to locate resources, we avoid the need for process-relative names. In traditional systems, programs are written with careful attention to how they fit into process granularity. Once a program leaves the programmer's hands, its orginization is fixed, because each process-sized unit requires and carefully shares the resources of a single process. Snowflake software can be written without regard to how objects pack into processes. Because components don't acquire resources from the process object but from a user-supplied namespace, multiple components can be colocated into one protected process context, or individual components may be separated across contexts or across machines. The organization of components in contexts can be assigned at runtime according to the user's safety and performance requirements.

Traditional programs "plug in" to the process construct to acquire resources. Two such programs could not coexist in a single traditional process.

Snowflake components acquire resources via their own user-supplied namespaces, and can happily coexist in a single protection domain.