“Widget” is a term that usually designates an “element of a graphical user interface (GUI) that displays an information arrangement changeable by the user” (see Wikipedia GUI Widget). However, the term is now often associated with small interactive applications that run in a Widget Engine. Many companies have started working on Web widgets (embedded in Web pages) or standalone software widget (e.g. running as a standalone application on a desktop or in a mobile). Examples of existing widgets solutions are: Opera Widgets, Google Gadgets, Yahoo! Widgets, Apple Dashboard, …If you want to know more about the existing solutions, the W3C published a document that well describes the Widget Landscape.
Standardization efforts
Several standardization activities have started in this area to enable interoperability between widgets and widget engines. The leading activity is the W3C widgets family of specifications.
MPEG is also working in this area and producing a standard, ISO/IEC 23007, called MPEG-U, following additional requirements and enabling different use cases. A particular use case, not covered by the W3C activity, is the support for widget communications and widget mobility, especially in the home network. For more information on this, have a look at my related pages (MPEG-U, MPEG-U & UPnP).
The Open Mobile Terminal Platform is also working in this area within the BONDI Activity to enable widgets author to use interoperable APIs to access nice mobile device features (e.g. address book …).
Implementations
The Multimedia Group of Telecom ParisTech is involved in this activity and implements some of these specifications as part of the GPAC project. More specifically, the GPAC project features a multimedia player capable of playing many audio-video content but also interactive content like SVG, MPEG-4 BIFS , X3D… As part of the Widgets work, we modified the implementation of the player to include support for W3C and MPEG-U Widgets standards. The developments are composed of:
- a new module, in charge of validating widget packages, processing configuration documents, providing W3C widget script interfaces, and implementing the MPEG-U normative behaviors;
- special scenes, written in SVG (or BIFS) with some JavaScript, which implement layout managers for presenting widgets and manipulating them (resize, move, close, add …), and enabling widget transfer according to the MPEG-U standard.
The code is released as part of the GPAC SVN (look in particular in the gui directory and in the modules/widget_man directory). This implementation was demoed already in several places including at the SVG Open Conference 2009 (slides), where an SVG Widget User Agent and several SVG Widgets were shown. You can have a look at the level of support of W3C widgets Packaging and Configuration in GPAC by looking at the implementation report.
There exists other interesting implementations, not with MPEG-U support though, you can check the list here.