Plugin-based Distributed Multi-user Web Applications with Plux

Markus Jahn


Abstract

Despite the fact that off-the-shelf software applications tend to become more and more feature-rich, they are still often felt to be incomplete, because it will hardly ever be possible to hit all requirements of a user out of the box, regardless of how big and complex an application is. For desktop applications, plugin frameworks are a solution for this problem, which allows developers to build a thin layer of basic functionality that can be extended by plugin components and thus tailored to the needs of individual users. For web applications on the other hand, existing plugin frameworks are not suitable to enable users to install their user-specific plugins. However, as web applications increasingly supersede desktop applications, web applications also become feature-rich and therefore should also be extensible and customizable in order to tailor it to the needs of individual users.

A number of web platforms allow developers to componentize web applications. However, as web applications are executed on a web server, but not on each client-side computer individually, in existing solutions only developers can benefit from this modularity, whereas users cannot adapt web applications with components. Moreover, existing solutions only allow changing the set of components for a web application, but they do not make web applications user-customizable, because all users are using the same set of server-side components. Developers can make their programs somewhat user-customizable, e.g., by allowing the users to adjust the user interface or to disable specific features.

This thesis presents Plux for Web, a component model and a component infrastructure for building plugin-based web applications that are customizable and extensible with individual components per user and that can be distributed among multiple computers. Thus, user-specific plugins can either be installed on the web server, or they can be installed on the users’ client-side computers.

The component model defines a metadata standard that allows adding and removing plugins in a plug-and-play manner, a deployment standard that maintains local and remote plugins for individual users, a composition standard that connects independent plugin components seamlessly to a coherent web application, an interaction standard that enables local and distributed communication between plugin components, and a customization standard that maintains optional settings for plugins. The component infrastructure implements the component model, and thus provides a platform that can assemble plugin-based distributed user-specific web applications.

Kurzfassung

Obwohl Standardsoftware immer mehr Funktionalität bietet, vermissen Anwender trotzdem oft Funktionen für ihre ganz individuellen Anforderungen. Es ist nahezu unmöglich, dass Standardsoftware in ihrem Auslieferungszustand alle Anforderungen unterschiedlicher Anwender erfüllen. Für Desktopanwendungen bieten Plug-in-Frameworks eine Lösung für dieses Problem. Diese erlauben Softwareentwicklern kompakte Kernanwendungen mit vielen Grundfunktionen zu entwickeln, die später von den Anwendern durch individuelle Plug-ins erweitert werden können. Für Webanwendungen bieten existierende Plug-in-Frameworks allerdings keine Lösung, die es Anwendern ermöglicht, ihre individuellen Plug-ins zu installieren. Da Webanwendungen an Bedeutung gewonnen haben, sollten auch sie individuell erweitert werden können, um sie an unterschiedliche Anforderungen anpassen zu können.

Einige Webplattformen unterstützen Softwareentwickler bei der Erstellung von komponentenbasierten Webanwendungen. Da Webanwendungen allerdings auf einem Webserver ausgeführt werden und nicht auf den jeweiligen Computern der Anwender, können nur Softwareentwickler oder Systemadministratoren die Modularität einer solchen komponentenbasierten Webanwendung nutzen. Anwender können solche Webanwendungen nicht mit ihren eigenen Komponenten anpassen. Außerdem ermöglichen existierende Techniken nur das Austauschen von Komponenten für alle Benutzer einer Webanwendung, nicht aber individuell für verschiedene Anwender. Üblicherweise können Softwareentwickler Webanwendungen nur für Anwender anpassbar machen, indem sie erlauben das Aussehen der Benutzeroberfläche zu verändern oder verschiedene Funktionen ein- und auszuschalten.

Diese Dissertation präsentiert das Komponentenmodell Plux für Webanwendungen und eine Kompositionsinfrastruktur, die dieses Komponentenmodell implementiert. Plux ermöglicht Anwendern ihre Webanwendungen mit individuellen Plug-ins anzupassen und zu erweitern. Dabei können Komponenten verteilt auf unterschiedlichen Computern ausgeführt werden, wodurch Plug-ins entweder am Webserver oder auf den Anwender-Computern installiert werden können.

Das Komponentenmodell spezifiziert: einen Metadaten-Standard, der es erlaubt Plug-ins per Plug-and-play zu einer Webanwendung hinzuzufügen oder zu entfernen; einen Deployment-Standard, der lokale und verteilte Plug-ins für verschiedene Anwender individuell verwaltet; einen Kompositions-Standard, der voneinander unabhängige Plug-ins nahtlos zu einer einheitlichen Webanwendung verbindet; einen Interaktions-Standard, der lokale und verteilte Kommunikation zwischen Plug-ins ermöglicht; und einen Konfigurations-Standard zur Verwaltung von optionalen Konfigurationsdaten für Plug-ins. Die Kompositionsinfrastruktur implementiert das Komponentenmodell und bietet eine Plattform zur Entwicklung von plug-in-basierten, verteilten und mehrbenutzerfähigen Webanwendungen.


PhD thesis, Johannes Kepler University Linz, Juli 2014

Download als pdf