KeyWorx was an application framework developed at Waag Society, originally suited for "live" multi-user audio/visual performances. This code base, later called the classic application, was followed in 2006 by a successor named KeyWorx/Live, developed as an open source project. KeyWorx played a role in many of the projects conducted at Waag Society, being mostly multimedia projects for education. In 2008 KeyWorx went mobile, with the development of 7scenes, a mobile platform for location-based gaming and tours.
KeyWorx was an extensible application framework that has been under development at Waag Society for a number of years. KeyWorx started its life as KeyStroke, a tool set with main focus on the performing arts. It has been renamed in 2003 due to trademark issues, and in time has gained much wider applicability.
KeyWorx aimed to enable developers to invent, develop, integrate and deploy applications with multi-user/multimedia features. A common aspect of these applications is that they aim to empower users to be the (joint) creators of multimedia content. Multimedia content may be of any form, dependent on the application services reused and/or developed for that application. Examples of services range from simple file uploading/publishing through newspaper type of multimedia document editing, drawing services and real-time audio/video sharing.
The KeyWorx platform was based on a client/server architecture. The applications that end-users perceived were clients communicating with a KeyWorx server. A KeyWorx server provided a set of common services that allow users to register, login, modify data, subscribe to data updates, upload/download files, share sessions, etc. In addition, the KeyWorx server provided a framework through which developers could plug-in additional services as server-side plug-ins. This made the platform extensible both on the client and on the server side. The main client/server communication was performed using XML. Clients could be developed using any programming technology (Director/Flash, HTML, C/C++, PHP, Java etc). The KeyWorx server was written in the Java language and did run on a variety of operating systems (Windows/Mac OS X/GNU Linux). In addition, the platform could accessed through various other communication channels like email and mobile devices. This mobile component was developed further into the 7scenes platform, containing client applications - web and mobile - that uniformly connect to services of the 7scenes platform. These services are modular and can integrate third-party services like for instance mapping and location services.
The KeyWorx platform supported two forms of multi-user interaction: synchronous multi-user (same time/different places) and asynchronous multi-user (different time/different place). Daily examples of asynchronous multi-user applications are forums, web logs, wikis and mailing lists. In general, any type of data that is created, stored and updated by multiple users and that can be read by each user at any time falls in this category. Examples of synchronous multi-user interaction are chat, video conferencing and online gaming. In this case, users perceive the immediate effect of the actions of other users.
The KeyWorx platform provided support for applications that need to use direct (synchronous) multi-user interaction. The KeyWorx server contained so called 'Spaces'. A Space is a multi-user session context that tracks the users' actions, coordinating them with other users in that Space. For example when a user enters a Space, other users in that Space get notified that a new user entered. In addition, a Space allows users to share multi-user services in real-time. Examples of services are chat, real-time data, file sharing, etc.
The KeyWorx platform not only allowed users to create multimedia content but also allowed them to store and make that content available to other users (asynchronous multi-user interaction). The platform included a generic multimedia data storage component (the Oase layer). Together with higher level data logic services (the Utopia layer) the KeyWorx platform could be used to realize a multimedia Content Management System (CMS). The KeyWorx platform also allowed asynchronous and synchronous multi-user communication to be combined. This means that data modified by one user could be perceived by other users instantaneously (synchronous) but also at a later time (asynchronous).
The term "Multimedia" in this context implies that the KeyWorx platform provided support for the creation, storage, publication and distribution of media data. Support was provided for both real-time and non real-time media data. Multimedia support ranged from simple upload/download of media files to live multi-user media streaming. Media data was stored and related to other data objects like users and other media objects. From the onset, KeyWorx took a broad approach to the meaning of media data. For example, media data may be used as control data and vice versa. The original application implemented the concept of cross-media synthesis.
The term "Multi-Channel" applied to the communication channels through which client applications interacted with a KeyWorx server. Although the main form of communication was realized using XML (over TCP/IP), applications could use several other connections ("channels") even within a single session with the server. The KeyWorx server integrated multiple channels for each user within a single session. For example, a KeyWorx web application may have started with a user session through a web browser (HTTP channel). By clicking a link in a page, a Flash application was started that connected to another channel (TCP/IP connection) that was attached to the same user session. Other examples are the use of channels (like email) and mobile technologies (like SMS).
The most visible (and audible!) features of the platform were the various client applications that have been realized since 1998. "Clients" in this context were often realized using a combination of soft- and hardware. As indicated above, there were very few constraints in the language and/or communication technology for clients.
In September 2004, the complete KeyWorx source code was released under the conditions of a 'Mozilla Public License', 'GNU General Public License' and 'GNU Lesser General Public License' triple license agreement. More information about the licensing policy used is available here.
The research for KeyWorx front-end and back-end technologies was developed within the framework of MultimediaN, a Dutch research program where institutions, companies and cultural institutions cooperate to develop advanced multimedia applications.