Directories are also a good example of the need to eliminate network dependencies. Today, directories are a vital piece of network and systems infrastructures. We rely on a networked directory to translate domain names to network addresses. We rely on web client and operating system directories to tell us what application is best suited to opening a file. Yet directories are often problematic in an ad-hoc space.
The problem is best explained by examples. Suppose Cheryl and David walk into a conference room. Cheryl has a copy of a document that David needs and both PCs are part of the local ad-hoc network, but are not currently connected to the Internet. Cheryl should be able to tell David the name of her PC and he should be able to FTP a document from it. That means that the traditional domain name system lookup, which depends on the Internet's distributed domain name system, will have to be bypassed and use some local directory service to map the name of Cheryl's machine into a local address.
Now consider the problem of displaying a document from a web browsing device. A web browser typically contains an internal directory mapping file names to applications that can display them. In an ad-hoc space, the applications will generally not reside on the browsing device, but will be distributed on various storage devices, which may or may not be carried by the user of the browser. How does the browser find the right application (of the right version, that runs on the browser's processor) in the local ad hoc network?
Note that a straightforward approach, namely registering with a registry when one joins a smart space, doesn't work well. First, the assumption of a registry device introduces a dependency on the registry, both that it exists and is functioning in the space. We are just trading one dependency for another. Second, the volume of information that needs to be registered could be quite high (e.g., a list of all executable applications on a hard disk) and changing rapidly (that hard disk may have been in the pocket of someone who just walked past your conference room). Third, the bandwidth available to some of the smart devices may be low, hence making access to a registry that covers a large number of items expensive.
We suspect that the registry may have to be fully distributed. That is, all interested devices keep track of the part of the registry they care about, and devices advertise their properties to everyone. Some balance of pushing data, and querying for data when the data is needed, will have to be found. Alternatively, a service resolution protocol might be useful. A service resolution protocol multicasts requests for particular services, as needed. The advantage of such a protocol is that it is demand driven. No one needs to keep track of temperature sensors if no application is using one.