It seems everyone is in on the action of supporting widgets of some sort whether it's an operating system or an application, or even a web page.
However, there has been no real standard for widgets (or gadgets if you prefer the Microsoft terminology) and so most cannot be used on multiple platforms - just the intended platform.
This is going to change hopefully in the near future when people start switching to the W3C standard once it is in the stages of being finalised. At present it is in a very rough version as a working draft and so is likely to change at any time to some version that is totally different, or may only have slight changes made. There is also still a lot to be specified in the Working Draft: Widgets 1.0 specification.
Although it's not final we can still get a rough feel for what is intended with the specification by looking at it. The W3C define a widget as being:
interactive single purpose application for displaying and/or updating local data or data on the Web, packaged in a way to allow a single download and installation on a user's machine or mobile device
According to this definition a widget is basically a series of files that work together for a single function and can work with other similar packages to form a complete page. What is specified for this standard can be narrowed down to:
- A method of packaging the widget
- XML-based config file the widget containing it's description
- A model for loading the widget
- HTTP-model for version control (i.e. method content cache control)
- A set of standard events for widgets that can be defined using JavaScript
- A way for widgets to communicate with one another
- Security and Digital Signatures for widgets
- A widget "discovery" method similar to RSD for web services
- Accessibility requirements of widgets
- Internationalisation / Localisation
These 9 points are what the W3C believe to be important about a widget in order to make it generic for all systems, and usable for all.
Amongst the terms that they define is a "Widget Resource" - this is a collection of all files and the XML based configuration document encapsulated together in a ZIP compressed file to make it easy to share with others. Also defined is the term "widget user agent"; this means an application that attempts to support the W3C Widget specification although it must also support standards for ZIP, XML 1.0, XML namespaces, PNG, GIF87, GIF89, HTTP 1.1, XMLHTTPRequest, and ECMAScript. Though it is possible a Widget user agent may require further support in the future, at present we can assume the widget user agent is your browser.