These devices, such as the PalmPilot, may communicate more often with one another or with a single personal computer than with an entire network. We can model this system as a set of nodes connected by a dense but very faulty network in which most links are down most of the time. In this case, two parties who wish to communicate may never be in direct contact but rather need to exchange messages through one or more intermediaries who must store the messages until an appropriate link appears. Currently, Internet e-mail is based on this paradigm.
We wish to create a communication infrastructure for the PalmPilot that is based on peer-to-peer message passing. Messages from one user to another travel link by link as the links appear, until the message eventually reaches its destination. Although we cannot guarantee delivery, since a virtual route may never exist, we can guarantee that a message is never lost until it's delivery has been acknowledged. In contrast to Internet e-mail, which often has a fixed path along which mail is sent, we do not know how much progress we have made with the delivery of a message, as we never know for sure which links will be created in the future.
Peer-to-peer communication protocols (one link) (on top of TCP ?? IP??) (a peer may either be a PDA or a larger machine - conceptually they should be similar, apart from the implementation and possibly some additional responsibilities that may be assigned to the larger (networked) machines) The distributed algorithms that maintain collective state and consistency Message management on each machine (based on 2) An API for programers to write applications on top of this system A UI for the user to manage memory usage and connection bandwidth