What’s in a Name?

Several very bright colleagues have proposed in the past that it would be nice if different things had different names and that one merely used its unique name to access the thing. This indeed seems like the plausible goal of the theory of names. Such names could be embedded in data carried from one world to another.

Several drawbacks to this plan arise whose resolution bears on capability theory. Here are some:

Perhaps principled exemptions can be found to handle the above cases. I am skeptical of solutions that propose to use indistinct names with a prescription for pretending that the names are distinct. On the other hand here is a proposal for unique names.

Capabilities are often described as protected names. The program holding and wielding a capability is unable to interpret the capability as bits. The scope of uniqueness of the bits that actually compose a capability is now under control of a program that is in a position to manage the tradeoffs of this scope. This program is typically outside the application logic. If I have two computers running capability systems side by side then each is likely to code capabilities to be unique within its own space. If I buy a new computer with the power to host both systems I will have to recode the representations of capabilities to provide uniqueness across the combined system. This can be done transparently to the code that defines objects and indeed to all code that is unaware of the number of bits within the capability. See Password Capability System about a scheme that purports to expose the bits of capabilities and yet provide confinement.

The converse situation arises when we require a system built on capability ideas that must be distributed across several classical capability domains. We may require the power of more machines than can practically share memory, or perhaps parts of the application must reside at different geographic sites due to bandwidth costs or latency limitations. CORBA IDL is an approach to this if we recognize capabilities as object references.

Some related notes.
Zooko’s triangle addresses these issues and others.