@Part( intro, root "text" ) @Section(Introduction) The @i[naming] problem in distributed systems is the problem of assigning names to services, objects, and operations, and providing a means of mapping from names to the entities they represent. For example, one needs to name files and to have a mechanism for mapping file names to files. Good system design puts forward such principles as uniformity, minimal duplication of function, extensibility, efficiency, and reliability. These principles, however, are not always compatible with one another. Uniformity suggests that a system should be designed to provide a uniform syntax for names and uniform use of operations on these names. For example, the operation @example{Delete(object@uf()name)} should delete the named object, independent of what it is, how it is implemented, and where it resides. Minimizing the duplication of function suggests that name-handling be isolated in one name-handling module which is made available to processes in a distributed system as a server. That is, the name server executes this module in response to client requests, whether as messages or as remote procedure calls. Much previous work in naming has stressed the importance of uniform naming and explored name service as a separate service from the services that implement the objects to be named. In contrast, we have been exploring @i[distributed name interpretation] in the V-System, with naming distributed across the servers, and each server implementing the naming for the objects and operations it provides. This collection of name spaces and name-handling servers is unified by two intentionally minimal mechanisms: a @i[name-handling protocol] and a @i[context management] mechanism. The name-handling protocol provides uniform client access to all name-handling servers: any V server implementing one or more name spaces or @i[contexts] must conform to the name-handling protocol. The protocol imposes minimal restrictions on name syntax, and no restrictions on name interpretation or the number of name-handling servers. The context management system provides symbolic naming of multiple contexts using client-selectable @i[context prefix servers] as well as an efficient implementation of @i[current context]. We argue that our approach is efficient, encourages consistency between names and named entities, and is particularly flexible in name syntax and interpretation. It is also easily extensible to existing systems and name spaces, such as computer mail, which are used in V but were developed independently. The next section discusses approaches to the naming problem. We then provide an overview of the V-System. Section @ref(lowlevel) describes V-System low-level naming, and section @ref(csnaming) discusses character-string naming, including the name-handling protocol and context prefix servers. Section @ref(implementation) describes our current implementation and our experience with it to date, from the standpoints of both performance and functionality. We close with conclusions and an indication of future directions.