General comments:
Somewhere, perhaps in section 4.2, there should something about how resources (media etc) need to be compatible with the target device types, and that resource dependencies (screen, input device, network, processing, etc.) need to be spelled out. Widgets should be able to express these dependencies in a semantically useful way through a standardized schema and attribute ontologies/vocabularies such as W3C has been working on, e.g. the MWI DDWG’s DDR Core Vocabulary, DDR Simple API, and the ongoing work of the UWA’s Delivery Context Ontology. The specific text below related to expression of user agent characteristics (via the User Agent, Accept, and Profile headers in HTTP requests) is important in the meantime as a standardized way to at least disclose web application (and host device) capabilities, but longer term a way of expressing dependencies is important also.
Re R16 Visual Rendering Dimensions: the text states that there must be a way of declaring initial dimensions in pixels, which is potentially at odds with the limited canvas available on many mobile devices. Resource/capability expression as described above would at least ensure the dimensions were defined in a standardized way.
Other that described in “R28. Network State Change Events”, is there something specific that can be said re requirements supporting widgets that are intermittently connected?
Suggestions for specific text:
1) As design goals, a new section 3.1 can specifically introduce the mobile web best practices that W3C has developed / is developing. Here is some proposed text:
Some typical use cases for widgets are similar to use cases for mobile Web browsing, and will benefit from consideration of objectives and constraints similar to the mobile environment, e.g. usability, interoperability, and resource efficiency. In particular, widgets that are used in mobile devices should behave well as mobile web applications, i.e. as web applications running in mobile devices. For widgets in mobile devices or similar contexts, widget specifications should take into consideration the W3C recommendations in the Mobile Web Best Practices 1.0 and Mobile Web Application Best Practices, and where possible provide enabling capabilities so that widgets can more consistently comply with the recommendations.
2) Add the references:
MWBP
Mobile Web Best Practices 1.0.
J. Rabin, C. McCathieNevile, W3C Recommendation, July
2008. Available at http://www.w3.org/TR/mobile-bp/
MWABP
Mobile Web
Application Best Practices. B. Sullivan. A. Connors, W3C Working
Draft (Recommendation), July 2008. Available at http://www.w3.org/TR/mwabp/
3) Similar to "R21. Security Declarations", the following requirement should be added:
R21. Resource Declarations
A conforming specification must specify a means for declaring that the instantiated widget will have an impact on sensitive device or network resources, which may impact device performance or the user experience.
Motivation:
Security, current development practice or industry best-practices.
Rationale:
To declare the resource requirements of the widget, allowing the widget user agent to respond accordingly by adjusting its resource policies and warning the end-user. Example of resource sensitive services that could require notification are automated operation involving network access or screen display, which can impact overall service cost and device battery life; or persistent storage requirements, which can affect device performance and reliability of the environment for other applications.
3) Re "R36. Open Default System Web Browser", a proposed modification (in red/underline below):
A conforming specification SHOULD specify a means that allows authors to open URLs in a browsing contexts outside the widget engine.
Motivation:
Current development practice or industry best-practices.
Rationale:
To allow author to open a URL in the default system web
browser. For example, in a news aggregator widget, to allow the end user to
navigate to the source of a particular news item. Alternatively,
if the widget has ability to directly present web content, a specific resource
may exceed its capabilities, thus the user can be offered the option of opening
the resource in the default system web browser, which may have greater
capabilities.
3) In 4.5 User Agents, add the requirements:
Rxx. User-Agent Header
A conforming specification must specify that the widget must identify itself in HTTP requests through the user-agent header, either as the complete header or as an extension to the default user-agent header provided by the runtime environment.
Motivation:
Current development practice or industry best-practices, interoperability.
Rationale:
To provide the ability for web servers to determine if it is possible to serve the widget, or to adapt to the capabilities or special requirements of the widget. For example, a widget may attempt to access a service which is not compatible with the widget, and rather than provide a possibly incorrect response (which could cause further issues with the widget), the web server can provide a specific error response noting the incompatibility.
Rxx. User-Agent Profile Header
A conforming specification must specify that the widget should identify its capabilities in HTTP requests through the Profile header as described by [CCPPexchange] (http://www.w3.org/TR/NOTE-CCPPexchange).
Motivation:
Current development practice or industry best-practices, interoperability.
Rationale:
To provide the ability for web servers to determine if it is possible to serve the widget, or to adapt to the capabilities or special requirements of the widget, using semantic methods based upon detailed capabilities information provided by the widget.
Rxx. Accept Header
A conforming specification must specify that if a Profile header is not included in HTTP requests, the widget must include all supported MIME types for widget resources in the Accept header.
Motivation:
Current development practice or industry best-practices, interoperability.
Rationale:
To provide the ability for web servers to determine if it is possible to serve the widget, or to adapt to the capabilities or special requirements of the widget, using semantic methods based upon detailed capabilities information provided by the widget.
Rxx. Default Use of Runtime Environment Configured Proxy
A conforming specification must specify that by default, widget HTTP requests must be made through the proxy server (if any) configured for use in HTTP requests issued through the runtime environment or host device.
Motivation:
Security, current development practice or industry best-practices, Web and offline distribution, interoperability.
Rationale:
To ensure that widgets can be served in environments for which an HTTP proxy is required to be used, or be given value-added services available only through the HTTP proxy. For example, the runtime environment may be pre-configured to offer proxy services for all HTTP clients. Unless the widget has special requirements for use of a different proxy, the default proxy configuration should be used.