Abstract
This document lists the design goals and requirements that a
specification would need to address in order to standardize various
aspects of widgets. Widgets are small client-side Web
applications for displaying and updating remote data, that are packaged in
a way to allow download and installation on a client machine, mobile
phone, or mobile Internet device. Typical examples of widgets include
clocks, CPU gauges, sticky notes, battery-life indicators, games, and
those that make use of Web services, like weather forecasters, news
readers, email checkers, photo albums and currency converters.
Status of this Document
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This section describes the status of this document at the time of
its publication. Other documents may supersede this document. A list of
current W3C publications and the latest revision of this technical report
can be found in the W3C technical reports
index at http://www.w3.org/TR/.
You can always find the latest Editor's
Draft of this document in the W3C's CVS
repository; it is updated on a fairly regular basis.
This is the 25 June 2008 Last Call Working Draft version of the "Widgets 1.0: Requirements" document. The Last Call period ends on 1 August 2008. This version reflects nearly two years of gathering and refining requirements for the Widgets 1.0 family of specifications. The requirements were gathered by extensive consultation with W3C members and the public, via the Working Group's mailing lists (WAF archive, WebApps archive). The purpose of this Last Call is to give external interested parties a final opportunity to publicly comment on the list of requirements. The Working Group's goal is to make sure that vendor's requirements for Widgets are complete and have been effectively captured. The Widgets 1.0 family of specifications will set out to address as many requirements as possible (particularly the ones marked with the keywords must and should).
This document is produced by the Web Applications (WebApps)
Working Group (WG). This WG is part of
the Rich Web Clients
Activity and this activity is within the W3C's Interaction Domain. The public
is encouraged to send comments to the WebApps Working Group's public
mailing list public-webapps@w3.org (archive).
See W3C mailing list and archive usage
guidelines.
This document was produced by a group operating under the 5 February
2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in
connection with the deliverables of the group; that page also includes
instructions for disclosing a patent. An individual who has actual
knowledge of a patent which the individual believes contains Essential
Claim(s) must disclose the information in accordance with section
6 of the W3C Patent Policy.
Table of Contents
1. Introduction
A widget is an 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. A widget may run as a stand alone application
(meaning it can run outside of a Web browser), or may be embedded into a
Web document. In this document, the runtime environment on which a widget
is run is referred to as a widget user agent and a
running widget is referred to as an instantiated widget. Prior to
instantiation, a widget exists as a widget
resource. For more information about widgets, see the Widget Landscape document.
As argued by the Widget Landscape
document, there is currently no formally standardized way to author,
package, digitally sign and internationalize a widget resource for
distribution and deployment on the Web. In the widget space, although many
successful widget user agents are now on the market, widgets built for one
widget user agent are generally not able to run on any other widget user
agent.
This document lists the design goals and requirements that
specifications need to address in order to standardize how widgets are
authored/scripted, digitally signed, secured, packaged and deployed in a
way that is device independent, follows W3C principles, and is as
interoperable as possible with existing market-leading user agents (known
also as widget engines) and existing Web browsers.
To be clear, this specification describes the requirements
for installable/desktop-style widgets (akin to Dashboard, Opera Widgets,
and Yahoo!'s Konfabulator Widgets). This document does not address the
requirements of "web widgets", such as iGoogle Gadgets or
Windows Live Gadgets.
This section is normative.
The key words must, must not,
required, not required, should, should not,recommended, may, and optional in the normative parts of this document are to be
interpreted as described in RFC2119.
This specification only applies to one class of product: W3C Technical
Reports. The working group will attempt to standardize widgets by
addressing the requirements listed in this
document through a number of related specifications:
- Widgets 1.0: Packaging and Configuration
- Widgets 1.0: Automatic Updates
- Widgets 1.0: APIs and Events
- Widgets 1.0: Digital Signatures
Note, however, that not all requirements may be addressed by
those specifications, particularly requirements marked with the key word
may.
A conforming specification is one that
addresses all the requirements (particularly those that contain the words
must
or must not
) listed in this document.
A conforming specification must attempt to address all
requirements marked as should and may unless there is a
technically valid reason not to do so. The validity of technical reasons
for not addressing should or may requirements will be
determined by the working group members, and through communication with
vendors and the public on the Working Group's public mailing list public-appformats@w3.org (archive).
3. Design Goals
This section is informative.
This section lists the design goals that the
working group recommends a conforming specification adopt when attempting
to standardize the various standardizable aspects of widgets identified in
the Widget Landscape document. The
requirements are directly motivated by the following design goals. The
design goals are listed in alphabetical order.
- Accessibility:
- A conforming specification needs to support relevant accessibility
guidelines.
- Compatibility with other standards:
- A conforming specification needs to maintain compatibility with, or
directly make use of, other standards where possible.
- Current development practice or industry
best-practices:
- A conforming specification needs to consider the development practices
currently used by widget developers and promote relevant industry
best-practices.
- Device independence:
- A conforming specification needs to support relevant device
independence guidelines.
- Ease of use:
- A conforming specification needs to specify solutions that are easy to
use and avoid unnecessary complexity, meaning that a widget resource
should be easy for authors to create without requiring special software,
and easy for end-users to acquire and install/run.
- Internationalization and
localization:
- A conforming specification needs to support relevant
internationalization and localization guidelines, as well as consider
current practical internationalization solutions used by the widget
development community.
- Interoperability:
- A conforming specification needs to attempt to be as interoperable as
possible with existing market-leading widget user agents.
- Longevity:
- A conforming specification needs to be specified in such a way that it
ensures that a widget resource can still be processed well into the
future (e.g. 100 years from date of the a specification reaching
Recommendation Status
W3C
Process).
- Security:
- A conforming specification needs to address the security concerns of
end-users and vendors by recommending appropriate security policies and
programming behavior. A conforming specification must also consider the
distribution and deployment security requirements as they relate to
authors and vendors.
- Web and offline distribution:
- A conforming specification needs to deal with cases where an end-user
acquires a widget resource over HTTP or
via some other non HTTP-based (offline) means, such as a local file
system, Bluetooth or a Multimedia
Message Service.
4. Requirements
This section enumerates the requirements
that a conforming specification would need to address to standardize
widgets. These requirements are directly motivated by the design goals and
are based on an iterative process of feedback from the public, discussions
with various vendors, and a survey of market-leading widget user agents.
4.1 Packaging
This section enumerates the requirements that a conforming specification
needs to address to standardize the packaging format of a widget. The
objective of this section is to ensure that a conforming specification
recommends a general packaging format that is, amongst other things:
- Already a de facto standard on market-leading widget user
agents on both desktops and mobile devices.
- Able to be used in multilingual contexts.
- Suitable for mobile devices.
- Able to support digital signatures.
R1. Packaging
Format
A conforming specification must recommend a
packaging format that is royalty free, open, and widely implemented across
market-leading widget user agents and compatible with mobile devices. In
addition, a conforming specification must specify
exactly which aspects of the packaging format are to be supported by
conforming widget user agents.
- Motivation:
- Compatibility with other standards, Web and offline distribution, device independence, ease of
use, current development practice or industry
best-practices, internationalization
and localization, longevity.
- Rationale:
- To specify an interoperable and pervasive packaging format that is
relatively easy for vendors to implement, and easy for authors to
use/access on any platform.
R2. File
Extension
A conforming specification must specify a file
extension for widget resources not intended to be sent over HTTP. In addition, a conforming specification
should recommend that a widget resource always
contains a file extension, even when being sent over HTTP.
- Motivation:
- Device independence, ease of
use, Web and offline distribution, longevity.
- Rationale:
- When a MIME Type is not
present, as is the case when a widget is instantiated locally from an
end-user's storage device, the operating system will sometimes use the
file extension to associate the widget resource with the appropriate
widget user agent. However, when the widget is distributed over HTTP and a MIME type is present, a file
extension may not be required. Note also that, in some cases, Web servers
may also rely on a file extension to correctly set a widget resource's
MIME type in the HTTP headers.
R3. Internal
Abstract Structure
A conforming specification must recommend a
packaging format that supports structuring resources into collections such
as files and directories (or similar logical containers). In addition, the
packaging format should allow authors to add and
remove resources of a widget resource without needing to recreate the
widget resource.
- Motivation:
- Ease of use, current
development practice or industry best-practices.
- Rationale:
- To provide authors with a format that is easy to use in a development
process.
R4. Reserved
Resources and Directory Names
A conforming specification must indicate if any
resources (files or directories or similar logical containers) are
mandatory or reserved and what specific function they serve in the widget
resource. A conforming specification must specify
graceful error handling/recovery procedures if those resources are used
erroneously or are missing.
- Motivation:
- Ease of use, Compatibility with other standards, current development practice or industry
best-practices.
- Rationale:
- To make it more efficient for widget user agents to locate the
resources they require at runtime. For example, the packaging format may
require authors to place all resources inside a '
resources
'
directory located at the root of the widget resource.
R5. Addressing Scheme
A conforming specification must specify or recommend
an addressing scheme to address the individual resources within the widget
resource at runtime. The addressing scheme must be
able to address individual widget instances, while potentially allowing
widgets to address each other. The addressing scheme must
not expose the underlying file system to the instantiated widget and
an instantiated widget must not be able to address
resources outside the widget resource via the addressing scheme. The
addressing scheme should be one that web authors would
feel comfortable using or are already accustomed to.
- Motivation:
- Ease of use, compatibility with other standards, current development practice or industry
best-practices, security.
- Rationale:
- To allow resources to be resolved and normalized within DOM
attributes. To make it easy for authors to address and load resources
into their instantiated widgets, either declaratively or
programmatically. For example, addressing a resource via an IRI (e.g.
new
Image('../images/pane.png')
).
R6. Multilingual Resource Names
A conforming specification should recommend a
packaging format that is suitable for multilingual contexts, giving
authors the ability to name files and directories using characters from
the Unicode character repertoire; in
such a case, a conforming specification should
recommend the UTF-8 encoding.
- Motivation:
- Internationalization and
localization, current development practice or
industry best-practices, ease of use, interoperability, longevity.
- Rationale:
- To allow authors to create files and folders using characters beyond
the ASCII character repertoire.
R7. Internationalization Guidelines
A conforming specification must provide guidelines
that explain to authors how resources need be structured for the purpose
of internationalization.
- Motivation:
- Internationalization and
localization, current development practice or
industry best-practices, ease of use, interoperability.
- Rationale:
- To both guide and encourage authors to localize content. For example,
the specification could mandate that authors place localized content into
a strictly named directory structure that denotes localized content (e.g.
'resources/en/
' for all English content,
'resources/en-au/
' for further localized Australian-English
content, and so on).
R8. Automatic
Localization
A conforming specification should specify a
processing model that automatically localizes content when authors follow
the internationalization guidelines.
- Motivation:
- Internationalization and
localization, current development practice or
industry best-practices, ease of use, interoperability.
- Rationale:
- To define an internationalization model, complete with error handling,
the reduces the amount of engineering work an author needs to do in order
to localize a widget.
R9. Device
Independence
A conforming specification must recommend a
packaging format that is suitable for delivery onto many devices,
particularly Web-enabled mobile devices.
- Motivation:
- Device independence, Web and
offline distribution, interoperability.
- Rationale:
- To recommend a packaging format that is interoperable with desktops
and for mobile devices, where the widget space is currently growing.
R10. Data
Compression
A conforming specification should recommend a
packaging format that supports optional data
compression. A conforming specification should also
recommend at least one royalty-free default compression/decompression
algorithm that is compatible with market-leading widget user agents and
implementations of the packaging format on mobile devices.
- Motivation:
- Web and offline distribution, device independence, current
development practice or industry best-practices.
- Rationale:
- To make a widget resource smaller for delivery over HTTP, where the cost of data access is sometimes
expensive for end-users. Compressing might also help with transfer speed
when a widget resource is sent over a communication channel with limited
bandwidth, such as Bluetooth or infrared. Compressed widgets may also
have a lesser impact on a device's battery during download.
R11. Digital
Signature
A conforming specification must specify a means to
digitally sign resources in a widget resource and a processing model for
verifying the authenticity and the data integrity of the widget resource.
The digital signature scheme must be compatible with
existing Private Key Infrastructures (PKI), particularly X.509 digital certificates. In addition, the
recommended digital signature format should support
certificate chaining and the ability for a packaged to be signed by
multiple authorities (i.e., multiple signatures).
- Motivation:
- Security, current
development practice or industry best-practices.
- Rationale:
- To provide a means to verify authenticity, check data integrity, and
provide a means of non-repudiation for users. Some vendors may choose to
use digital certificates as a means of quality assurance, where by only
widgets that meet a particular level of quality and security receive a
digital signature.
R12. MIME Type
A conforming specification must recommend that a
conforming widget resource be sent over HTTP with a
formally registered MIME Type. The
Working Group must formally register the MIME type
with the Internet Assigned Numbers Authority (IANA).
- Motivation:
- Compatibility with other standards, Web and offline distribution, ease
of use.
- Rationale:
- To provide a formal means for an authors to denote that a widget
resource conforms to an appropriate specification when a widget resource
is served over HTTP. In addition, the MIME type could potentially be used in conjunction
with an auto-discovery mechanism, such as Atom Auto-Discovery, to facilitate
deployment of a widget resource.
4.2 Configuration
Document
This section enumerates the requirements that a conforming specification
needs to address to standardize the configuration document. The objective
of this section is to ensure that a conforming specification specifies a
configuration document format that defines:
- Metadata elements that can capture metadata about a widget, including
it's title, some form of identification, and versioning information.
- Metadata elements that can capture authorship information.
- A bootstrapping mechanism that would enable a widget user agents to
automatically instantiate a widget.
- Relevant configuration parameters.
R13. Widget
Metadata
A conforming specification must specify the
structure and semantics of elements that represent metadata about the
widget. The conforming specification must describe a
model for how that metadata is to be processed by a widget user agent. The
metadata must be extractable, processable and reusable
in other contexts (for instance, to create an online gallery). In
addition, a conforming specification should make it
clear to authors which elements are optional and which elements are
mandatory.
- Motivation:
- Current development practice or industry
best-practices, interoperability.
- Rationale:
- To provide authors with a practical set of metadata elements that
describe various aspects of the widget that may be used in various
contexts.
R14. Authorship and
Widget Metadata
A conforming specification must specify the
structure and semantics of elements that represent data about the
authorship of a widget, including an author's name, email, and
organization. In addition, a conforming specification must specify the structure and semantics of elements that
represent data about the widget, including the name, version number, a
unique identifier, and a description of what a widget does.
- Motivation:
- Current development practice or industry
best-practices, interoperability.
- Rationale:
- To provide authors with a practical set of metadata elements that
describe a widget and its authorship that may be utilized within an
application context (such as a menu) or of importance to end-users.
R15. Copyright Notice
and License Metadata
A conforming specification should specify the
structure and semantics of fields that explicitly reference, or otherwise
include, a software license agreement or notice, and declare who holds the
copyright for the widget, as well as a model for how this data must be
processed by a widget user agent.
- Motivation:
- Current development practice or industry
best-practices, interoperability.
- Rationale:
- To provide authors with a means to legally declare how a widget and
it's various resources can be used by end-users. For example, an author
may include a GNU-style license that
allows others to reuse any source code.
R16. Visual Rendering
Dimensions
A conforming specification should specify a means
for an author to declare the initial visual dimensions for an instantiated
widget in a way that is device independent (e.g. via CSS pixels).
- Motivation:
- Ease of use, device
independence, current development practice or
industry best-practices.
- Rationale:
- To set up the rendering context for an instantiated widget in a way
that scales on a range of devices.
R17. Declarative
Bootstrap
A conforming specification must specify a
declarative bootstrap mechanism that addresses the start file that is to
be initially instantiated at runtime (the instantiated widget). The
bootstrap mechanism must not be able to address or
instantiate local resources outside the scope of the widget resource.
However it may be able to address a resource on the
Web over HTTP but only of the MIME types allowed by the
automated bootstrap requirement (below) or resources that are of media
types supported by a widget user agent. A conforming specification may also allow authors to declaratively bootstrap
proprietary resources within the widget resource, so long as they are
compatible with the widget user agent. If a bootstrap has not been
declared by an author, then automated bootstrapping must occur as describe in the automated bootstrap requirement.
- Motivation:
- Ease of use, current
development practice or industry best-practices, security.
- Rationale:
- For example, bootstrapping could occur by referencing, via a relative
IRI the, the initial resource to be run by
a widget user agent (eg '
/ui/clock.svg
'). Alternatively, the
bootstrap might be a Web page that when combined with the visual rendering dimensions requirement displays at
the appropriate size.
R18. Automated
Bootstrap
A conforming specification may specify an automated
model for finding the start file of the widget in the absence of a declarative bootstrap. The automated bootstrap
model must not be able to address resources outside
the scope of the widget resource and must not address
resources on the Web over HTTP or any other protocol. The
widget user agent should be allowed to select its
preferred format for the start file, then it should locate that resource
first before attempting to locate other resources.
- Motivation:
- Ease of use, device
independence, current development practice or
industry best-practices, internationalization and localization.
- Rationale:
- For example, the conforming specification could specify a model that
searches for a default file name (
index.htm
,
index.html
, index.svg
, etc) firstly within
localized directory names, as required by automatic localization, within
the directories of the widget resource. If that search fails, then the
widget user agent could try finding files with extensions ".html,
.svg, etc" starting form the root directory.
R19. Iconic
Representations
A conforming specification must specify a means to
declare iconic representations of the widget for use as alternate or
fallback content, standby indicator or in a non-running context. The
conforming specification should not limit iconic
representations to static images and SHOULD provide alternative text
representations of an icon where possible. A conforming specification should also recommend a default icon MIME type and file
name.
- Motivation:
- Ease of use, device
independence, current development practice or
industry best-practices, internationalization and localization.
- Rationale:
- To provide authors with a visual means of representing widget to
end-users prior to instantiation. The icon may also serve as visual means
for end-users to associate an icon with a widget. For example, an a small
graphic of a calendar may represent a calendar widget.
R20. Configuration Parameters
A conforming specification must
specify a means to declare values of either custom or predefined
configuration parameters, which would be applied as a widget is
instantiated. A conforming specification must specify
the default values for parameters in case a parameter is missing or the
value supplied by the author is invalid.
- Motivation:
- Ease of use, current
development practice or industry best-practices.
- Rationale:
- To allow authors to declaratively control how a widget is configured
during instantiation; and, in the absence of any declarations, allow the
widget user agent to automatically configure a widget using default
values. For example, the author might declare that the value for the
parameter '
width
= "50"
', or in its
absence, the widget user agent will automatically set the
width
to "300
".
R21. Security
Declarations
A conforming specification must specify a means for
declaring that the instantiated widget will require access to resources or
services that may introduce a security risk for an end user.
- Motivation:
- Security, current
development practice or industry best-practices.
- Rationale:
- To declare the security intentions of the widget, allowing the widget
user agent to respond accordingly by adjusting its security policies and
warning the end-user. Example of security sensitive services that could
require access-control include accessing end-user's storage device, or
performing a cross-domain request.
R22. XML, Micro-Syntaxes and
Schema
A conforming specification must specify the
configuration document language using XML, as well as the
rules for processing the configuration document language and any
micro-syntaxes represented as character data or in XML attributes. A
conforming specification should specify a formal
schema for the language, as well as define any configuration defaults.
- Motivation:
- Compatibility with other standards, current development practice or industry
best-practices, ease of use, internationalization and localization,
longevity.
- Rationale:
- To have a language in a format that is relatively easy for authors to
read and write, and provides effective internationalization support.
XML is generally accepted and understood by
widget authors and parsed by all market-leading widget engines, and
XML parsers generally have reasonable support
for Unicode and other character
encodings that provide effective internationalization and localization.
R23. Configuration Document Independence
A conforming specification must specify the
configuration document in such a way that it can be used independently of
the widget resource that contains it. A conforming specification should provide guidelines for how the configuration
document can be used separately from a widget resource.
- Motivation:
- Ease of use, Web and offline
distribution, device independence.
- Rationale:
- To allow the configuration document to be extracted and used by other
applications (either on the server or on the client side) for different
purposes. For example, a server may automatically extract the
configuration document from a widget resource and serve it upon request.
The independent configuration document may then be used, for instance,
for checking information about the widget without needing to download the
complete widget resource. This may be particularly useful for users of
widgets on mobile devices, where the cost of downloading data can
sometimes be expensive.
4.3 Scripting Interfaces
This section enumerates the requirements that a conforming specification
needs to address to standardize a API for widgets.
The objective of this section is to ensure that a conforming specification
specifies an API that allows authors to, amongst other things:
- Manipulate the preferences and properties of an instantiated widget.
- Capture widget-specific events.
- Safely access services, resources, and other applications on a user's
device.
R24. Instantiated
Widget API
A conforming specification must specify a set of
interfaces that expose the properties, methods, and events of an
instantiated widget. These interfaces must be
encapsulated as a self-contained object or some similar data structure in
a non-object-oriented programming environment.
- Motivation:
- Ease of use, compatibility with other standards, current development practice or industry
best-practices.
- Rationale:
- To allow authors to make their widgets interactive. See for example
Apple's
widget
Object described in the
Dashboard Reference and Microsoft's
System.Gadget
Object described in the Sidebar Reference.
R25. Configuring
Runtime Properties
A conforming specification should specify a set of
interfaces that expose relevant properties and methods of the widget user
agent.
- Motivation:
- Ease of use, compatibility with other standards, current development practice or industry
best-practices.
- Rationale:
- Such properties could include localization information, operating
environment details, availability of network access, etc. See for example
Microsoft's Sidebar Reference.
R26. Getting and Setting
Preferences
A conforming specification must specify a set of
interfaces for dynamically getting and setting preferences that are unique
for an instantiated widget.
- Motivation:
- Ease of use, Compatibility with other standards, current development practice or industry
best-practices.
- Rationale:
- To provide a means for authors to allow end-users to dynamically
change any preferences they may have set in the past.
R27. Widget State Change
Events
A conforming specification must define a set of
states in the lifecycle of the instantiated widget that are able to be
captured through script.
- Motivation:
- Current development practice or industry
best-practices, ease of use.
- Rationale:
- To allow authors to programmatically capture when a change has
occurred in either the instantiated widget or possibly even the widget
user agent.
R28. Network State Change
Events
A conforming specification must specify a means that
allows authors to check if the widget resource is connected to the
network. A conforming specification must define the
scope of the term "network" and must specify
a means by which connection and disconnection events can be captured by an
author through script.
- Motivation:
- Current development practice or industry
best-practices, ease of use.
- Rationale:
- To allow authors to programmatically capture when the widget user
agent has acquired or lost a network connection.
R29. Modal Priority
A conforming specification should specify how an
instantiated widget (or any of its windows) should to categorize itself to
the widget user agent as critical, floating, output-only, etc. Some of
these mode changes may require the end-user's attention, in which case the
widget user agent should find a suitable and non-intrusive way to draw the
end-user's attention.
- Motivation:
- Current development practice or industry
best-practices, ease of use
- Rationale:
- An example of this kind of behavior can be seen on Mac OS X, where a
program's icon bounces in the dock when a program has a critical window
to display.
R30. Device Specific APIs
and Services
A conforming specification should specify a
mechanism, either through an API or through the configuration document,
which allows instantiated widgets to bind to third-party APIs that allow
access to device-specific resources and services. A conforming
specification is not required to specify any APIs to
device specific resources or services, but should
provide some means of binding to those APIs if they are available.
- Motivation:
- Current development practice or industry
best-practices, ease of use.
- Rationale:
- To endow widgets with functionality beyond what is currently available
to HTML documents, allowing widgets to be used as means to bridge special
device capabilities and operating system services with data on the Web.
Examples of device-specific services and resources that could be made
available through script include cameras, SMS, GPS and address book.
Note: There are other WGs working on
this requirements such as the Ubiquitous Web
Applications Working Group (UWA-WG), and the Open Mobile Alliance (OMA) Device Capabilities Working
Group.
R31. ECMAScript
Compatibility
A conforming specification must specify the APIs
proposed in this section in such a way that they are implementable in
ECMAScript.
- Motivation:
- Compatibility with other standards, current development practice or industry
best-practices, internationalization
and localization
- Rationale:
- To support a language that is already widely used in widget user
agents and to allow authors to use already existing ECMAScript code
libraries.
R32. XMLHttpRequest
A conforming specification must recommend that a
widget user agent implement the XMLHttpRequest object.
- Motivation:
- Current development practice or industry
best-practices, interoperability.
- Rationale:
- To allow the creation of Ajax-style
applications.
R33. Cross-Widget
Communication
A conforming specification may specify a model and
API to allow multiple instantiated widgets to securely communicate with
each other.
- Motivation:
- Current development practice or industry
best-practices.
- Rationale:
- To allow widget to communicate with each other. For example, when a
news widget receives a news item about a particular company, it could
tell a stock widget stock quotes widget to display any changes in that
company's share price.
R34. Icon API
A conforming specification SHOULD specify a means
that allows authors to control the iconic representation of a widget
resource at runtime.
- Motivation:
- Current development practice or industry
best-practices.
- Rationale:
- To allow widget to communicate events and state changes to the user in
contexts outside the running widget. For instance, for a weather widget,
an icon could change to reflect the current weather conditions.
R35. Configuration
Document Data
A conforming specification SHOULD specify a means
that allows authors to access data they declared in the
configuration document for the widget resource.
- Motivation:
- Current development practice or industry
best-practices.
- Rationale:
- To allow authors to easily access metadata they declared in the
configuration document at runtime.
R36. Open Default
System Web Browser
A conforming specification SHOULD specify a means
that allows authors to open URLs in a browsing contexts outside the widget
engine.
- Motivation:
- Current development practice or industry
best-practices.
- Rationale:
- To allow author to open a URL in the default system web browser. For
example, in a news aggregator widget, to allow the end user to navigate
to the source of a particular news item.
4.4 User Interface
Language
This section enumerates the requirements that a conforming specification
needs to address to standardize a user interface language for widgets. The
objective of this section is to ensure that a conforming specification
mandates a language that is well-suited for creating user interfaces and
is accessible.
R37. Language
Accessibility
A conforming specification must specify that the
language used to declare the user interface of a widget be either HTML or a language that is accessible at various
levels: it should provide keyboard access to
interactive graphical elements, and provide means to access the widget's
functionality through an non-graphical UI. The declared interface may also be accessible to screen readers, allowing
relevant sections of text and functionality to be accessed by non-visual
means.
- Motivation:
- Compatibility with other standards, current development practice or industry
best-practices, ease of use.
- Rationale:
- To recommend a language, or a set of languages, that will allow
authors to realize their designs, while at the same time remaining
accessible to screen readers and similar assistive technologies.
4.5 User Agents
This section enumerates the requirements that a conforming specification
needs to address to standardize certain aspects of widget user agents. The
objective of this section is to ensure that a conforming specification
recommends features that will make widget user agents interoperate more
effectively with each other and with Web services.
R38. Additional Digital
Certificates
A conforming specification may recommend that, aside
from including standard root certificates, widget user agent allow
end-users to install digital certificates from other trusted sources.
- Motivation:
- Security, current
development practice or industry best-practices, Web and offline distribution, interoperability.
- Rationale:
- To allow authors and publisher to sign widgets.
R39. End-user Declared
Proxy
A conforming specification should recommend that
widget user agents allow end-users to explicitly input a proxy server
through which all HTTP-based request are made.
- Motivation:
- Security, current
development practice or industry best-practices, interoperability.
- Rationale:
- For example, a widget user agent may be used behind a firewall or
secure proxy.
R40. Automatic
Updates
A conforming specification should specify a model to
allow widget user agents to automatically check if a new version of a
widget resource has become available online. Updating must preserve the
identity of the widget and should be conducted over a secure communication
channel.
- Motivation:
- Security, current
development practice or industry best-practices, interoperability.
- Rationale:
- To allow authors to provide updates for a widget resource online. For
example, the author could declare in the configuration document an
IRI for where the widget user agent can be
check for updates. If an update to a widget resource becomes available,
then the widget user agent could ask the end-user if they want to
download the widget.
R41. Persistent
Storage of Preferences
A conforming specification must recommend that a
widget user agent implement a means to persistently store user preferences
for each instantiated widget.
- Motivation:
- Current development practice or industry
best-practices, Web and offline distribution,
Security.
- Rationale:
- To allow widgets to be closed and re-instantiated without the end-user
having reset the preferences for an instantiated widget. For example,
when using a weather widget, the end-user will want to store the
preferred location for weather information, and not be asked to input
that information again every time the widget is re-instantiated.
R42. Multiple Widget
Instances
A conforming specification must recommend that a
widget user agent allow multiple instances of a widget resource to be
instantiated and run concurrently as separate processes.
- Motivation:
- Current development practice or industry
best-practices, interoperability.
- Rationale:
- To allow multiples instances of the same widget to be run at the same
time, but possibly be configured differently. For example, instantiating
two clock widgets where one displays the time for Amsterdam and the other
displays the time for Boston.
4.6 Security
This section enumerates the requirements that a conforming specification
needs to address to standardize an adequate security model for widgets.
The objective of this section is to ensure that a conforming specification
specifies a security model that:
- Makes security a fundamental part of the standardization process.
- Insures that widgets won't be able to perform harmful operations on
end-user's machines or devices.
R43. Default Security
Policy
A conforming specification must specify a default
security policy that limits the privileges afforded to a widget at
runtime. The default security policy must be specified
in such a way that it forces authors to explicitly request permission to
use particular capabilities (see also Security
Declarations).
- Motivation:
- Current development practice or industry
best-practices, security.
- Rationale:
- To make the default state of a widget as benign as possible. For
example, the default security policy might be that a widget cannot access
the network.
R44. Runtime Security
Exceptions
A conforming specification must specify runtime
exceptions for when the API attempts to perform an action it it not
authorized to perform.
- Motivation:
- Current development practice or industry
best-practices, security.
- Rationale:
- To provide the API with an error recovery mechanism for when a script
attempts to perform a disallowed security-sensitive action. For example,
a security exception might be thrown if a widget attempts to access the
network but has not been granted permission by the widget engine to do
so.
References
Normative References
- ECMAScript
- ECMAScript
Language Specification, Third Edition. ECMA, December 1999. Available at http://www.ecma-international.org/publications/standards/Ecma-262.htm
- HTML
- HTML 4.01 Specification,
D. Raggett, A. Le Hors, I. Jacobs, 24 December 1999. Available at http://www.w3.org/TR/html401/
- HTTP
- Hypertext Transfer
Protocol -- HTTP/1.1, R. Fielding, J. Gettys, J. Mogul, H. Frystyk
Nielsen, L. Masinter, P. Leach and T. Berners-Lee, June 1999. Available
at http://www.ietf.org/rfc/rfc2616.txt
- MIME Type
- Multipurpose Internet
Mail Extensions (MIME) Part Two: media types, N. Freed and N.
Borenstein, November 1996. Available at http://www.ietf.org/rfc/rfc2046.txt.
- Unicode
- The Unicode Standard, The Unicode Consortium, Version 5.
- XML
- Extensible Markup
Language (XML) 1.0 Specification (Second Edition), T. Bray, J. Paoli,
C. M. Sperberg-McQueen, E. Maler, 6 October 2000. Available at http://www.w3.org/TR/REC-xml/
- XMLHttpRequest
- The XMLHttpRequest
object. A. van Kesteren. 2006. W3C Working Draft, Available at http://www.w3.org/TR/XMLHttpRequest/
- X.509
- CCITT, Recommendation X.509: The Directory Authentication
Framework, 1988.
- IRI
- Internationalized resource
Identifiers (IRIs), M. Duerst, M. Suignard. IETF, January 2005.
RFC3987 is Available at http://www.ietf.org/rfc/rfc3987
- RFC2119
- Key words for use in
RFCs to Indicate Requirement Levels, S. Bradner. IETF, March 1997.
Available at http://www.ietf.org/rfc/rfc2119.txt
- XML Digital Signatures
- XML-Signature Syntax and
Processing. D. Eastlake, J. Reagle, and D. Solo. W3C Recommendation,
February 2002. Available at http://www.w3.org/TR/xmldsig-core/
- Zip
- .ZIP
File Format Specification. PKWare Inc., September 2007. Available at
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
- Ajax
- Ajax:
A New Approach to Web Applications. J. J. Garrett. February 18, 2005.
Adaptive Path. Available at http://www.adaptivepath.com/publications/essays/archives/000385.php
- Atom Auto-Discovery
- Atom
Autodiscovery, M. Pilgrim, P. Ringnalda. ATOMPUB Working Group
(Draft), May 2005-. Available at http://philringnalda.com/rfc/draft-ietf-atompub-autodiscovery-01.html
- Bluetooth
-
Bluetooth Core Specification 2.1. Available at
http://www.Bluetooth.com/NR/rdonlyres/F8E8276A-3898-4EC6-B7DA-E5535258B056/6545/Core_V21__EDR.zip
- Charter
- Web Applications
Working Group Charter. D. Jackson. November 15, 2005. Available at http://www.w3.org/2008/webapps/charter/
- CSS
- Cascading Style Sheets, level 2,
revision 1, B. Bos, T. Çelik, I. Hickson, and H. Wium Li.e.,
W3C Candidate Recommendation 19 July 2007. Available at http://www.w3.org/TR/CSS21
- Dashboard Reference
-
Dashboard Reference, Apple Computer, Inc, May 2006. Available at
http://developer.apple.com/documentation/AppleApplications/Reference/Dashboard_Ref/index.html
- Google Gadgets
- Google Desktop Sidebar
Scripting API,
Google Inc., 2006. Available at http://desktop.google.com/script.html
- Windows
Sidebar Reference, Microsoft Corporation, 2006. Available at http://msdn2.microsoft.com/en-us/library/aa965853.aspx
- Widget Landscape
- Widgets 1.0: The Widget
Landscape. M. Caceres. W3C Working Draft (Working Group Note).
Available at http://www.w3.org/TR/widgets-land/
- W3C Process
- World Wide Web
Consortium Process Document. I. Jacobs, W3C. 14 October 2005.
Available at http://www.w3.org/2005/10/Process-20051014/
- Yahoo! Widgets Reference
- Yahoo!
Widget Engine Reference 3.1 Reference Manual Yahoo! Inc., April 14,
2006. Available at http://Widgets.yahoo.com/gallery/dl_item.php?item=WidgetEngineReference_3.1.1.pdf
Acknowledgments
The editor would like to thank to the following people who have
contributed to this document (ordered by first name):
- Alexander Dreiling
- Anne van Kesteren
- Arthur Barstow
- Arun Ranganathan
- Benoit Suzanne
- Bert Bos
- Bradford Lassey
- Cameron McCormack
- Cliff Schmidt
- Claudio Venezia
- Coach Wei
- Corin Edwards
- Dan Brickley
- David Pollington
- Dean Jackson
- Debra Polson
- Doug Schepers
- Ed Voas
- Gene Vayngrib
- Guido Grassel
- Jay Sweeney
- Jim Ley
- Jon Ferraiolo
- Jose Manuel Cantera Fonseca
- Josh Soref
- Kevin Lawver
- Krzysztof Maczyński
- Lachlan Hunt
- Marc Silbey
- Mark Baker
- Mikko Pohja
- Mike(tm) Smith
- Philipp Heltewig
- Stephen Paul Weber
- Thomas Landspurg
- Yang Wong
- Zachary Fitz-Walter