You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3775 lines
97 KiB
3775 lines
97 KiB
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta content="text/html; charset=us-ascii" http-equiv="Content-Type" />
|
|
<meta content="HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org" name=
|
|
"generator" />
|
|
|
|
<title>Widgets 1.0: The Widget Landscape (Q1 2008)</title>
|
|
<style type="text/css">
|
|
/*<![CDATA[*/
|
|
h1.c1 {color: black;border: 2px dashed black; margin: 10px; padding: 10px;}
|
|
/*]]>*/
|
|
</style>
|
|
<link href="style/widgets.css" rel="stylesheet" type="text/css" />
|
|
<link href="http://www.w3.org/StyleSheets/TR/W3C-WD" rel="stylesheet" type="text/css" />
|
|
<meta content="text/html; charset=us-ascii" http-equiv="Content-Type" />
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<div class="head">
|
|
<!--begin-logo-->
|
|
|
|
<p><a href="http://www.w3.org/"><img alt="W3C" height="48" src=
|
|
"http://www.w3.org/Icons/w3c_home" width="72" /></a> <!--end-logo--></p>
|
|
|
|
<h1 id="widgets">Widgets 1.0: The Widget Landscape (Q1 2008)</h1>
|
|
|
|
<h2 class="no-num no-toc" id="editors">W3C Working Draft 14 April 2008</h2>
|
|
|
|
<dl>
|
|
<dt>This version:</dt>
|
|
|
|
<dd><a href=
|
|
"http://www.w3.org/TR/2008/WD-widgets-land-20080414/">http://www.w3.org/TR/2008/WD-widgets-land-20080414/</a></dd>
|
|
|
|
<dt>Latest version:</dt>
|
|
|
|
<dd><a href=
|
|
"http://www.w3.org/TR/widgets-land/">http://www.w3.org/TR/widgets-land/</a></dd>
|
|
|
|
<dt>Latest Editor's Draft:</dt>
|
|
|
|
<dd><a href=
|
|
"http://dev.w3.org/2006/waf/widgets-land/">http://dev.w3.org/2006/waf/widgets-land/</a></dd>
|
|
|
|
<dt>Previous version:</dt>
|
|
|
|
<dd>none.</dd>
|
|
|
|
<dt>Version history:</dt>
|
|
|
|
<dd>Twitter messages (non-editorial changes only): <a href=
|
|
"http://twitter.com/widgetspecs">http://twitter.com/widgetspecs</a> (<a href=
|
|
"http://twitter.com/statuses/user_timeline/14349303.rss">RSS</a>)</dd>
|
|
|
|
<dt>Editor:</dt>
|
|
|
|
<dd><a href="http://datadriven.com.au/">Marcos Caceres</a>, Invited Expert</dd>
|
|
</dl><!--begin-copyright-->
|
|
|
|
<p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright"
|
|
rel="license">Copyright</a> © 2008 <a href="http://www.w3.org/"><acronym title=
|
|
"World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href=
|
|
"http://www.csail.mit.edu/"><acronym title=
|
|
"Massachusetts Institute of Technology">MIT</acronym></a>, <a href=
|
|
"http://www.ercim.org/"><acronym title=
|
|
"European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
|
|
<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href=
|
|
"http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href=
|
|
"http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href=
|
|
"http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules
|
|
apply.</p><!--end-copyright-->
|
|
</div>
|
|
<hr />
|
|
|
|
<h2 class="no-toc no-num" id="abstract">Abstract</h2>
|
|
|
|
<p>This document surveys a group of market-leading widget user agents with the aim to
|
|
inform the requirements of the <cite>Widgets 1.0: Requirements</cite> document. The
|
|
survey exposes commonalities and fragmentation across widget user agents, and discusses
|
|
how fragmentation currently affects, amongst other things, authoring, security,
|
|
distribution and deployment, internationalisation and the device-independence of widgets.
|
|
The document concludes by making a set of recommendations on what aspects of widgets
|
|
require standardization to reduce fragmentation to ultimately standardize a
|
|
cross-platform widget solution.</p>
|
|
|
|
<h2 class="no-num no-toc" id="sotd">Status of this Document</h2>
|
|
|
|
<p><em>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 <a href=
|
|
"http://www.w3.org/TR/">W3C technical reports index</a> at
|
|
http://www.w3.org/TR/.</em></p>
|
|
|
|
<p>This is the <a href="http://www.w3.org/2005/10/Process-20051014/tr.html#first-wd">W3C
|
|
First Public Working Draft</a> of the <em>Widgets 1.0: Landscape</em>. Once all the
|
|
comments about this document will have been addressed, the Working Group intends to
|
|
publish a final version of this document as a <a href=
|
|
"http://www.w3.org/2005/10/Process-20051014/tr.html#q75">W3C Working Group Note</a>.</p>
|
|
|
|
<p>The W3C Membership and other interested parties are invited to send comments to
|
|
<a href="mailto:public-appformats@w3.org">public-appformats@w3.org</a>, the W3C's public
|
|
email list for issues related to Web Application Formats. <a href=
|
|
"http://lists.w3.org/Archives/Public/public-appformats/">Archives</a> of the list are
|
|
available.</p>
|
|
|
|
<p>This document is produced by the <a href="http://www.w3.org/2006/appformats/">Web
|
|
Application Formats WG</a>, part of the <a href=
|
|
"http://www.w3.org/2006/rwc/Activity">Rich Web Clients Activity</a> in the W3C <a href=
|
|
"http://www.w3.org/Interaction/">Interaction Domain</a>. It is expected that this
|
|
document will become a Working Group Note. 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.
|
|
<!-- Several Working Drafts for this Note were available for review; the material in this document was subject to a public last call. At the time of publication, the Working Group has no specific plans to further revise this document. --></p>
|
|
|
|
<p>This document was produced by a group operating under the <a href=
|
|
"http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent
|
|
Policy</a>. W3C maintains a <a href="http://www.w3.org/2004/01/pp-impl/38483/status" rel=
|
|
"disclosure">public list of any patent disclosures</a> 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
|
|
<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
|
|
Claim(s)</a> must disclose the information in accordance with <a href=
|
|
"http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the
|
|
W3C Patent Policy</a>.</p>
|
|
|
|
<h2 class="no-toc no-num" id="table">Table of Contents</h2><!--begin-toc-->
|
|
|
|
<ul class="toc">
|
|
<li>
|
|
<a href="#introduction"><span class="secno">1.</span> Introduction</a>
|
|
|
|
<ul class="toc">
|
|
<li><a href="#purpose"><span class="secno">1.1</span> Purpose</a></li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li><a href="#terms"><span class="secno">2.</span> Terms</a></li>
|
|
|
|
<li>
|
|
<a href="#widgets0"><span class="secno">3.</span> Widgets and Widget User Agents</a>
|
|
|
|
<ul class="toc">
|
|
<li><a href="#differences"><span class="secno">3.1</span> Differences from Web
|
|
Widgets</a></li>
|
|
|
|
<li><a href="#differences0"><span class="secno">3.2</span> Differences from Java
|
|
Applets</a></li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="#packaging"><span class="secno">4.</span> Packaging for Distribution and
|
|
Deployment</a>
|
|
|
|
<ul class="toc">
|
|
<li><a href="#packaging0"><span class="secno">4.1</span> Packaging Formats, file
|
|
extensions and Media Types</a></li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="#metadata"><span class="secno">5.</span> Metadata and Configuration</a>
|
|
|
|
<ul class="toc">
|
|
<li>
|
|
<a href="#metadata0"><span class="secno">5.1</span> Metadata</a>
|
|
|
|
<ul class="toc">
|
|
<li><a href="#fragmentation"><span class="secno">5.1.1</span> Fragmentation
|
|
Issues</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="#authoring"><span class="secno">6.</span> Authoring and Scripting</a>
|
|
|
|
<ul class="toc">
|
|
<li><a href="#apis"><span class="secno">6.1</span> APIs</a></li>
|
|
|
|
<li><a href="#widget"><span class="secno">6.2</span> Widget object: properties and
|
|
events</a></li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li><a href="#user-interface"><span class="secno">7.</span> User interface and
|
|
Accessibility</a></li>
|
|
|
|
<li><a href="#instantiation"><span class="secno">8.</span> Instantiation</a></li>
|
|
|
|
<li><a href="#i18n"><span class="secno">9.</span> Internationalization and
|
|
Localization</a></li>
|
|
|
|
<li><a href="#digital"><span class="secno">10.</span> Digital Signatures</a></li>
|
|
|
|
<li><a href="#automatic"><span class="secno">11.</span> Automatic Updates</a></li>
|
|
|
|
<li><a href="#device"><span class="secno">12.</span> Device Independence</a></li>
|
|
|
|
<li><a href="#security"><span class="secno">13.</span> Security Models</a></li>
|
|
|
|
<li><a href="#icons"><span class="secno">14.</span> Icons</a></li>
|
|
|
|
<li><a href="#standardizable"><span class="secno">15.</span> Standardizable Aspects of
|
|
Widgets</a></li>
|
|
|
|
<li class="no-num"><a href="#acknowledgments">Acknowledgments</a></li>
|
|
|
|
<li class="no-num">
|
|
<a href="#references">References</a>
|
|
|
|
<ul class="toc">
|
|
<li class="no-num"><a href="#related">Related Sources</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul><!--end-toc-->
|
|
|
|
<h2 id="introduction"><span class="secno">1.</span> Introduction</h2>
|
|
|
|
<p>This document surveys the widget landscape by examining how <a href=
|
|
"#market-leading">market-leading widget user agents</a> address issues around:</p>
|
|
|
|
<ul>
|
|
<li>distribution and deployment,</li>
|
|
|
|
<li>metadata and configuration,</li>
|
|
|
|
<li>user interface and accessibility,</li>
|
|
|
|
<li>authoring,</li>
|
|
|
|
<li>internationalization and localization,</li>
|
|
|
|
<li>device-independence,</li>
|
|
|
|
<li>Initialization,</li>
|
|
|
|
<li>automatic updates,</li>
|
|
|
|
<li>and security.</li>
|
|
</ul>
|
|
|
|
<p>The <span><dfn id="market-leading">market-leading widget user agents</dfn></span> that
|
|
are included in the survey are listed below. The <a href="#widget2">widget user
|
|
agent</a>s were subjectively chosen because of their perceived prevalence in the
|
|
<span>market place. This survey was conducted independently of any vendor</span> and no
|
|
vendor explicitly requested they be included in the survey.</p>
|
|
|
|
<table cellspacing="0" summary="">
|
|
<caption>
|
|
Market-Leading Widget User Agents
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Vendor</th>
|
|
|
|
<th>Version</th>
|
|
|
|
<th>Platform</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Vendor</th>
|
|
|
|
<th>Version</th>
|
|
|
|
<th>Platform</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td><dfn id="konfabulator">Konfabulator</dfn></td>
|
|
|
|
<td>Yahoo!</td>
|
|
|
|
<td>4.5</td>
|
|
|
|
<td>Windows XP, Windows Vista, MacOS</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><dfn id="windows">Windows Sidebar</dfn></td>
|
|
|
|
<td>Microsoft</td>
|
|
|
|
<td>1.0</td>
|
|
|
|
<td>Windows Vista</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><dfn id="google">Google Desktop Gadgets</dfn></td>
|
|
|
|
<td>Google</td>
|
|
|
|
<td>1.x</td>
|
|
|
|
<td>Windows XP, Windows Vista</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><dfn id="opera">Opera Widgets</dfn></td>
|
|
|
|
<td>Opera</td>
|
|
|
|
<td>9.5 Beta</td>
|
|
|
|
<td>Mac OS 10.5, Windows XP, Windows Vista</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><dfn id="dashboard">Dashboard</dfn></td>
|
|
|
|
<td>Apple</td>
|
|
|
|
<td>1.1</td>
|
|
|
|
<td>Mac OS 10.5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><dfn id="web-runtime">Web-Runtime</dfn></td>
|
|
|
|
<td>Nokia</td>
|
|
|
|
<td>1.0 Beta</td>
|
|
|
|
<td>S60 3rd Edition, Feature Pack 2 (emulator)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><dfn id="joost">Joost Widgets</dfn></td>
|
|
|
|
<td>Joost</td>
|
|
|
|
<td>1.0 Beta</td>
|
|
|
|
<td>Mac OS 10.5, Windows XP, Windows Vista</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="redNote"><strong>The inclusion of the widget user agents in this survey does
|
|
not indicate endorsement of the standardization process by any particular vendor (in
|
|
other words, just because a widget user agent appears should not be taken to mean that
|
|
they will implement any part of the Widgets 1.0 specifications).</strong></p>
|
|
|
|
<h3 id="purpose"><span class="secno">1.1</span> Purpose</h3>
|
|
|
|
<p>The purpose of this document is to provide a holistic overview of the <dfn id=
|
|
"widget0">widget space</dfn> and provide information to aid in standardization process of
|
|
widgets by the <a href="http://www.w3.org/2006/appformats/">Web Application Formats
|
|
Working Group</a>. As such, this document provides:</p>
|
|
|
|
<ul>
|
|
<li>A consistent set of terms that can be used throughout the standardization process,
|
|
including in specifications.</li>
|
|
|
|
<li>A definition of what constitutes a widget and a widget user agent for the sake of
|
|
standardization (and what does not constitute a widget).</li>
|
|
|
|
<li>A discussion of what role various technologies play in the lifecycle of a
|
|
widget.</li>
|
|
|
|
<li>Comparison matrices that clearly demonstrate fragmentation and interoperability
|
|
across the widget landscape.</li>
|
|
|
|
<li>A list of standardizable aspects of widgets.</li>
|
|
</ul>
|
|
|
|
<h2 id="terms"><span class="secno">2.</span> Terms</h2>
|
|
|
|
<p>This section defines some of the key terms related to widgets.</p>
|
|
|
|
<dl>
|
|
<dt><dfn id="widget1">Widget</dfn>:</dt>
|
|
|
|
<dd>For the purpose of this standardization process, a widget is an end-user's
|
|
conceptualization of 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.</dd>
|
|
|
|
<dt><dfn id="widget2">Widget user agent</dfn>:</dt>
|
|
|
|
<dd>The user agent (software application) that hosts an instantiated widget. Generally
|
|
speaking, widget user agents are either directly built on, or provide similar
|
|
functionality to a Web browser. An increasing number are actually built directly on top
|
|
of Web browsers so they are able to process/render <cite><a href="#html">HTML</a></cite>
|
|
documents, while others incorporate Web browser components like ECMAScript interpreters.
|
|
widget user agents are built for many different software platforms and devices, including
|
|
Microsoft's Windows, Apple's MacOS, Symbian, Linux, and so on; and some widget user
|
|
agents, such as the Konfabulator and Opera Widgets, run on multiple platforms.</dd>
|
|
|
|
<dt><dfn id="instantiated">Instantiated widget</dfn>:</dt>
|
|
|
|
<dd>The runtime manifestation of a decompressed widget resource whose start file has been
|
|
instantiated on a widget user agent. The instantiated widget may have been configured
|
|
through a configuration document. The ability for an instantiated widget to be programmed
|
|
and behave interactively is provided via a widgets API.</dd>
|
|
|
|
<dt><dfn id="icon">Icon</dfn>:</dt>
|
|
|
|
<dd>An image or symbolic representation of an instantiated widget. Icons are usually used
|
|
to represent the widget in non-running context, such as menus and docks. Some widget user
|
|
agents, such as Konfabulator, allow authors to dynamically change the icon at runtime.
|
|
For example, a weather widget might update its icon as the weather or time of day
|
|
changes.</dd>
|
|
|
|
<dt><dfn id="widget3">Widget resource</dfn>:</dt>
|
|
|
|
<dd>A resource created from some packaging format that encapsulates the resources of a
|
|
widget for the purposes of distribution and deployment. On the wire, a widget resource is
|
|
identified by an arbitrary widget media type.</dd>
|
|
|
|
<dt><dfn id="media">Media type</dfn>:</dt>
|
|
|
|
<dd>An <cite><a href="#media">media type</a></cite> that formally associates a widget
|
|
resource with some proprietary widget user agent. For example, Joost's widget engines
|
|
requires that widgets be served over HTTP with a
|
|
<code>application/vnd.joost.joda-archive</code> media type.</dd>
|
|
|
|
<dt><dfn id="packaging1">Packaging format</dfn>:</dt>
|
|
|
|
<dd>The physical data format used to create a widget resource. For example, the flat-file
|
|
format described in the <cite><a href="#konfabulator0">Konfabulator Reference</a></cite>
|
|
or the <cite><a href="#zip">Zip</a></cite> file format supported by Opera Widgets and
|
|
Microsoft's Vista Sidebar.</dd>
|
|
|
|
<dt><dfn id="resource">Resource:</dfn></dt>
|
|
|
|
<dd>Any file or directory used by an instantiated widget that resides either inside a
|
|
widget resource or is accessible over <cite><a href="#http"><abbr title=
|
|
"Hyper Text Transfer Protocol">HTTP</abbr></a></cite>. In a widget resource, resources
|
|
may be organized in directories and may have versions of those directories tailored for
|
|
localization purposes. Examples of resources include images, text, markup, style sheets,
|
|
executable scripts, and sounds.</dd>
|
|
|
|
<dt><dfn id="start">Start file</dfn>:</dt>
|
|
|
|
<dd>A resource either inside the widget resource or on the Web that when instantiated
|
|
represents the widget. If an instantiated widget contains a configuration document, the
|
|
widget user agent may configure the start file through that configuration document.</dd>
|
|
|
|
<dt><dfn id="configuration0">Configuration document</dfn>:</dt>
|
|
|
|
<dd>A distinguished resource where authors can declare metadata and/or configuration
|
|
parameters for a widget. A widget user agent uses a configuration document to configure a
|
|
widget upon instantiation. The configuration document may also define the relationship
|
|
between resources in the widget resource. The configuration document usually takes the
|
|
form of an <cite><a href="#xml"><abbr title=
|
|
"eXtensible Markup Language">XML</abbr></a></cite> file; for example, the
|
|
<code>config.xml</code> resource bundled with an Opera widget.</dd>
|
|
|
|
<dt><dfn id="metadata1">Metadata:</dfn></dt>
|
|
|
|
<dd>Data declared in the configuration document about a widget that relates to authorship
|
|
or classification, but does not affect the behavior of the widget at runtime (eg. the
|
|
author's name and email).</dd>
|
|
|
|
<dt><dfn id="configuration1">Configuration parameter</dfn>:</dt>
|
|
|
|
<dd>Any declaration in the configuration document that affords the widget with
|
|
functionality beyond its default behavior (eg. declaring that the widget will require
|
|
network access).</dd>
|
|
|
|
<dt> </dt>
|
|
|
|
<dt><dfn id="bootstrap">Bootstrap</dfn>:</dt>
|
|
|
|
<dd>A mechanism that either declaratively or automatically finds the start file in an
|
|
instantiated widget.</dd>
|
|
|
|
<dt><dfn id="widget4">Widget API</dfn>:</dt>
|
|
|
|
<dd>A set of programming interfaces that provide functionality specific to and
|
|
instantiated widget. Current APIs range extensively in the level of functionality they
|
|
provide an author; see for example Microsoft's <abbr title=
|
|
"Application Programming Interface">API</abbr> for accessing the operating system in the
|
|
<cite><a href="#sidebar">Sidebar Reference</a></cite>.</dd>
|
|
</dl>
|
|
|
|
<h2 id="widgets0"><span class="secno">3.</span> Widgets and Widget User Agents</h2>
|
|
|
|
<p>Since around 2003, a relatively new kind of application has seen significant
|
|
proliferation onto desktop computers and, more recently, web-enabled portable devices
|
|
like mobile phones. This kind of application is generally referred to by developers as a
|
|
<em>widget engine</em>: a piece of software that is able to run other smaller
|
|
applications known as <em>widgets</em> or <em>gadgets</em>. On the user's desktop,
|
|
widgets have gradually taken the place of some traditional single-purpose applications.
|
|
Typical examples of widgets range from simple clocks, CPU gauges, post-it notes, games,
|
|
battery-life indicators, to more sophisticated web-enabled widgets like weather
|
|
forecasters, news readers, email checkers, photo albums and currency converters.<br />
|
|
<br />
|
|
There are literally thousands of unique widgets available for download on the web, which
|
|
users generally collect to create personal widget inventories. These widget inventories
|
|
provide users with access to online services that they commonly use. This means that, in
|
|
a lot of instances, users don't need to open up a web browser to get the information that
|
|
they want (eg. to check the weather). This is an aspect of widgets that makes them
|
|
particularly attractive on mobile devices, where the monetary cost of downloading web
|
|
pages is currently an issue for many users.</p>
|
|
|
|
<p>For developers, some widgets differ from traditional binary applications in that they
|
|
are created using the same open technologies used to create web pages. Widget engines
|
|
mimic, in many ways, the behavior of web browsers: an increasing number are actually
|
|
built directly on top of web browsers so they are able to render web pages, while others
|
|
incorporate web browser components such as ECMAScript interpreters. To developers and
|
|
vendors, this means that most widgets are significantly easier to create than
|
|
applications developed with lower-level programming languages such as Java and C#.</p>
|
|
|
|
<p>Amidst the popular rise of widgets and widget engines lay a number of issues for
|
|
users, developers, current vendors and new vendors wanting to enter the market. By
|
|
surveying various aspects that pertain to widget user agents, this document discusses
|
|
these issues so they may be resolved through the W3C standardization process.</p>
|
|
|
|
<p>As shown in figure 1, a widget is instantiated on a widget user agent and can make use
|
|
of a number of technologies that serve a different role (eg. distribution and deployment,
|
|
etc). However, some of those technologies have not yet been formally standardized (items
|
|
marked with an asterisk), which has contributed to fragmentation across the widget
|
|
space.</p>
|
|
|
|
<div class="figure">
|
|
<p><img alt="Widget technology stack" height="384" src="figures/widget_arch.png" width=
|
|
"883" /></p>
|
|
|
|
<p><dfn id="figure">Figure 1</dfn>. A typical widget technology stack and aspects that
|
|
have require standardization. Please note that this technology stack is intended as a
|
|
guide, and does not represent the technology stack of any particular user agent.</p>
|
|
</div>
|
|
|
|
<h3 id="differences"><span class="secno">3.1</span> Differences from Web Widgets</h3>
|
|
|
|
<p><dfn id="web-widgets">Web widgets</dfn> (also known as <em>modules</em> or
|
|
<em>badges</em>) are fragments of <abbr title="HyperText Markup Language"><cite><a href=
|
|
"#html">HTML</a></cite></abbr>, <abbr title="Cascading Style Sheets"><cite><a href=
|
|
"#css">CSS</a></cite></abbr>, and <cite><a href="#ecmascript">ECMAScript</a></cite> (or
|
|
possibly an Adobe Flash movie) that are either declaratively or dynamically included into
|
|
a Web document. A common example of Web widgets is one that downloads a set of icon-sized
|
|
images from a photo-sharing Web site and displays those images as a slide-show based on a
|
|
set of user preferences (eg. the images tagged 'vacation Italy'); such Web widgets are
|
|
commonly seen embedded into social networking Web sites and blogs. Popular providers of
|
|
Web widgets include:</p>
|
|
|
|
<ul>
|
|
<li><a href="http://www.google.com/apis/gadgets/">Google Homepage Gadgets</a> (<a href=
|
|
"http://www.google.com/ig">iGoogle Gadgets</a>),</li>
|
|
|
|
<li><a href="http://widgets.wordpress.com/">WordPress Widgets</a>,</li>
|
|
|
|
<li>and <a href="http://microsoftgadgets.com/">Microsoft Live Gadgets</a>.</li>
|
|
</ul>
|
|
|
|
<p>Unlike widgets, Web widgets a hosted on the server-side and are embedded into HTML
|
|
documents prior to being served to the client. The creation of a Web widget usually
|
|
involves having an author specify, in XML or some other format (eg. PHP), what the widget
|
|
does and which APIs the Web widget depends on. This document is then uploaded to a
|
|
server, where when it is served to a client, it is transformed into HTML, CSS, and
|
|
ECMAScript. For example, the input column of the table below shows a typical iGoogle
|
|
gadget specification:</p>
|
|
|
|
<table>
|
|
<caption>
|
|
iGoogle Gadget Transformation Example
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Input</th>
|
|
|
|
<th>Output</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Input</th>
|
|
|
|
<th>Output</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?><br /><Module><br /><ModulePrefs title="hello world example" /><br /><Content type="html"><![CDATA[<br /><h1>Hello, world!</h1><br />]]></Content><br /></Module>
|
|
</pre>
|
|
</td>
|
|
|
|
<td>
|
|
<h1 class="no-toc no-num c1" id="hello">Hello World!</h1>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>After being processed on the server-side, the code in the input column is transformed
|
|
to HTML, CSS, and ECMAScript and inserted into the served document as either an
|
|
<code>iframe</code> or as HTML elements (see the the Output column above). The actual
|
|
code that Google generates from the example is too large to be included in this
|
|
document.</p>
|
|
|
|
<h4 class="no-toc no-num" id="functional">Functional Differences</h4>
|
|
|
|
<p>Because Web widgets and a widget have a reliance of Web technologies, their offer much
|
|
of the same functionality. However, differences exist in:</p>
|
|
|
|
<ul>
|
|
<li>the packaging format,</li>
|
|
|
|
<li>the security model,</li>
|
|
|
|
<li>and the APIs.</li>
|
|
</ul>
|
|
|
|
<p>In relation to the packaging format , Web widgets are generally not packaged or
|
|
downloaded as a single file (except in the case of Adobe Flash movies). Instead, Web
|
|
widgets are commonly dynamically instantiated through a mix of <cite><a href=
|
|
"#ecmascript">ECMAScript</a></cite>, <abbr title=
|
|
"HyperText Markup Language"><cite><a href="#html">HTML</a></cite></abbr> elements, and
|
|
<abbr title="Cascading Style Sheets"><cite><a href="#css">CSS</a></cite></abbr>. However,
|
|
similar to a widget as described in this document, some Web widgets make use of a
|
|
dynamically loaded RSS file or <abbr title="JavaScript Object Notation"><cite><a href=
|
|
"#json">JSON</a></cite></abbr> as a configuration document format.</p>
|
|
|
|
<p>In relation to security models, unlike a widget, Web widgets are generally part of a
|
|
<abbr title="HyperText Markup Language"><cite><a href="#html">HTML</a></cite></abbr>
|
|
document's <abbr title="Document Object Model">DOM</abbr> and so are bound to all the
|
|
security constraints imposed by Web browsers.This means that Web widgets cannot make
|
|
cross-domain requests, cannot autonomously access resources on an end-user's device,
|
|
access system-level properties like the make, model, or usage percentage of the
|
|
<abbr title="central processing unit">CPU</abbr>, or execute system level commands like
|
|
creating or deleting files, while widgets that run on most market-leading widget user
|
|
agents generally can. In other words, some widget user agents provide a more relaxed
|
|
security model than the one afforded to Web widgets by Web browsers.</p>
|
|
|
|
<p>The ability for a widget to perform actions beyond the security scope of Web widgets
|
|
is partially afforded by widget-specific APIs. For example, on Windows Vista's Sidebar, a
|
|
widget can be scripted to create a new folder on the end-user's hard drive by calling
|
|
<code>'System.Shell.Folder.newFolder(strNewFolderName)'</code>. See Microsoft's
|
|
<cite><a href="#sidebar">Sidebar Reference</a></cite> or <cite><a href=
|
|
"#konfabulator0">Konfabulator Reference</a></cite> for more examples of API functionality
|
|
that is beyond the scope of Web widgets.</p>
|
|
|
|
<p>Another difference is how widget user agents handle internationalization when compared
|
|
to Web widgets (Web Browsers). On the Web, internationalization is sometimes handled
|
|
through <cite><a href="#http">HTTP</a></cite>'s <code>Accept-Language</code> header: this
|
|
works by allowing the Web Browser to send the end-user's preferred language to a server
|
|
(eg. <code>Accept-Language: en-us</code>). If the server contains a version of the
|
|
desired resource in the end-user's language of choice, then the localized resource may be
|
|
returned to the end-user. A widget, on the other hand, may sometimes contained all
|
|
localized resources inside the widget resource in folders named using the common
|
|
language-region pattern (eg. /en-us/). When the widget is instantiated, the widget user
|
|
agent attempts to match one of these specially named folders to user's language
|
|
preferences. See the <a href="#i18n">Internationalization and Localization</a> section
|
|
for more information.</p>
|
|
|
|
<h3 id="differences0"><span class="secno">3.2</span> Differences from Java Applets</h3>
|
|
|
|
<p>Widgets and Java applets share many commonalities. For instance, both widgets and
|
|
applets rely on a pre-installed runtime engine for execution: java applets rely on the
|
|
presence of the Java Runtime Environment (JRE), while widgets rely on the presence of
|
|
their target widget engine. Widget and Java applets also share many similar functional
|
|
aspects, like being able to do asynchronous HTTP requests to download resources from the
|
|
Web.</p>
|
|
|
|
<p>It is argued that the most notable difference between them is that widgets are easier
|
|
for authors to create than Java applets. This argument is made because widgets are
|
|
created using HTML, CSS, and ECMAScript, which have very forgiving error handling and a
|
|
short learning curve compared to Java. Another difference is that Java Applets are
|
|
intended to run inside Web pages, while widgets as described in this document generally
|
|
serve the purpose of stand-alone applications that run outside of a Web browser.</p>
|
|
|
|
<h2 id="packaging"><span class="secno">4.</span> Packaging for Distribution and
|
|
Deployment</h2>
|
|
|
|
<p><dfn id="packaging2">Packaging</dfn> refers to encapsulating all the necessary
|
|
resources and metadata required by the widget into a single file for the purpose of
|
|
distribution and deployment. <dfn id="distribution">Distribution and deployment</dfn>
|
|
refers to getting a widget from the Web to run on an user's device as easily as
|
|
possible.</p>
|
|
|
|
<h3 id="packaging0"><span class="secno">4.1</span> Packaging Formats, file extensions and
|
|
Media Types</h3>
|
|
|
|
<p>The <em>de facto</em> standard for packaging widgets is the Zip file format, but with
|
|
vendors requesting that their developers use a vendor specified file extension (ie. not
|
|
.zip, but .widget, or .gadget, etc) when packaging their widgets.</p>
|
|
|
|
<p>Once a widget has been packaged for distribution, it is put onto a web server and
|
|
served with an appropriate media type. The purpose of a media type is to allow a browser,
|
|
for instance, to automatically associate a widget resource with the appropriate widget
|
|
user agent. For example, widgets served for Operas widget engine are served with the
|
|
<code>application/x-opera-widgets</code> media type and associated with the Opera
|
|
browser. If a widget engine has correctly registered itself with the operatig system to
|
|
be the program of choice to deal with a particular media type media type and/or file
|
|
extension with, the web browser should automatically pass widgets to the widget engine
|
|
without the end-user having to select the widget resource manually.</p>
|
|
|
|
<p>End-users generally acquire widget resources directly from vendors (eg. Apple, Yahoo!)
|
|
who often host dedicated online galleries where users can search for widgets and where
|
|
developers can submit or update widgets they have created. However, authors are free to
|
|
distribute their widgets from their own web sites.</p>
|
|
|
|
<dl>
|
|
<dt>Packaging Format</dt>
|
|
|
|
<dd>The <a href="#packaging1">packaging format</a> is supported <a href="#widget2">widget
|
|
user agent</a>.</dd>
|
|
|
|
<dt>Compression</dt>
|
|
|
|
<dd>The compressions algorithm supported by the widget user agent.</dd>
|
|
|
|
<dt>File extension</dt>
|
|
|
|
<dd>The file extensions that associates a widget with a widget user agent.</dd>
|
|
|
|
<dt>Media type</dt>
|
|
|
|
<dd><span class="backMatter">As widgets are generally distributed via the Web, vendors
|
|
usually assign them an arbitrary MIME type. The MIME type, which is usually used in
|
|
conjunction with the file extension, helps a <a href="#widget2">widget user agent</a>
|
|
associate the a widget with the appropriate <a href="#widget2">widget user
|
|
agent</a>.</span></dd>
|
|
</dl>
|
|
|
|
<table cellspacing="0" summary="">
|
|
<caption>
|
|
Packaging Formats, file extensions and Media Types
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Packaging Format</th>
|
|
|
|
<th>Compression</th>
|
|
|
|
<th>File Extension</th>
|
|
|
|
<th>Media type</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Packaging Format</th>
|
|
|
|
<th>Compression</th>
|
|
|
|
<th>File Extension</th>
|
|
|
|
<th>Media type</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>Proprietary flat-file, Zip</td>
|
|
|
|
<td>Deflate (Zip)</td>
|
|
|
|
<td>.widget (not enforced)</td>
|
|
|
|
<td><code>application/vnd.yahoo.widget</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Sidebar</td>
|
|
|
|
<td>Zip, Cab, directory</td>
|
|
|
|
<td>Deflate</td>
|
|
|
|
<td>.gadget</td>
|
|
|
|
<td><code>application/x-windows-gadget</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>Zip</td>
|
|
|
|
<td>Deflate</td>
|
|
|
|
<td>.gg</td>
|
|
|
|
<td><code>app/gg</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Browser</td>
|
|
|
|
<td>Zip</td>
|
|
|
|
<td>Deflate</td>
|
|
|
|
<td>.zip</td>
|
|
|
|
<td><code>application/x-opera-widgets</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>Zip</td>
|
|
|
|
<td>Deflate</td>
|
|
|
|
<td>.wdgt or .zip</td>
|
|
|
|
<td><code>application/x-macbinary</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web-Runtime</td>
|
|
|
|
<td>Zip</td>
|
|
|
|
<td>Deflate</td>
|
|
|
|
<td>.wgz</td>
|
|
|
|
<td><code>application/x-nokia-widgets</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td>Zip</td>
|
|
|
|
<td>Deflate</td>
|
|
|
|
<td>.joda (not enforced)</td>
|
|
|
|
<td><code>application/vnd.joost.joda-archive</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable">Interoperable Aspects</h4>
|
|
|
|
<ul>
|
|
<li>Zip format</li>
|
|
|
|
<li>Deflate compression</li>
|
|
</ul>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation0">Fragmentation Issues</h4>
|
|
|
|
<ul>
|
|
<li>There is no consistent file extension for widgets; each vendor uses their own unique
|
|
file extension.</li>
|
|
|
|
<li>Nowhere is it defined exactly which parts of the Zip specification should be
|
|
supported by a widget user agent. Zip is a large specification that is constantly
|
|
evolving. Zip supports multiple compression algorithms and features. If a widget is
|
|
packaged using the wrong compression algorithm, it might not be interoperable with
|
|
another widget engine or device. Although the issue of compression is not currently a
|
|
major issue, it has the potential to become one as widgets become more prevalent on
|
|
mobile devices and computers start to work natively in 64-bit.</li>
|
|
|
|
<li>There is no standardized Media Type, which results in widgets served over HTTP being
|
|
associated with only one kind of widget engine. One media type per widget engine results
|
|
in vendor lock-in.</li>
|
|
</ul>
|
|
|
|
<h2 id="metadata"><span class="secno">5.</span> Metadata and Configuration</h2>
|
|
|
|
<p>A widget resource will typically include a configuration document, in which an author
|
|
declares metadata and/or some configuration parameters that a widget user agent may use
|
|
to configure a widget upon instantiation. All market leading widget engines use XML as
|
|
the preferred format for storing metadata.</p>
|
|
|
|
<dl>
|
|
<dt>XML vocabulary</dt>
|
|
|
|
<dd>The proprietary specification that defines the semantics of the elements and
|
|
attributes that authors should use when marking up a configuration document.</dd>
|
|
|
|
<dt>File name</dt>
|
|
|
|
<dd>The name of the file as</dd>
|
|
|
|
<dt>Required?</dt>
|
|
|
|
<dd>Is the configuration document required for the widget user agent to instantiate the
|
|
widget. This was tested by attempting to instantiate a widget without a configuration
|
|
document present inside the widget resource.</dd>
|
|
|
|
<dt>Uses XMLNS</dt>
|
|
|
|
<dd>Does the configuration document require authors to declare a namespace. Also tested
|
|
using a bogus namespace on the root element xmlns=""</dd>
|
|
|
|
<dt>Conforming Parser?</dt>
|
|
|
|
<dd>Is the XML parser used by the widget user agent conformant to the XML specification
|
|
and XMLNS aware?</dd>
|
|
</dl>
|
|
|
|
<table cellspacing="0" summary="">
|
|
<caption>
|
|
Configuration documents
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>XML vocabulary</th>
|
|
|
|
<th>File Name</th>
|
|
|
|
<th>Required?</th>
|
|
|
|
<th>Uses XMLNS?</th>
|
|
|
|
<th>Conforming Parser?</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>XML vocabulary</th>
|
|
|
|
<th>File Name</th>
|
|
|
|
<th>Required?</th>
|
|
|
|
<th>Uses XMLNS?</th>
|
|
|
|
<th> </th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>Konfabulator Reference</td>
|
|
|
|
<td>widget.xml</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Sidebar</td>
|
|
|
|
<td>Microsoft Gadgets</td>
|
|
|
|
<td>gadget.xml</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>Google Gadgets</td>
|
|
|
|
<td>gadget.gmanifest</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>no</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td>Opera Spec</td>
|
|
|
|
<td>config.xml</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes, but not required. If a bogus namespace is given, the widget will not work.</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>Apple plist</td>
|
|
|
|
<td>Info.plist</td>
|
|
|
|
<td>Yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web-Runtime</td>
|
|
|
|
<td>Apple plist</td>
|
|
|
|
<td>Info.plist</td>
|
|
|
|
<td>Yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td><cite>Joost Joda</cite></td>
|
|
|
|
<td>config.xml</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes, but not required (will work with any given namespace).</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authorities information about any particular
|
|
widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable0">Interoperable Aspects</h4>
|
|
|
|
<ul>
|
|
<li>XML is the preferred format for structuring metadata.</li>
|
|
</ul>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation1">Fragmentation Issues</h4>
|
|
|
|
<ul>
|
|
<li>The XML dialects are all different.</li>
|
|
|
|
<li>XML parsers are generally non-conforming to the XML and XMLNS specifications.</li>
|
|
</ul>
|
|
|
|
<h3 id="metadata0"><span class="secno">5.1</span> Metadata</h3>
|
|
|
|
<p>Metadata refers to how authors store information about their widget inside the widget,
|
|
and how that data is made accessible to people or machines.</p>
|
|
|
|
<p>In practice, the inclusion of any metadata elements is generally considered optional
|
|
but is nonetheless recommended by vendors. Widget user agents generally make use of
|
|
metadata elements in different application contexts such as menus, lists, and
|
|
about-boxes. The most common metadata elements captured in configuration documents
|
|
include:</p>
|
|
|
|
<dl>
|
|
<dt>Root element:</dt>
|
|
|
|
<dd>The element found at the root of each configuration document, which contains all
|
|
other elements in the document.</dd>
|
|
|
|
<dt>Name:</dt>
|
|
|
|
<dd>The human readable name of the widget as it appears in menus or other contexts.</dd>
|
|
|
|
<dt>Unique identifier:</dt>
|
|
|
|
<dd>An author assigned unique identifier for the widget.</dd>
|
|
|
|
<dt>Version identifier:</dt>
|
|
|
|
<dd>Some string that identifies the version of the widget.</dd>
|
|
|
|
<dt>Description:</dt>
|
|
|
|
<dd>A human readable description of the widget, generally describing what it does.</dd>
|
|
|
|
<dt>Copyright:</dt>
|
|
|
|
<dd>Copyright information.</dd>
|
|
|
|
<dt>Authorship:</dt>
|
|
|
|
<dd>information about the authorship of the widget, including the author's name, email,
|
|
and the organization that they may be affiliated with</dd>
|
|
|
|
<dt> </dt>
|
|
</dl>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Metadata elements and their roles
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Root Element</th>
|
|
|
|
<th>Name</th>
|
|
|
|
<th>Unique Identifier</th>
|
|
|
|
<th>Version Identifier</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Root Element</th>
|
|
|
|
<th>Name</th>
|
|
|
|
<th>Unique Identifier</th>
|
|
|
|
<th>Version Identifier</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>
|
|
<p><code><metadata></code></p>
|
|
</td>
|
|
|
|
<td><code><name>text</name></code></td>
|
|
|
|
<td><code><identifier><abbr title="universaly unique identifier">UUID</abbr> or
|
|
<abbr title="reverse domain format">RD</abbr></identifier></code></td>
|
|
|
|
<td><code><version>text</version></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Vista Sidebar</td>
|
|
|
|
<td>
|
|
<p><code><gadget></code></p>
|
|
</td>
|
|
|
|
<td><code><name>text</name></code></td>
|
|
|
|
<td>Uses <code><name></code> and <code><version></code>.</td>
|
|
|
|
<td><code><version>text(n.n.n.n)</version></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td><code><gadget></code></td>
|
|
|
|
<td><code><name>text</name></code></td>
|
|
|
|
<td><code><id>UUID</id></code></td>
|
|
|
|
<td><code><version>text(n.n.n.n)</version></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td><code><widget></code></td>
|
|
|
|
<td><code><widgetname>text</widgetname></code></td>
|
|
|
|
<td><code><id><host>URI</host>
|
|
<name>text</name><id></code></td>
|
|
|
|
<td><code><id><revised>W3CDTF</revised></id></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td><code><plist version="1.0"></code></td>
|
|
|
|
<td><code><key>CFBundleDisplayName</key>
|
|
<string>text</string></code></td>
|
|
|
|
<td><code><key>CFBundleIdentifier</key><br />
|
|
<string><abbr title="reverse domain format">RD</abbr></string></code></td>
|
|
|
|
<td>
|
|
<code><key>CFBundleVersion</key><string>string</string></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web-Runtime</td>
|
|
|
|
<td><code><plist version="1.0"></code></td>
|
|
|
|
<td><code><key>CFBundleDisplayName</key>
|
|
<string>text</string></code></td>
|
|
|
|
<td><code><key>Identifier</key><br />
|
|
<string><abbr title="reverse domain format">RD</abbr></string></code></td>
|
|
|
|
<td><code><key>Version</key><string>string</string></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td><code><widget-manifest></code></td>
|
|
|
|
<td><code><name>text</name></code></td>
|
|
|
|
<td><code><id>URI</id></code></td>
|
|
|
|
<td>none.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<table cellspacing="0" summary="">
|
|
<caption>
|
|
Metadata elements and their roles (continued)
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Description</th>
|
|
|
|
<th>Authorship</th>
|
|
|
|
<th>Copyright</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Description</th>
|
|
|
|
<th>Authorship</th>
|
|
|
|
<th>Copyright</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td><code><description>Text</description></code></td>
|
|
|
|
<td><code><author name="" organization="" href=""/></code></td>
|
|
|
|
<td><code><copyright>text</copyright></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Vista Sidebar</td>
|
|
|
|
<td><code><description>Text</description></code></td>
|
|
|
|
<td><code><author name=""> <info url="URL"/> <logo src="rel-path"/>
|
|
</author></code></td>
|
|
|
|
<td><code><copyright>text</copyright></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td><code><description>Text</description></code></td>
|
|
|
|
<td><code><author>text</author> <authorEmail>text</authorEmai>
|
|
<authorWebsite>URL </authorWebsite></code></td>
|
|
|
|
<td><code><copyright>text</copyright></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td><code><description>Text</description></code></td>
|
|
|
|
<td><code><author> <name>text</name> <email>text</email>
|
|
<link>text</link> <organization>text</organization>
|
|
</author></code></td>
|
|
|
|
<td>none.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>none.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web-Runtime</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>none.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td><code><web site.>URI</web site.></code></td>
|
|
|
|
<td>none. Often included as an xml comment inside the configuration document.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable1">Interoperable Aspects</h4>
|
|
|
|
<ul>
|
|
<li>Although element names differ, the semantics captured by elements is relatively
|
|
consistent.</li>
|
|
</ul>
|
|
|
|
<h4 id="fragmentation"><span class="secno">5.1.1</span> Fragmentation Issues</h4>
|
|
|
|
<ul>
|
|
<li>There some fragmentation in regards to recording the description, authorship
|
|
information and copyright.</li>
|
|
</ul>
|
|
|
|
<h3 class="no-toc no-num" id="configuration">Configuration parameters</h3>
|
|
|
|
<p>The most common configuration parameters include:</p>
|
|
|
|
<dl>
|
|
<dt>Bootstrap:</dt>
|
|
|
|
<dd>A way to identify the start file (or main content), including a way to identify the
|
|
content type of the start file (eg. type="HTML").</dd>
|
|
|
|
<dd> </dd>
|
|
|
|
<dt>Network:</dt>
|
|
|
|
<dd>The need for a widget to access the network.</dd>
|
|
|
|
<dt>Width and height:</dt>
|
|
|
|
<dd>The initial rendering dimensions (width, height).</dd>
|
|
|
|
<dd> </dd>
|
|
|
|
<dt>Plugins:</dt>
|
|
|
|
<dd>The intention to use plugins (eg. Flash and Java).</dd>
|
|
|
|
<dt>Platform:</dt>
|
|
|
|
<dd>The minimum version of the widget user agent required to run the widget.</dd>
|
|
</dl>
|
|
|
|
<p>Please note that some configuration parameters have a close relationship to the
|
|
security model of widgets.</p>
|
|
|
|
<table cellspacing="0" summary="">
|
|
<caption>
|
|
Configuration documents
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Bootstrap</th>
|
|
|
|
<th>Width and Height</th>
|
|
|
|
<th>Network</th>
|
|
|
|
<th>Plugins</th>
|
|
|
|
<th>Platform</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Bootstrap</th>
|
|
|
|
<th>Width and Height</th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>Not declared. First *.kon file encountered is treated as the start file.</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td><code><security><br />
|
|
<http name="someSite">exemple.com</http><br />
|
|
</security></code></td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td><code><platform minVersion="n.n" os="macintosh|windows"/></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Sidebar</td>
|
|
|
|
<td><code><host> <base type="HTML" src="rel-path/file" />
|
|
</host></code></td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>none. Allowed by default.</td>
|
|
|
|
<td>none. Allowed by default.</td>
|
|
|
|
<td><code><host name="sidebar"> <platform minPlatformVersion ="n.n"
|
|
/></host></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>Not declared. Root of container must have a "main.xml" file which serves as the start
|
|
file.</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>none. Allowed by default.</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td><code><gadget minimumGoogleDesktopVersion="n.n.n.n"><br />
|
|
<platform><br />
|
|
<windows minimumGadgetHostVersion="n.n.n.n"/><br />
|
|
<mac minimumGadgetHostVersion="n.n.n.n"/><br />
|
|
</platform><br />
|
|
</gadget></code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td>None. The start file must be called "index.html" and must be at the root of the
|
|
archive.</td>
|
|
|
|
<td><code><width>n</width> <height>n</height></code></td>
|
|
|
|
<td><code><security> <access><protocol>http|ftp</protocol>
|
|
<host>IP Address|domain name</host> <port>integer|integer-range(eg
|
|
1200-1500)</port></access> </security></code></td>
|
|
|
|
<td><code><content><plugins>yes|no</plugins>
|
|
<java>yes|no</java></content></code></td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td><code><key>MainHTML</key>
|
|
<string>rel-path/any.html</string></code></td>
|
|
|
|
<td>
|
|
<p><code><key>Width</key> <integer>n</integer>
|
|
<key>Height</key> <integer>n</integer></code></p>
|
|
|
|
<p>When not present, the width and height of Default.png is used.</p>
|
|
</td>
|
|
|
|
<td> </td>
|
|
|
|
<td><code><key>AllowFullAccess</key> <true|false/></code></td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web-Runtime</td>
|
|
|
|
<td><code><key>MainHTML</key>
|
|
<string>rel-path/any.html</string></code></td>
|
|
|
|
<td> </td>
|
|
|
|
<td><code><key>AllowNetworkAccess</key> <true|false/>
|
|
<key>AllowFullAccess</key> <true|false/></code></td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td><code><main-file>rel-path/a.[jwl,html,svg]</main-file></code></td>
|
|
|
|
<td> </td>
|
|
|
|
<td><code><key>AllowNetworkAccess</key> <true|false/></code></td>
|
|
|
|
<td><code><key>AllowInternetPlugins</key> <true|false/></code></td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable2">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation2">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="authoring"><span class="secno">6.</span> Authoring and Scripting</h2>
|
|
|
|
<p><dfn id="authoring0">Authoring</dfn> refers to how widgets are created, marked-up and
|
|
scripted. In terms of authoring, there is a fairly congruent set of commonalities that
|
|
most widget user agents share, and which authors exploit when authoring a widget: mainly
|
|
their reliance on Web standards and protocols, and a strong focus on rapid development.
|
|
Most widget user agents will typically support <cite><abbr title=
|
|
"Hyper Text Transfer Protocol"><a href="#http">HTTP</a></abbr></cite>, <cite><abbr title=
|
|
"Internationalized Resource Identifier"><a href="#iri">IRI</a></abbr></cite>s, and
|
|
<cite><a href="#unicode">Unicode</a></cite>, as well as <cite><a href=
|
|
"#ecmascript">ECMAScript</a></cite>, the <abbr title="Document Object Model">DOM</abbr>,
|
|
and the ability to render markup languages, like <abbr title=
|
|
"HyperText Markup Language"><cite><a href="#html">HTML</a></cite></abbr> and <abbr title=
|
|
"Cascading Style Sheets"><cite><a href="#css">CSS</a></cite></abbr>. Widget user agents
|
|
also generally support multimedia resources, such as images, sounds, and some even
|
|
video.</p>
|
|
|
|
<p>To make authoring of widgets possible, widget user agents provide authors with
|
|
Application Programming Interfaces (<abbr title=
|
|
"application programming interfaces">APIs</abbr>) that are mostly identical to those
|
|
found in Web browsers, as well as <abbr title=
|
|
"application programming interfaces">APIs</abbr> that provide functionality that is
|
|
specific to widgets. Also, because of the rise in popularity of <cite><a href=
|
|
"#ajax">Ajax</a></cite>-style development, many widget user agents now implement the
|
|
<cite><a href="#xmlhttprequest">XMLHttpRequest</a></cite> object or some similar
|
|
mechanism for making asynchronous data requests over <cite><abbr title=
|
|
"Hyper Text Transfer Protocol"><a href="#http">HTTP</a></abbr></cite>.</p>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Supported technologies
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>png</th>
|
|
|
|
<th>gif87</th>
|
|
|
|
<th>gif89</th>
|
|
|
|
<th>jpeg</th>
|
|
|
|
<th>png</th>
|
|
|
|
<th>svg</th>
|
|
|
|
<th>mp3</th>
|
|
|
|
<th>wav</th>
|
|
|
|
<th>swf</th>
|
|
|
|
<th>css</th>
|
|
|
|
<th>js</th>
|
|
|
|
<th>html4</th>
|
|
|
|
<th>canvas</th>
|
|
|
|
<th>XHR</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>png</th>
|
|
|
|
<th>gif87</th>
|
|
|
|
<th>gif89</th>
|
|
|
|
<th>jpeg</th>
|
|
|
|
<th>png</th>
|
|
|
|
<th>svg</th>
|
|
|
|
<th>mp3</th>
|
|
|
|
<th>wav</th>
|
|
|
|
<th>swf</th>
|
|
|
|
<th>css</th>
|
|
|
|
<th>js</th>
|
|
|
|
<th>html4</th>
|
|
|
|
<th>canvas</th>
|
|
|
|
<th>XHR</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Vista Sidebar</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>yes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>yes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web Runtime</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>yes</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>?</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>yes</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<p class="todo">explain functionality exclusively available to widgets (run programs,
|
|
cross domain requests)</p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable3">Interoperable Aspects</h4>
|
|
|
|
<ul>
|
|
<li>All widget user agents support XMLHttpRequest.</li>
|
|
|
|
<li>All but one support HTML and CSS as layout</li>
|
|
</ul>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation3">Fragmentation Issues</h4>
|
|
|
|
<ul>
|
|
<li>There is some limited fragmantation is regards to support of proprietary
|
|
technologies, such as Flash.</li>
|
|
</ul>
|
|
|
|
<h3 id="apis"><span class="secno">6.1</span> APIs</h3>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<dl>
|
|
<dt>Open page in browser</dt>
|
|
|
|
<dd>Open a web document in the standard system browser</dd>
|
|
|
|
<dt>Preferences</dt>
|
|
|
|
<dd>Get, set and delete user preferences</dd>
|
|
|
|
<dt>Close widget</dt>
|
|
|
|
<dd>Destroy instance of currently running widget</dd>
|
|
</dl>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Supported technologies
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Open page in browser</th>
|
|
|
|
<th>Preferences</th>
|
|
|
|
<th>Close widget</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td><code>void openURL(url)</code></td>
|
|
|
|
<td>
|
|
<p> </p>
|
|
</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Vista Sidebar</td>
|
|
|
|
<td>no method, use <a href=""> element,<br />
|
|
or using javascript within the document: <code>window.open(url)</code></td>
|
|
|
|
<td><code>System.Gadget.Settings.write(String name, Object Value)<br />
|
|
System.Gadget.Settings.writeString(String name, String Value)<br />
|
|
System.Gadget.Settings.read(strName)<br />
|
|
System.Gadget.Settings.readString(strName)</code></td>
|
|
|
|
<td><code>System.Gadget.close()</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>no method, use <a href=""> element</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td><code>openURL(String url)</code></td>
|
|
|
|
<td><code>widget.setPreferenceForKey(preference, key)<br />
|
|
widget.preferenceForKey(key)<br />
|
|
setPreferenceForKey(String preference, null)</code></td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td><code>openURL(String url)</code></td>
|
|
|
|
<td><code>widget.setPreferenceForKey(preference, key)<br />
|
|
widget.preferenceForKey(key)<br />
|
|
setPreferenceForKey(String preference, null)</code></td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web Runtime</td>
|
|
|
|
<td><code>openURL(String url)</code></td>
|
|
|
|
<td>
|
|
<p><code>widget.setPreferenceForKey(preference, key)<br />
|
|
widget.preferenceForKey(key)<br /></code> <code>setPreferenceForKey(String preference,
|
|
null)</code></p>
|
|
</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td><code>navigate(String url);</code></td>
|
|
|
|
<td>widget.setString(String name, String vlaue);</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable4">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation4">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h3 id="widget"><span class="secno">6.2</span> Widget object: properties and events</h3>
|
|
|
|
<h4 class="no-toc" id="properties"><span class="secno">6.2.1</span> Properties of the
|
|
Widget object</h4>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Properties of the widget object
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">Property</th>
|
|
|
|
<th scope="col">Konfabulator</th>
|
|
|
|
<th scope="col">Windows Sidebar</th>
|
|
|
|
<th scope="col">Google Desktop</th>
|
|
|
|
<th scope="col">Opera Widgets</th>
|
|
|
|
<th scope="col">Apple Dashboard</th>
|
|
|
|
<th scope="col">Nokia Web-Runtime</th>
|
|
|
|
<th scope="col">Joost Widgets</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>locale information</td>
|
|
|
|
<td>locale</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>window.navigator.language</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>window.navigator.language</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Engine version needed to run</td>
|
|
|
|
<td>requiredEngineVersion</td>
|
|
|
|
<td>System.Gadget.platformVersion</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>If the widget is visible</td>
|
|
|
|
<td>visible</td>
|
|
|
|
<td>System.Gadget.visible</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>The version of the widget as specified in the configuration document</td>
|
|
|
|
<td>version</td>
|
|
|
|
<td>System.Gadget.version</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>The name of the widget as specified in the configuration document</td>
|
|
|
|
<td>name</td>
|
|
|
|
<td>System.Gadget.name</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td height="25">The details of the author as specified in the configuration document</td>
|
|
|
|
<td>
|
|
<p>widget.author</p>
|
|
|
|
<p>widget.company</p>
|
|
</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>The copyright declaration as in the configuration document</td>
|
|
|
|
<td>widget.copyright</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Access the unique identifier for the widget</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>
|
|
<p><strong>String widget.identifier</strong></p>This read-only property contains a string
|
|
value that is unique among all of the instances of a single widget. This value is
|
|
assigned by Dashboard and persists between instantiations of each widget instance.
|
|
</td>
|
|
|
|
<td>
|
|
<p>string widget.identifier;</p>
|
|
|
|
<p> </p>
|
|
</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> </td>
|
|
|
|
<td>requiredPlatform</td>
|
|
|
|
<td>Document, opacity, path, settingsUI, docked, background</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc" id="events"><span class="secno">6.2.2</span> Events</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Events of the widget object
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">Event</th>
|
|
|
|
<th scope="col">Konfabulator</th>
|
|
|
|
<th scope="col">Windows Sidebar</th>
|
|
|
|
<th scope="col">Google Desktop</th>
|
|
|
|
<th scope="col">Opera Widgets</th>
|
|
|
|
<th scope="col">Apple Dashboard</th>
|
|
|
|
<th scope="col">Nokia Web-Runtime</th>
|
|
|
|
<th scope="col">Joost Widgets</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Widget has loaded</td>
|
|
|
|
<td>widget.onLoad</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>WUA has focus</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>widget.onshow</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>WUA lost focus</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>widget.onhide</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Widget focus</td>
|
|
|
|
<td>widget.onGainFocus</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>window.onfocus</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Widget lost focus</td>
|
|
|
|
<td>widget.onLoseFocus</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>window.onblur</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Widget drag start</td>
|
|
|
|
<td>widget.onMouseDrag</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>widget.ondragstart</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td height="25">Widget is being dragged</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td height="25">Widget drag end</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>widget.ondragend</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Widget is removed from WUA</td>
|
|
|
|
<td>widget.onUnload</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td>widget.onremove</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Cross widget communication</td>
|
|
|
|
<td>widget.onTellWidget = function(){ }</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Other</td>
|
|
|
|
<td>dockOpen onDockClosed onDockOpened onPreferencesChanged onRunCommandInBgComplete
|
|
onScreenChanged onTellWidget onWakeFromSleep onWillChangePreferences</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="accessing">Accessing the file system</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<p>Execute system level commands or open applications.</p>
|
|
<pre>
|
|
<code>//If no callbackHandler is present, the command is executed synchronously.
|
|
//If callbackHandler is present, command is executed asynchronously. callbackHandler needs to except an argument.
|
|
CommandObject widget.system(String command, [Function callbackHandler])
|
|
|
|
interface CommandObject{
|
|
String property outputString; //the standard out
|
|
String errorString; //any error that was thrown
|
|
String status. //the command's exit status
|
|
|
|
// allows handler to receive incremental output (eg ping.)
|
|
EventListener onreadoutput(function handler);
|
|
function cancel(); // cancel the command
|
|
function write(String value); //write a string to standard in
|
|
function close(); //send (EOF) to standard in
|
|
}</code>
|
|
|
|
</pre>
|
|
<pre>
|
|
<code>
|
|
void widget.openApplication(HexNum Uid, String param)
|
|
|
|
opens an S60 application in stand-alone mode. Values cannot passed back from the opened application to the widget. A widget cannot open another widget using this method.
|
|
</code>
|
|
</pre>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable5">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation5">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="user-interface"><span class="secno">7.</span> User interface and
|
|
Accessibility</h2>
|
|
|
|
<p><dfn id="accessibility">Accessibility</dfn> refers to how end-users, and those with
|
|
special needs, can access the content and use the interactive elements of an instantiated
|
|
widget. Most market-leading widget user agents allow widgets to be authored using
|
|
<cite><a href="#html">HTML</a></cite>, <cite><a href="#css">CSS</a></cite>, and
|
|
<cite><a href="#ecmascript">ECMAScript</a></cite>. <cite><a href="#html">HTML</a></cite>,
|
|
when authored with care, is generally regarded to be an accessible technology whose
|
|
structure and semantics are generally well understood and correctly implemented by most
|
|
market-leading widget user agents. To extend It is also therefore theoretically possible
|
|
for authors to make their widgets fairly accessible by applying, for example, the
|
|
relevant sections of the <em>Web Content Accessibility Guidelines</em> (<cite><a href=
|
|
"#wcag"><abbr title="Web Content Accessibility Guidelnes">WCAG</abbr></a></cite>).</p>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Language used to declare the user interface of a widget
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>UI Markup</th>
|
|
|
|
<th>HTML Renderer</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th><abbr title="User Interface">UI</abbr> Markup</th>
|
|
|
|
<th> </th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td><abbr title="HyperText Markup Language">HTML</abbr> + CSS (through Webkit),
|
|
Proprietary <abbr title="Extensible Markup Language">XML</abbr></td>
|
|
|
|
<td>webkit</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Vista Sidebar</td>
|
|
|
|
<td><abbr title="HyperText Markup Language">HTML</abbr> + CSS + Proprietary <abbr title=
|
|
"Extensible Markup Language">XML</abbr></td>
|
|
|
|
<td>Internet Explorer</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>Proprietary <abbr title="Extensible Markup Language">XML</abbr></td>
|
|
|
|
<td>none</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td><abbr title="HyperText Markup Language">(X)HTML</abbr> + <abbr title=
|
|
"Cascading Style Sheets">CSS + SVG</abbr></td>
|
|
|
|
<td>Opera</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td><abbr title="HyperText Markup Language">HTML</abbr> + <abbr title=
|
|
"Cascading Style Sheets">CSS + SVG</abbr></td>
|
|
|
|
<td>Webkit/safari</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web Runtime</td>
|
|
|
|
<td><abbr title="HyperText Markup Language">HTML</abbr> + <abbr title=
|
|
"Cascading Style Sheets">CSS</abbr></td>
|
|
|
|
<td>Webkit</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td><abbr title="HyperText Markup Language">XHTML</abbr> + CSS + SVG + Proprietary
|
|
<abbr title="Extensible Markup Language">XML</abbr></td>
|
|
|
|
<td>Gecko</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable6">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation6">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="instantiation"><span class="secno">8.</span> Instantiation</h2>
|
|
|
|
<p><strong>What addressing mechanism does the widget user agent support at runtime to get
|
|
to resources inside the package? (ie. how does a developer address and include things
|
|
like images or sounds in their widget?)</strong></p>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
The details of configuration document
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Other expected files</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Other expected files</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>at least one *.kon somewhere in the archive</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Sidebar</td>
|
|
|
|
<td>at least one html file somewhere in the archive</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td>(any folder)* index.html. The folder is selected in alphabetical order, not by the
|
|
order in which it appears physically in the archive.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>some [name].html file identified as the start file by the <code>MainHTML</code> key
|
|
in the Info.plist file. Icon.png and Default.png. Icon.png is used in the Dashboard bar.
|
|
Default.png is shown while the widget loads and used to set the render context of the
|
|
widget if width and height keys were not set in Info.plist.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web-Runtime</td>
|
|
|
|
<td>some [name].html file identified as the start file by the <code>MainHTML</code> key
|
|
in the Info.plist file. Icon.png is optional.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<p class="todo">TBW: discusses different ways that the start file of widget is located:
|
|
1. having a preset name (eg. index.html ala Opera Widgets). Having it declared in the
|
|
configuration document (ala Joost), Having it match a search pattern (ala
|
|
Konfabulator)</p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable7">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation7">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="i18n"><span class="secno">9.</span> Internationalization and Localization</h2>
|
|
|
|
<p><dfn id="internationalization">internationalization</dfn> refers to the technical
|
|
aspects that allow a widget to work in <q>multilingual contexts without requiring an
|
|
author to make significant engineering changes to a widget.</q> <dfn id=
|
|
"localization">Localization</dfn> is the processes where by a widget is adapted to use
|
|
the local conventions of particular end-users (eg. using a particular dialect)<q>.</q> To
|
|
allow authors to distribute a widget to multiple locales, the majority of vendors provide
|
|
guidelines explain to authors how to make effective use of internationalization
|
|
mechanisms built into widget user agents. When authors follow localization guidelines, a
|
|
widget user agent can use automated mechanisms to select the appropriate localized
|
|
resources for a widget based on a system's locale information; thus making it easier for
|
|
authors to create localized widgets.</p>
|
|
|
|
<p>In the widget space, internationalization is commonly achieved in one of two ways:</p>
|
|
|
|
<ul>
|
|
<li>One way is to have authors place localized resources into specifically named folders
|
|
that identify the language and region (eg. "<code>/en-au/</code>" for English Australian)
|
|
of localized content. If the widget user agent can identify the end-user's locale, and
|
|
the widget package contains matching localized content, then a localized widget will be
|
|
presented to the end-user.</li>
|
|
|
|
<li>Another way is to have authors place localized textual content inside a specifically
|
|
named text file, which is in turn placed inside specially named folders (eg.
|
|
"<code>/en-au/Localizable.strings</code>"). Inside the text file, localized strings are
|
|
identified by an unique identifier and must be formatted using a special syntax. For
|
|
instance, Konfabulator uses a special syntax for localizing strings, for example:</li>
|
|
</ul>
|
|
<pre>
|
|
<code>"greeting" = "g'day mate!";</code>
|
|
<code>"greeting_gfx" = "/en-au/images/greet.png";</code>
|
|
</pre>
|
|
|
|
<p>Note that this method only localizes textual content, but can be used to also identify
|
|
the path or URI to localized resources. At runtime, the widget user agent makes those
|
|
localized strings available via a scripting interface:</p>
|
|
<pre>
|
|
|
|
<code>//would set the button's label to "g'day mate!"
|
|
myButton.label = widget.getLocalizedString("greeting");</code>
|
|
|
|
<code>myButton.style.background = widget.getLocalizedString("greeting_gfx");</code>
|
|
</pre>
|
|
|
|
<p>When automated internationalization is not provided by a widget user agent, authors
|
|
usually result to using arbitrary solutions to achieve localization. Such is the case for
|
|
Opera widgets.</p>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Localization strategies
|
|
</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Localization Strategy</th>
|
|
|
|
<th>Automatic</th>
|
|
|
|
<th>Convention followed</th>
|
|
|
|
<th>Example</th>
|
|
|
|
<th>Comments</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>Directory-based + <abbr title="JavaScript">JS</abbr></td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td><code>/en-au/Localizable.strings</code></td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Sidebar</td>
|
|
|
|
<td>Directory-based + <abbr title="JavaScript">JS</abbr></td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>Directory-based + <abbr title="JavaScript">JS</abbr></td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td>none</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>none</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>Does not support any automated localization strategies.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>Directory-based + <abbr title="JavaScript">JS</abbr></td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>/en-au/</td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Localization Strategy</th>
|
|
|
|
<th>Automatic</th>
|
|
|
|
<th>Convention followed</th>
|
|
|
|
<th>Example</th>
|
|
|
|
<th>Comments</th>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable8">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation8">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="digital"><span class="secno">10.</span> Digital Signatures</h2>
|
|
|
|
<p>A <dfn id="digital0">digital signature</dfn> is the product of applying a secret
|
|
numeric key (known as a <em>private key</em>) and an encryption algorithm over some data
|
|
to produce a unique <em>hash value</em>. The only way to validate a digital signature is
|
|
to use a corresponding <em>public key</em> in a process known as <em>asymmetric</em>
|
|
<em>cryptography</em>.</p>
|
|
|
|
<p>Although not widely supported by market-leading widget user agents, some widget user
|
|
agents allow an author to digitally sign a widget resource. Digitally signing a widget
|
|
resource involves calculating the hash values of all the resources inside the widget
|
|
resource and encrypting those values using a unique private key that is known only to the
|
|
author. The resulting data is bundled inside the widget resource with a digital
|
|
certificate, which an author can obtain from a certification authority (such as <a href=
|
|
"http://www.verisign.com/">VeriSign</a>) for a charge.</p>
|
|
|
|
<p>A digital certificate is therefore a trust mechanism intended to verify to a user that
|
|
an author really did sign the widget resource. A widget user agent can use the digital
|
|
certificate to verify the authenticity and data integrity of the widget resource. In the
|
|
rare case where a widget damages the end-user's device, the digital certificate provides
|
|
a user with a legal means to prove that a widget resource was signed by a particular
|
|
author or publisher.</p>
|
|
|
|
<p>Because digital certificates can come from untrusted sources, widget user agents will
|
|
include <em>root certificates</em> from sources that it trusts. Root certificates are
|
|
explicitly trusted and are considered impossible to forge. For example, the Konfabulator
|
|
is bundled with the Yahoo! root certificate which it uses to verify widgets signed by
|
|
Yahoo! Inc. are in fact signed by Yahoo! Inc.</p>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Digital Signatures
|
|
</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Signature</th>
|
|
|
|
<th>Certificate Format</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>x509</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Sidebar</td>
|
|
|
|
<td>yes</td>
|
|
|
|
<td>x509</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>-</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>-</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>no</td>
|
|
|
|
<td>-</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web Runtime</td>
|
|
|
|
<td>Planned</td>
|
|
|
|
<td>-</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost</td>
|
|
|
|
<td>Planned</td>
|
|
|
|
<td>-</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Signature</th>
|
|
|
|
<th>Certificate Format</th>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable9">Interoperable Aspects</h4>
|
|
|
|
<ul>
|
|
<li>The use of X509 certificates.</li>
|
|
</ul>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation9">Fragmentation Issues</h4>
|
|
|
|
<ul>
|
|
<li>General lack of support for digital signatures.</li>
|
|
</ul>
|
|
|
|
<h2 id="automatic"><span class="secno">11.</span> Automatic Updates</h2>
|
|
|
|
<p><dfn id="automatic0">Automatic updates</dfn> refers to a service that allows a widget
|
|
user agent to automatically check if a new or different version of an installed widget
|
|
resource has become available, and somehow acquire the new version and install it.
|
|
Automatic updates models work by allowing authors to assign a unique identifier and
|
|
version identifier to a widget resource (eg. <code>id="http://example.com/my.wdgt"
|
|
version="1.2"</code>).</p>
|
|
|
|
<p>To keep a widget resource up to date, the widget user agent periodically checks if a
|
|
different version of a widget resource has become available on a remote server. In the
|
|
case of the Konfabulator, it does this by sending an <cite><a href="#xml"><abbr title=
|
|
"eXtensible Markup Language">XML</abbr></a></cite> document that identifies the widget
|
|
via an unique identifier, and what version the end-user currently has installed. If a new
|
|
version of the widget resource is available on the server, the server sends back an
|
|
<cite><a href="#xml"><abbr title="eXtensible Markup Language">XML</abbr></a></cite> file
|
|
that contains a URL from where the widget user agent can acquire the latest version. The
|
|
widget user agent then informs the end-user that an update to a widget has become
|
|
available and if they want to perform the update. If the end-user agrees, then the widget
|
|
user agent downloads the latest version of the widget resource, archives the old version,
|
|
installs the new one in its place. The updated widget is re-instantiated with its
|
|
preexisting preferences (eg. an updated weather forecaster widget will generally not
|
|
require the end-user to re-input their preferred city after an update).</p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable10">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation10">Fragmentation Issues</h4>
|
|
|
|
<ul>
|
|
<li>General lack of support for automatic updates.</li>
|
|
</ul>
|
|
|
|
<h2 id="device"><span class="secno">12.</span> Device Independence</h2>
|
|
|
|
<p class="todo">Need to read up on how Nokia Web Runtime recommends authors deal with
|
|
migration of Dashboard widgets, etc.</p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable11">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation11">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="security"><span class="secno">13.</span> Security Models</h2>
|
|
|
|
<p><dfn id="security0">Security model</dfn> refers to the security policies under which a
|
|
widget user agent operates that either prevents or allows an instantiated widget from
|
|
performing particular actions (eg. accessing the network or reading/writing files). When
|
|
compared to Web browsers, some market-leading widget user agents have a comparatively
|
|
relaxed security model that allows an instantiated widget to read, write, modify, and/or
|
|
delete files, automatically upload files, automatically download files, execute local
|
|
applications, and even perform cross-domain request to "mash-up" data from multiple
|
|
different sources. All without the end-user having any indication that their privacy and
|
|
security might be at risk.</p>
|
|
|
|
<p>The ability to perform most of the aforementioned actions is strictly forbidden in
|
|
documents running in Web Browsers. Such a relaxed security model has been generally
|
|
positive in the widget space with very useful and powerful widgets being developed.
|
|
However, this has created an environment where users are left extremely vulnerable to
|
|
malicious attacks, and serious security risks have been demonstrated. Some market-leading
|
|
widget user agents, such as Opera Widgets, have a much tighter security model that
|
|
adheres more closely to the security model of a Web Browser; as such, they may be less
|
|
prone to serious security issues.</p>
|
|
|
|
<p class="todo">Need to discuss how security declarations are made using pInfo list or
|
|
Opera's security element.</p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable12">Interoperable Aspects</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation12">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="icons"><span class="secno">14.</span> Icons</h2>
|
|
|
|
<table border="0" cellspacing="0" summary="">
|
|
<caption>
|
|
Icons
|
|
</caption>
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Element in configuration file</th>
|
|
|
|
<th>Supported Types</th>
|
|
|
|
<th>Preferred</th>
|
|
|
|
<th>Comments</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th>Widget User Agent</th>
|
|
|
|
<th>Element</th>
|
|
|
|
<th>Supported Types</th>
|
|
|
|
<th> </th>
|
|
|
|
<th>Comments</th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Konfabulator</td>
|
|
|
|
<td><code><image usage="dock|security" src="images/some.png"/></code></td>
|
|
|
|
<td>GIF, PNG.</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>
|
|
<p>Two images may be declared, depending on the <code>usage</code> attribute. The
|
|
<code>usage</code> attribute allows either values <code>dock</code>|<code>security</code>
|
|
to indicate where the image should be used. Security image is shown as part of the widget
|
|
security warning when the widget is instantiated.</p>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Windows Vista Sidebar</td>
|
|
|
|
<td>
|
|
<p><icons> <icon src="rel-path" [width="" height=""]> </icons></p>
|
|
|
|
<p><hosts> <host> <defaultImage src=""/> </host></p>
|
|
</td>
|
|
|
|
<td>any GDI+ 1.0 supported format.</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>
|
|
<p>Having multiple icon elements allows the engine to select the icon most appropriate
|
|
for communication based on size. Preferred size is 64px*64px, but any size is ok.</p>
|
|
|
|
<p class="todo">The documentation contradicts itself in regards to icon and defaultImage.
|
|
Need to verify which one is actually used!</p>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Google Desktop</td>
|
|
|
|
<td>
|
|
<p><small-icon>rel-path/some.png<small-icon></p>
|
|
|
|
<p><icon>rel-path/some.png<small-icon></p>
|
|
</td>
|
|
|
|
<td>PNG</td>
|
|
|
|
<td>PNG</td>
|
|
|
|
<td>
|
|
<p class="todo">Need to test other formats</p>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Opera Widgets</td>
|
|
|
|
<td>
|
|
<p><icon>relative-path/some.png</icon></p>
|
|
|
|
<p> </p>
|
|
</td>
|
|
|
|
<td>GIF, PNG.</td>
|
|
|
|
<td> </td>
|
|
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Apple Dashboard</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>PNG</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>
|
|
<p>Not declared. An optional icon must appear in the root of the archive and must be
|
|
called icon.png. If the icon is missing, then the runtime will use a default icon.</p>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Nokia Web-Runtime</td>
|
|
|
|
<td>none.</td>
|
|
|
|
<td>PNG</td>
|
|
|
|
<td>PNG</td>
|
|
|
|
<td>include an "icon.png" file at the root of the widget.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joost Widgets</td>
|
|
|
|
<td>
|
|
<p><icon>relative-path/some.svg</icon></p>
|
|
|
|
<p> </p>
|
|
</td>
|
|
|
|
<td>SVG, PNG, JPEG, GIF</td>
|
|
|
|
<td> </td>
|
|
|
|
<td>SVG or PNG are preferred.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p class="disclaimer"><small>*Although care has been take to ensure the accuracy of the
|
|
information contained in this table, there is no guarantee that the information is
|
|
complete, correct, or up-to-date. To obtain authoritative information about any
|
|
particular widget user agent, please visit the vendor's web site.</small></p>
|
|
|
|
<p class="todo">This section will describe how icons are used by different widget
|
|
engines. It will discuss static icons (images, pngs), and dynamic icons, such as Yahoo!'s
|
|
icons. Might also talk briefly about iPod/Phone icons here too, as they are dynamic.</p>
|
|
|
|
<h4 class="no-toc no-num" id="interoperable13">Interoperable Aspects</h4>
|
|
|
|
<p>PNG, GIF87/89</p>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h4 class="no-toc no-num" id="fragmentation13">Fragmentation Issues</h4>
|
|
|
|
<p class="todo">TBW</p>
|
|
|
|
<h2 id="standardizable"><span class="secno">15.</span> Standardizable Aspects of
|
|
Widgets</h2>
|
|
|
|
<p>The following list represents the aspects of a widget that members of the working
|
|
group have identified as requiring standardization to reduce fragmentation in the widget
|
|
space. Aspects that are currently outside the scope of the working group charter are
|
|
proceeded by the text "<strong><dfn id="out-of">out of scope</dfn></strong>". To address
|
|
aspects beyond the scope of the working group, the working group will require liaison
|
|
with other working groups at the <abbr title="World Wide Web Consortium"><a href=
|
|
"http://w3.org">W3C</a></abbr> and possibly other related consortia such as the
|
|
<abbr title="Open Mobile Alliance">OMA</abbr> and the <abbr title=
|
|
"Open Ajax Alliance">OAA</abbr>.</p>
|
|
|
|
<p><dfn id="standardizable0">Standardizable aspects of widgets</dfn> include:</p>
|
|
|
|
<ul>
|
|
<li>Finding a suitable packaging format capable of encapsulating and structuring
|
|
resources for distribution and deployment, including:
|
|
|
|
<ul>
|
|
<li>The relevant technical aspects of the physical packaging format that make the format
|
|
interoperable across multiple platforms and mobile devices.</li>
|
|
|
|
<li>The abstract container, including required parts and hierarchies (eg. required files
|
|
and folders, if any).</li>
|
|
|
|
<li>The model by which the internal structure of a widget resource can be exploited by an
|
|
instantiated widget for localization purposes in internationalized contexts.</li>
|
|
|
|
<li>A means for an instantiated widget to address resources in a widget resource at
|
|
runtime.</li>
|
|
|
|
<li>A file extension.</li>
|
|
|
|
<li>A MIME type to formally denote that a widget resource distributed over <cite><a href=
|
|
"#http"><abbr title="Hyper Text Transfer Protocol">HTTP</abbr></a></cite> conforms to the
|
|
Widgets 1.0: Packaging specification.</li>
|
|
|
|
<li>A widely supported digital signature format that adequately provides data security,
|
|
authenticity and non-repudiation.</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>The configuration document language including:
|
|
|
|
<ul>
|
|
<li>The structure, semantics, and processing model for a vocabulary that would make up
|
|
the configuration document format.</li>
|
|
|
|
<li>Metadata elements pertaining to authorship (eg. author's name, email, etc).</li>
|
|
|
|
<li>Metadata elements pertaining to the widget (eg. id, title, description, etc).</li>
|
|
|
|
<li>Configuration parameters (eg. width, height, network access, etc).</li>
|
|
|
|
<li>A bootstrap mechanism that allows the widget user agent to find the start file of a
|
|
widget resource.</li>
|
|
|
|
<li>A model for finding a start file of a widget resource when a bootstrap is unavailable
|
|
or is in error.</li>
|
|
|
|
<li>A means for distinguishing the configuration document from other resources.</li>
|
|
|
|
<li>A means to declare an alternative representation of a widget (eg. an image icon) for
|
|
when a widget has not been instantiated.</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>A widgets API that could be implemented by a widget user agent and made available to
|
|
an instantiated widget that would allow authors to:
|
|
|
|
<ul>
|
|
<li>Access preferences particular to each instantiated widget.</li>
|
|
|
|
<li>Access runtime configuration properties and other relevant platform properties
|
|
(<strong><a href="#out-of">out of scope</a></strong>).</li>
|
|
|
|
<li>Access to services particular to the device on which the widget has been instantiated
|
|
(eg. camera, short message service, address book, etc) (<strong><a href="#out-of">out of
|
|
scope</a></strong>).</li>
|
|
|
|
<li>The ability to instantiate other applications on an end-user's device
|
|
(<strong><a href="#out-of">out of scope</a></strong>).</li>
|
|
|
|
<li>Access metadata values that the author declared in the configuration document.</li>
|
|
|
|
<li>Capture events and access properties that are particular to each instantiated
|
|
widget.</li>
|
|
|
|
<li>Control alternative runtime representations of a widget (eg. the docked
|
|
representation).</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>The security model/policies that determines what an instantiated widget can access
|
|
while running on a end-user's device.</li>
|
|
|
|
<li>A pre-existing language to declare the user interface in an accessible manner (eg.
|
|
mandating the use of <abbr title="HyperText Markup Language"><cite><a href=
|
|
"#html">HTML</a></cite></abbr> or some other <cite><a href="#xml"><abbr title=
|
|
"eXtensible Markup Language">XML</abbr></a></cite> vocabulary).</li>
|
|
|
|
<li>A <cite><a href="#http"><abbr title=
|
|
"Hyper Text Transfer Protocol">HTTP</abbr></a></cite>-based model for a widget user agent
|
|
to check if an updated version of a widget resource has become available for
|
|
download.</li>
|
|
</ul>
|
|
|
|
<p><dfn id="standardizable1">Standardizable aspects of widget engines</dfn> include:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p class="todo">TBW</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<h2 class="no-num" id="acknowledgments">Acknowledgments</h2>
|
|
|
|
<p>The editor would particularly like to thank Corin Edwards for his help on improving
|
|
the design on of <a href="#figure">figure 1</a>.</p>
|
|
|
|
<p>The editor would like to thank to the following people who have contributed to this
|
|
document (ordered by first name):</p>
|
|
|
|
<ul>
|
|
<li>Alexander Dreiling</li>
|
|
|
|
<li>Anne van Kesteren</li>
|
|
|
|
<li>Arthur Barstow</li>
|
|
|
|
<li>Arun Ranganathan</li>
|
|
|
|
<li>Benoit Suzanne</li>
|
|
|
|
<li>Bert Bos</li>
|
|
|
|
<li>Bradford Lassey</li>
|
|
|
|
<li>Cameron McCormack</li>
|
|
|
|
<li>Cliff Schmidt</li>
|
|
|
|
<li>Claudio</li>
|
|
|
|
<li>Coach Wei</li>
|
|
|
|
<li>Corin Edwards</li>
|
|
|
|
<li>Dan Brickley</li>
|
|
|
|
<li><span>David Pollington</span></li>
|
|
|
|
<li>Dean Jackson</li>
|
|
|
|
<li>Debra Polson</li>
|
|
|
|
<li>Doug Schepers</li>
|
|
|
|
<li>Ed Voas</li>
|
|
|
|
<li>Gene Vayngrib</li>
|
|
|
|
<li>Guido Grassel</li>
|
|
|
|
<li>Jay Sweeney</li>
|
|
|
|
<li>Jim Ley</li>
|
|
|
|
<li>Jose Manuel Cantera Fonseca</li>
|
|
|
|
<li>Kevin Lawver</li>
|
|
|
|
<li>Krzysztof Maczyński</li>
|
|
|
|
<li>Lachlan Hunt</li>
|
|
|
|
<li>Marc Silbey</li>
|
|
|
|
<li>Mark Baker</li>
|
|
|
|
<li>Mikko Pohja</li>
|
|
|
|
<li>Philipp Heltewig</li>
|
|
|
|
<li>Stephen Paul Weber</li>
|
|
|
|
<li>Thomas Landspurg</li>
|
|
|
|
<li>Yang Wong</li>
|
|
|
|
<li>Zachary Fitz-Walter</li>
|
|
</ul>
|
|
|
|
<h2 class="no-num" id="references">References</h2>
|
|
|
|
<dl class="references">
|
|
<dt><dfn id="ajax">Ajax</dfn></dt>
|
|
|
|
<dd><a href="http://www.adaptivepath.com/publications/essays/archives/000385.php">Ajax: A
|
|
New Approach to Web Applications</a>. J. J. Garrett. February 18, 2005. Adaptive Path.
|
|
Available at <a href=
|
|
"http://www.adaptivepath.com/publications/essays/archives/000385.php">http://www.adaptivepath.com/publications/essays/archives/000385.php</a></dd>
|
|
|
|
<dt><dfn id="apple">Apple pList</dfn></dt>
|
|
|
|
<dd><a href=
|
|
"http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/index.html">
|
|
Introduction to Property List Programming Topics for Core Foundation</a>, Apple Computer
|
|
Inc, 7 February 2006. Available at <a href=
|
|
"http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/index.html">
|
|
http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/index.html</a></dd>
|
|
|
|
<dt><dfn id="css">CSS</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/TR/CSS21/">Cascading Style Sheets, level 2, revision
|
|
1</a>, B. Bos, T. Çelik, I. Hickson, and H. Wium Lie. W3C Candidate Recommendation
|
|
19 July 2007. Available at <a href=
|
|
"http://www.w3.org/TR/CSS21/">http://www.w3.org/TR/CSS21</a></dd>
|
|
|
|
<dt><dfn id="dom">DOM</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/TR/REC-DOM-Level-1/">Document Object Model (DOM) Level 1
|
|
Specification</a>, L. Wood et al., 1 October 1998. Available at <a href=
|
|
"http://www.w3.org/TR/REC-DOM-Level-1/">http://www.w3.org/TR/REC-DOM-Level-1</a></dd>
|
|
|
|
<dt><dfn id="dashboard0">Dashboard Reference</dfn></dt>
|
|
|
|
<dd><a href=
|
|
"http://developer.apple.com/documentation/AppleApplications/Reference/Dashboard_Ref/index.html">
|
|
Dashboard Reference</a>, Apple Computer, Inc, May 2006. Available at <a href=
|
|
"http://developer.apple.com/documentation/AppleApplications/Reference/Dashboard_Ref/index.html">
|
|
http://developer.apple.com/documentation/AppleApplications/Reference/Dashboard_Ref/index.html</a></dd>
|
|
|
|
<dt><dfn id="google0">Google Gadgets</dfn></dt>
|
|
|
|
<dd><a href="http://desktop.google.com/script.html">Google Desktop Sidebar Scripting
|
|
<abbr title="Application Programming Interface">API</abbr></a>, Google Inc., 2006.
|
|
Available at <a href=
|
|
"http://desktop.google.com/script.html">http://desktop.google.com/script.html</a></dd>
|
|
|
|
<dt><dfn id="json">JSON</dfn></dt>
|
|
|
|
<dd><a href="http://www.ietf.org/rfc/rfc4627.txt">The application/json media type for
|
|
ECMAScript Object Notation</a>. D. Crockford. July 2006. Available at <a href=
|
|
"http://www.ietf.org/rfc/rfc4627.txt">http://www.ietf.org/rfc/rfc4627.txt</a></dd>
|
|
|
|
<dt> </dt>
|
|
|
|
<dt><dfn id="opera0">Opera Spec</dfn></dt>
|
|
|
|
<dd><a href=
|
|
"http://oxine.opera.com/widgets/documentation/widget-configuration.html">Opera Widgets
|
|
Specification 1.0</a>, A. Bersvendsen (Editor), Opera Software, 30 Apr, 2007. Available
|
|
at <a href=
|
|
"http://oxine.opera.com/widgets/documentation/widget-configuration.html">http://oxine.opera.com/widgets/documentation/widget-configuration.html</a></dd>
|
|
|
|
<dt><dfn id="sidebar">Sidebar Reference</dfn></dt>
|
|
|
|
<dd><a href="http://windowssdk.msdn.microsoft.com/en-us/library/ms722795.aspx">Windows
|
|
Sidebar Reference</a>, Microsoft Corporation, 2006. Available at <a href=
|
|
"http://msdn2.microsoft.com/en-us/library/aa965853.aspx">http://msdn2.microsoft.com/en-us/library/aa965853.aspx</a></dd>
|
|
|
|
<dt><dfn id="xml-internationalization">XML Internationalization and
|
|
Localization</dfn></dt>
|
|
|
|
<dd><a class="booktitle" href="#xml-internationalization">XML Internationalization and
|
|
Localization</a>. Savourel, Y. Sams Publishing, Indiana. June 2001.</dd>
|
|
|
|
<dt><dfn id="konfabulator0">Konfabulator Reference</dfn></dt>
|
|
|
|
<dd><a href=
|
|
"http://widgets.yahoo.com/gallery/dl_item.php?item=WidgetEngineReference_3.1.1.pdf">Konfabulator
|
|
Reference 4.5 Reference Manual</a> Yahoo! Inc., April 14, 2006. Available at <a href=
|
|
"http://widgets.yahoo.com/gallery/dl_item.php?item=WidgetEngineReference_3.1.1.pdf">http://Widgets.yahoo.com/gallery/dl_item.php?item=WidgetEngineReference_3.1.1.pdf</a></dd>
|
|
|
|
<dt><dfn id="wcag">WCAG</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/TR/WAI-WEBCONTENT/">Web Content Accessibility Guidelines
|
|
1.0</a>. W. Chisholm, G. Vanderheiden, and I. Jacobs. W3C Recommendation, 5 May 1999.
|
|
Available at <a href=
|
|
"http://www.w3.org/TR/WAI-WEBCONTENT/">http://www.w3.org/TR/WAI-WEBCONTENT/</a></dd>
|
|
|
|
<dt><dfn id="ecmascript">ECMAScript</dfn></dt>
|
|
|
|
<dd><a href=
|
|
"http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript
|
|
Language Specification</a>, Third Edition. <abbr title=
|
|
"European Computer Manufacturers Association">ECMA</abbr>, December 1999. Available at
|
|
<a href=
|
|
"http://www.ecma-international.org/publications/standards/Ecma-262.htm">http://www.ecma-international.org/publications/standards/Ecma-262.htm</a></dd>
|
|
|
|
<dt><dfn id="html">HTML</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/TR/html401/">HTML 4.01 Specification</a>, D. Raggett, A.
|
|
Le Hors, I. Jacobs, 24 December 1999. Available at <a href=
|
|
"http://www.w3.org/TR/html401/">http://www.w3.org/TR/html401/</a></dd>
|
|
|
|
<dt><dfn id="http">HTTP</dfn></dt>
|
|
|
|
<dd><a href="http://www.ietf.org/rfc/rfc2616.txt">Hypertext Transfer Protocol --
|
|
HTTP/1.1</a>, R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen, L. Masinter, P. Leach
|
|
and T. Berners-Lee, June 1999. Available at <a href=
|
|
"http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a></dd>
|
|
|
|
<dt><dfn id="mime-type">MIME Type</dfn></dt>
|
|
|
|
<dd><a href="http://www.ietf.org/rfc/rfc2046.txt">Multipurpose Internet Mail Extensions
|
|
(MIME) Part Two: media types</a>, N. Freed and N. Borenstein, November 1996. Available at
|
|
<a href=
|
|
"http://www.ietf.org/rfc/rfc2046.txt">http://www.ietf.org/rfc/rfc2046.txt</a>.</dd>
|
|
|
|
<dt><dfn id="unicode">Unicode</dfn></dt>
|
|
|
|
<dd><em>The Unicode Standard</em>, The Unicode Consortium, Version 5.</dd>
|
|
|
|
<dt><dfn id="xml">XML</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/TR/2000/REC-xml-20001006">Extensible Markup Language (XML)
|
|
1.0 Specification (Second Edition)</a>, T. Bray, J. Paoli, C. M. Sperberg-McQueen, E.
|
|
Maler, 6 October 2000. Available at <a href=
|
|
"http://www.w3.org/TR/REC-xml/">http://www.w3.org/TR/REC-xml/</a></dd>
|
|
|
|
<dt><dfn id="xmlhttprequest">XMLHttpRequest</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/TR/XMLHttpRequest/">The XMLHttpRequest object</a>. A. van
|
|
Kesteren. 2006. W3C Working Draft, Available at <a href=
|
|
"http://www.w3.org/TR/XMLHttpRequest/">http://www.w3.org/TR/XMLHttpRequest/</a></dd>
|
|
|
|
<dt><dfn id="x.509">X.509</dfn></dt>
|
|
|
|
<dd>CCITT, <em>Recommendation X.509: The Directory Authentication Framework</em>,
|
|
1988.</dd>
|
|
|
|
<dt><dfn id="iri">IRI</dfn></dt>
|
|
|
|
<dd><a href="http://www.ietf.org/rfc/rfc3987">Internationalized resource Identifiers
|
|
(IRIs)</a>, M. Duerst, M. Suignard. IETF, January 2005. RFC3987 is Available at <a href=
|
|
"http://www.ietf.org/rfc/rfc3987">http://www.ietf.org/rfc/rfc3987</a></dd>
|
|
|
|
<dt><dfn id="zip">Zip</dfn></dt>
|
|
|
|
<dd><a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">.ZIP File Format
|
|
Specification</a>. PKWare Inc., September 2007. Available at <a href=
|
|
"http://www.pkware.com/documents/casestudies/APPNOTE.TXT">http://www.pkware.com/documents/casestudies/APPNOTE.TXT</a></dd>
|
|
</dl>
|
|
|
|
<h3 class="no-num" id="related">Related Sources</h3>
|
|
|
|
<dl class="references">
|
|
<dt> </dt>
|
|
|
|
<dt><dfn id="light">Light Web Applications</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/People/Bos/webapps.html">Setting the scope for
|
|
light-weight Web-based applications</a>. B. Bos. Work in Progress. 26 Feb 2004. Available
|
|
at <a href=
|
|
"http://www.w3.org/People/Bos/Webapps.html">http://www.w3.org/People/Bos/Webapps.html</a></dd>
|
|
|
|
<dt><dfn id="xml-packaging">XML Packaging</dfn></dt>
|
|
|
|
<dd><a href="http://www.w3.org/XML/2000/07/xml-packaging-charter.html"><abbr title=
|
|
"Extensible Markup Language">XML</abbr> Packaging Working Group Charter</a>, J. Nava.
|
|
W3C. Available at <a href=
|
|
"http://www.w3.org/XML/2000/07/xml-packaging-charter.html">http://www.w3.org/XML/2000/07/xml-packaging-charter.html</a></dd>
|
|
|
|
<dt><dfn id="semantic">Semantic Webapps</dfn></dt>
|
|
|
|
<dd><a href=
|
|
"http://www.w3.org/2001/sw/Europe/talks/200409-svgopen/slide1-0.html">Semantic Webapps?
|
|
Lightweight RDF interfaces for SVG</a>. Sept 7, SVGOpen 2004, Japan. Available from:
|
|
<a href=
|
|
"http://www.w3.org/2001/sw/Europe/talks/200409-svgopen/slide1-0.html">http://www.w3.org/2001/sw/Europe/talks/200409-svgopen/slide1-0.html</a></dd>
|
|
</dl>
|
|
</body>
|
|
</html>
|