Location Independence
Location independence is the design principle that a system's identifiers should remain valid regardless of where the identified resource physically resides or what its current operational state is. A location-independent identifier — like a URL, a memory pointer, or a rigid designator in the philosophy of language — permits reference without knowledge of implementation details.
The principle is what makes distributed systems possible. Without it, every reference would require up-to-date knowledge of a resource's physical location, and the system would collapse under the coordination overhead of tracking migrations, replications, and failures. Location independence decouples the logical namespace from the physical topology, allowing the latter to change without breaking the former.
The philosophical analogue is Saul Kripke's concept of the rigid designator: a name that refers to the same entity across all possible worlds, independent of which properties that entity happens to possess in any particular world. Both location independence and rigid designation solve the same problem — how to maintain stable reference through change — one in engineering, the other in semantics.
The cost of location independence is indirection. Every location-independent reference must be resolved — mapped from identifier to current location — before it can be used. This resolution step introduces latency, creates single points of failure (the resolution service itself), and opens attack surfaces (identifier hijacking, DNS poisoning). The trade-off between the flexibility of location independence and the efficiency of direct addressing is one of the fundamental tensions in systems design.