[widgets] Widgets URI scheme

Dear TAG,
The WAF working group is seeking advice on the creation of a Widget
URI scheme. The proposal is to introduce a URI scheme that is used
internally by widgets at runtime. Amongst other things, the primary
purpose is to stop implementations from having to use file:// or some
arbitrary URI scheme for addressing resources inside a widget package.
For the benefit of those who have not read the widget spec [1], a
widget resource is essentially a Zip file. Authors, obviously, store
their resources (images, HTML files, etc) inside the Zip file and then
address those resources using either relative or absolute paths (eg
"/images/bg.gif", etc).

At runtime, a user agent resolves the paths to resources inside the
widget package using the widget URI scheme.

This is our strawman proposal:

widget-URI      = "widget:" "//" UUID "/" zip-rel-path
zip-rel-path     = [ *localized-folder ] [ *folder ] [ filename ] /
                   [localized-folder] [ *folder] / [ folder ]
localized-folder = language-tag delimiter
folder           = filename delimiter
delimiter        = U+002F
filename         = 1*254( *basename [file-extension] )
basename         = allowed-chars
file-extension   = "." 1*allowed-chars
allowed-chars    = cp437 / utf8-range
utf8-chars       = ascii-range / U+0080 and beyond
cp437-chars      = ascii-range / x80-FF;
ascii-chars      = ALPHA / DIGIT / SP / "$" / "%" / "'" / "-" / "_" / "@"
                    / "~" / "`" / "!" / "(" / ")" / "^" / "#" / "&" / "+"
                    / "," / "." / "=" / "[" / "]"

Language-tag is defined in RFC4646 (BCP47). UUID (Universally Unique
IDentifier) is defined in rfc4122. The intention of using UUIDs (or
some random number) is to identify the current running instance of a
widget when multiple instances are running simultaneously. Authors
would not be able to address other widgets via this scheme (in fact,
there should be no reason at all for authors to use this scheme).

Within WAF, concerns have been raised about using UUIDs as the
identifier and arguments have been made that UUID should be replaced
by some random number generated internally by a widget engine (ie.
leave the choice of random number sequence as an implementation
detail. Eg hashing the name of the widget and time of download).
However, not all members are comfortable with leaving the generation
of random number sequence to implementations as it could introduce

It has also been proposed that, instead of using "widget://", we use
"zip://" to create a more generic addressing mechanism for Zip files

Any thoughts, comments, or guidance would be appreciated.

Kind regards,

[1] http://dev.w3.org/2006/waf/widgets/
Marcos Caceres

Received on Friday, 23 May 2008 05:58:09 UTC