
With the public release of the KeyWorx platform source code the purpose of the keyworx.org website has changed. From now on this website will provide information about the entire KeyWorx application framework. The old KeyWorx application (KeyWorx 0.9) suiting "live" multi-user audio/visual performance that was previously available at keyworx.org is still available for download here , but work on the old code base has stopped. Currently a successor of the classic application, going under the name of KeyWorx/Live, is under development as an open source project .
KeyWorx is an extensible application framework that has been under development at Waag Society for the last 5 years. KeyWorx started its life as KeyStroke, a tool set with main focus on the performing arts. It was been renamed in 2003 due to trademark issues, and in time has gained much wider applicability.
KeyWorx is a software platform that aims 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 is based on a client/server architecture. The applications that end-users perceive are clients communicating with a KeyWorx server. A KeyWorx server provides 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 provides a framework through which developers can plug-in additional services as server-side plug-ins. This makes the platform extensible both on the client and on the server side. The main client/server communication is performed using XML. Clients may be developed using any programming technology (Director/Flash, HTML, C/C++, PHP, Java etc). The KeyWorx server is written in the Java language and may be run on a variety of operating systems (Windows / Mac OS X / GNU Linux). In addition, the platform may be accessed through various other communication channels like email and mobile devices.
The platform supports 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 provides support for applications that need to use direct (synchronous) multi-user interaction. The KeyWorx server contains 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 allows users to create multimedia content but also allows them to store and make that content available to other users (asynchronous multi-user interaction). The platform includes a generic multimedia data storage component (the Oase layer). Together with higher level data logic services (the Utopia layer) the KeyWorx platform can be used to realize a multimedia Content Management System (CMS).
The KeyWorx platform also allows asynchronous and synchronous multi-user communication to be combined. This means that data modified by one user can 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 provides support for the creation, storage, publication and distribution of media data. Support is provided for both real-time and non real-time media data. Multimedia support ranges from simple upload/download of media files through live multi-user media streaming. Media data can be 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 KeyStroke application, now known as Kwart implemented the concept of cross-media synthesis.
The term "Multi-Channel" applies to the communication channels through which client applications interact with a KeyWorx server. Although the main form of communication is realized using XML (over TCP/IP), applications may use several other connections ("channels") even within a single session with the server. The KeyWorx server will integrate multiple channels for each user within a single session. For example, a KeyWorx web application may start with a user session through a web browser (HTTP channel). By clicking a link in a page, a Flash application may be started that connects to another channel (TCP/IP connection) that attaches 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 are the various client applications that have been realized since 1998. "Clients" in this context are often realized using a combination of soft -and hardware. As indicated above, there are very few constraints in the language and/or communication technology for clients. For more detailed information on the KeyWorx Platform and on how to implement clients for the platform, please refer to the KeyWorx White paper [pdf] [html].
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 our licensing policy is available here.
The current research for KeyWorx front-end and back-end technologies is being developed within the framework of MultimediaN, a Dutch research program where institutions, companies and cultural institutions cooperate to develop advanced multimedia applications.