In an effort to expedite the standardization of widgets, the Web Application Formats Working Group yesterday decided to split the Widgets 1.0 Specification into three (or more) specs:
- Widgets 1.0: Packaging and Configuration
- Covers Zip packaging and XML configuration document
- Defines the processing model for XML and Zip
- Widgets 1.0: Digital Signatures
- XML Digital Signature profile
- Widgets 1.0: APIs and Events
- All the functions, properties, and events you know and love.
- I’ve asked Arve Bersvendsen, of Opera, to be the lead editor. Unfortunately, he is tied up till mid April… probably making something awesome for Opera.
Other specs may also follow, particularly:
- Widgets 1.0: Automatic Updates (I personally think this one is critical)
- Widgets 1.0: Cross-widget Communication
Other documents are still under development too:
- Widgets 1.0: Requirements
- Widgets landscape
- A look at how widgets are created and what features are supported across popular widget engines.
We are aiming to have all these done (ie. Last Call) by October. However, now that the document split has happened, I should be able to get the packaging format done fairly quickly.
We have more or less now settled on the configuration language format. The elements are going to be:
- <widget width=”” height=”” id=””>
- <title: the title/name of a widget
- <description> a description
- <author email=”” url=””> some details about the author
- <license> paste your GPL here! 🙂
- <icon src=””> the icon
- <access network=”true|false” plugins=”true|false”> if your widget need to get online
- <content src=””> some file in the widget archive
Only <widget> and <content> are mandatory at this point.
The processing model for the XML is going to be quite forgiving. The only thing that will cause an error, is not having a well-formed document. For example, the following the following would result in “The Awesome Super Dude Widget” as the title:
<widget xmlns="http://www.w3.org/ns/widgets">
<title> The <blink>Awesome</blink>
<author email="dude@example.com">Super Dude</author> Widget</title>
</widget>
The unrecognized elements are simply ignored, but their text content is extracted. This makes processing more forgiving and allows for extensibility and some graceful degradation. I also want to push that the widget should function if the namespace is omitted.
We are also currently investigating how we are going to deal with internationalization in the configuration document format. We are looking at following ideas from the Best Practices for XML Internationalization.