PRIMIBase - Winter Term 2004/2005
DescriptionPRIMI is the top-level name for a series of projects aiming to create an open and extensible research platform in the field of computer-mediated communication esp. instant messaging. Central research issues are communication protocols, graphical user interfaces, basic and advanced services, and application integration (cf. Figure 1). Client and server side aspects are considered.
Figure 1. A general overview. The PRIMIBase project realized the core platform, a GUI and a communication protocol plugin.
PRIMIBase is the first subproject. Its goal was to develop the core platform and services needed in future projects. Among these are high and low level services. High level services offer bundled functionality or part aspects of lower level services to other parts of the application. PRIMIBase implements services for the general administration of plugins (plugin service), the administration of communication protocol plugins (connector service), and application-wide multilevel logging (log service). These services can be configured at runtime using the application's configuration window (cf. Figure 2).
picture not found img/wiki_up//configurationframe
Figure 2. The configuration window. It allows to select and configure GUI and connector plugins as well as the log level. Once a configration is chosen the application can be launched.
The plugin architecture makes it possible to add your own and third party graphical user interfaces and connector plugins. The latter implement communication protocols. One may install plugins locally in the application's plugin directory or via the network, simply by providing its URL. The plugin is downloaded and deployed at runtime. All of this allows plugging together a multiprotocol instant messenger with a user interface of your choice (cf. Figure 2).
A core feature distinguishing PRIMI from all other instant messaging applications is its extensive logging capability. The log service offers a multilevel logging facility based on Sun's Java Logging API. The detail of logging can be configured at runtime. Local and remote logging (using XML-RPC) is supported. However, plugin developers do not have to consider logging in their plugins. The platform services provide containers based on Gamma et al's (1994) Proxy Pattern to do the trick (cf. Figure 3).
Figure 3. The Proxy Pattern (Gamma et al. 1994). Connectors do not have to provide any logging code nor do plugin programmers need to know about the logging architecture. The platform wraps these objects into connector proxies which perform the logging actions according to the platform’s needs.
Besides PRIMI's core platform we also implemented two reference plugins. We chose to implement a communication protocol plugin based on the Extensible Messaging and Presence Protocol (XMPP) defined in RFCs 3920-3923. It is also known as the Jabber protocol. The plugin was developed using the Adapter Pattern (Gamma et al. 1994) to integrate a third party library (Smack-Lib) with the platform's connector API. Thus PRIMI can be used as a regular Jabber client.
Last but not least we provide graphical user interface reference plugin. It offers multiprotocol support and allows the administration of multiple accounts. Besides that it provides standard presence awareness and chat features, yet utilizing our platform services. The plugin is able to control numerous connector plugins within one GUI (cf. Figure 4 and 5).
Figure 4. Our GUI reference plugin offers a multiprotocol instant messenger interface. Multiple user accounts are supported.
Figure 5. Concurrent chats appear tabbed in a single window. The clients local history shows just one aspect of the platforms logging capabilities.
Starting from the left: Tom Gross (Supervisor), Robert Gerling,
Yunlu Ai, Andre Kunert, Christoph Oemig (Supervisor), Kai Riege