W3C home > Mailing lists > Public > public-webapps@w3.org > April to June 2009

Re: Widgets PAG seeks feedback on Widget Updates spec

From: Marcos Caceres <marcosc@opera.com>
Date: Tue, 30 Jun 2009 11:24:30 +0200
Message-ID: <b21a10670906300224s6085693lacaf7885b7c48d28@mail.gmail.com>
To: Robin Berjon <robin@berjon.com>
Cc: Arthur Barstow <art.barstow@nokia.com>, public-webapps <public-webapps@w3.org>, Rigo Wenning <rigo@w3.org>
On Mon, Jun 29, 2009 at 10:46 PM, Robin Berjon<robin@berjon.com> wrote:
> Hi,
> sorry, I hadn't seen that this was also posted publicly.
> On Jun 29, 2009, at 20:23 , Arthur Barstow wrote:
>>> The current Widgets-update Specification
>>> http://dev.w3.org/2006/waf/widgets-updates/
>>> contains in 12.3 a description on how a widget could update
>>> itself by a javascript calling the widget.update() method
>>> I wanted to know how important this feature is to the group
>>> and how likely it will be that it will find widespread use.
>>> The goal is to assess whether it is worthwhile to circumvent
>>> the patent also for this self-update feature, which will
>>> be a little bit harder than the circumvention for the rest
>>> of the Specification.
> My personal and non-legal opinion on this topic is that that feature simply
> does not exist.
> It is mentioned in an example which by definition is not normative (section
> 1 Conformance further notes "Everything in this specification is normative
> except for diagrams, examples, notes and sections marked as informative" and
> the section itself starts with "This section is informative.") It is not
> defined by Widget Updates and it is not defined by Widget APIs and Events.
> Furthermore my understanding is that this is the only part of the
> specification that could possibly infringe Apple's patent, which means that
> the specification in fact doesn't since that feature is not a part of it (or
> any other).
> We can more than very easily drop the example, and in fact the entire
> section since it is entirely incorrect.

The purpose of widget.update() is/was _not_ to  "update" the widget in
any meaningful way:

>From the spec "...an author can request that a widget asynchronously
check if a widget has been updated [(i.e., that a new version of the
widget package is available online)] via the widget.update() method,
defined in the Widgets-API specification. This strategy also relies on
the author having declared a update element in the widget
configuration document, as it makes use of the URI to potentially
retrieve an UDD and relay whether an update is available back to the
instantiated Widget. **Actually performing the update is left to the
discretion of the widget user agent.**"

In other words, it was/is a means to for a widget to ask the Widget
User Agent if an update is available from the remote location
addressed by the update element's href attribute (so, really it should
have been called "checkForUpdate()" or "updateInfo = new
UpdateChecker()", which the example begins to elude to). As it says in
the spec, "_actually performing the update is left to the discretion
of the widget user agent._"

So, to try to be crystal clear, here is how I thought this would work
wrt widget.update() when I created this thing (and more or less what
is eluded to in the spec):

1. Widget is running.
2. At some point in time, widget calls
widget.update(callBackFunction). (Note that this is just one of the
three strategies for _checking for the availability of an update_ (no
actual "updating" is performed) - other two strategies are handled
exclusively by the widget user agent, see spec).
3. Iff an <update> element is declared in the widget's config doc, and
has a valid href attribute, the Widget User Agent MAY check for
changes in the update description document (using http responses AND
checking the content of the UDD for changes).
4. If an update is available invoke callBackFunction with an object
describing the update.
5. If no update is available, invoke callBackFunction with an object
describing that no update is available.
6. Author notifies, via some modality (e.g., a sound, an alert, or
some visual means left up to the author), that an update is or is not
available for the widget.
7. The end user quits the widget.
8. The end user requests from the Widget User Agent to update the
widget (if update is available).
9. The widget user agent downloads the updated package from the
location identified by the  description document.
10. The widget user agent checks authenticity of package. If
everything is ok, then overrides the existing widget, but maintains
preference data. User agent MAY notify the end user that the widget
has been updated.
11. End-User restarts the widget.

So, I don't what would be achieved by removing widget.update() as it
doesn't actually do any "updating". If anything, we need to redefine
widget.update() to make it more useful and powerful.

Kind regards,

Marcos Caceres
Received on Tuesday, 30 June 2009 09:25:39 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:12:54 UTC