A vital goal of MPA is to allow for the easy integration of new applications. To achieve this goal, we limit application-specific knowledge to small, modular blocks called Application Drivers. All other parts of MPA have to know only what types of application-specific protocols there are, not the details of each protocol.
Ideally, a driver should be able to convert any communication to any other format; however, in practice it is doubtful whether this is practical or desirable. In some situations the best a driver can do is to embed one format within another (e.g., embed a voicemail message as a sound file within an email message). Generally we can distinguish four types of drivers:
It is important to note that while the Application Drivers are shown in Figure 4 as being completely contained within the Personal Proxy, a driver can be built using a client-server model. Most of the real work could be accomplished by a server on a different machine; the local driver would be a simple stub that communicates with the server. The Berkeley NINJA Project [GWBC99] demonstrates the potential of such a system (see Section VI).
Message storage, performed in the figure by the calendar server and the POP3 server, is outside the scope of the Personal Proxy. In our design, we leverage the support for message storage already provided by applications.