Difference between revisions of "Standards for Web Applications on Mobile"

From W3C Wiki
Jump to: navigation, search
(added web intent addendum for local services)
(added crypto api)
Line 223: Line 223:
 
<p>On top of this file-based access, the <cite><strong>[http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html Indexed Database API]</strong></cite> (IndexedDB) defines a database of values and hierarchical objects that integrates naturally with JavaScript, and can be queried and updated very efficiently. Note that the work around a client-side SQL-based database, which had been started in 2009, has been abandoned in favor of this new system.</p>
 
<p>On top of this file-based access, the <cite><strong>[http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html Indexed Database API]</strong></cite> (IndexedDB) defines a database of values and hierarchical objects that integrates naturally with JavaScript, and can be queried and updated very efficiently. Note that the work around a client-side SQL-based database, which had been started in 2009, has been abandoned in favor of this new system.</p>
 
<p>As more and more data need to be stored by the browser (e.g. for offline usage), it becomes critical for developers to get reliable storage space, which the proposed <strong>[http://dvcs.w3.org/hg/quota/raw-file/tip/Overview.html Quota Mangement API]</strong> will offer to Web applications.</p>
 
<p>As more and more data need to be stored by the browser (e.g. for offline usage), it becomes critical for developers to get reliable storage space, which the proposed <strong>[http://dvcs.w3.org/hg/quota/raw-file/tip/Overview.html Quota Mangement API]</strong> will offer to Web applications.</p>
 +
<p>Likewise, as some of this data need to be encrypted, the emerging [http://www.w3.org/TR/WebCryptoAPI/ Web Cryptography API] from the [http://www.w3.org/TR/WebCryptoAPI/ Web Cryptography Working Group] exposes strong cryptography primitives to Web applications.</p>
  
 
<table class="simple" border="1">
 
<table class="simple" border="1">
Line 233: Line 234:
 
<tr><th rowspan="2">Database query/update</th><td><cite>[http://www.w3.org/TR/IndexedDB/ Indexed Database API]</cite></td><td  class="medium maturity">Last Call Working Draft</td><td class="medium">Stabilizing</td><td>[http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html Regularly updated]</td><td class="medium indexeddb">Growing</td><td class="low">[http://w3c-test.org/webapps/IndexedDB/tests/ Started]</td></tr>
 
<tr><th rowspan="2">Database query/update</th><td><cite>[http://www.w3.org/TR/IndexedDB/ Indexed Database API]</cite></td><td  class="medium maturity">Last Call Working Draft</td><td class="medium">Stabilizing</td><td>[http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html Regularly updated]</td><td class="medium indexeddb">Growing</td><td class="low">[http://w3c-test.org/webapps/IndexedDB/tests/ Started]</td></tr>
 
<tr><td>[http://www.w3.org/TR/webdatabase/ Web SQL API]</td><td class="low maturity">Working Group Note</td><td class="low">Abandoned</td><td>N/A</td><td class="medium websql">Somewhat deployed, but won’t be further deployed</td><td class="low">N/A</td></tr>
 
<tr><td>[http://www.w3.org/TR/webdatabase/ Web SQL API]</td><td class="low maturity">Working Group Note</td><td class="low">Abandoned</td><td>N/A</td><td class="medium websql">Somewhat deployed, but won’t be further deployed</td><td class="low">N/A</td></tr>
<tr><th>Quota for Storage</th><td><cite>[http://www.w3.org/TR/quota-api/ Quota Management API]</cite></td><td class="low maturity">Working Draft</td><td class="low">Early work</td><td>[http://dvcs.w3.org/hg/quota/raw-file/tip/Overview.html Last updated June 2012]</td><td class="low">N/A</td><td class="low">N/A</td></tr>
+
<tr><th>Quota for Storage</th><td><cite>[http://www.w3.org/TR/quota-api/ Quota Management API]</cite></td><td class="low maturity">Working Draft</td><td class="low">Early work</td><td>[http://dvcs.w3.org/hg/quota/raw-file/tip/Overview.html Last updated June 2012]</td><td class="low">None</td><td class="low">None</td></tr>
 +
<tr><th>Encrypted storage</td><td><cite>[http://www.w3.org/TR/WebCryptoAPI/ Web Cryptography API]</cite></td><td class="low maturity">Working Draft</td><td class="low">Early work</td><td>[http://www.w3.org/2012/webcrypto/WebCryptoAPI/ Regularly updated]</td><td class="low">None</td><td class="low">None</td></tr>
 
</table>
 
</table>
  

Revision as of 16:56, 11 December 2012

Status

This is the live copy of a quarterly published document, through funding from the Webinos project, reflecting the current status of the Web technologies that are the most relevant on mobile devices (latest release). Contributions to this document are very welcome.

TODO:

Intro

Web technologies have become powerful enough that they are used to build full-featured applications; this has been true for many years in the desktop and laptop computer realm, but is increasingly so on mobile devices as well.

This document summarizes the various technologies developed in W3C that increase the capabilities of Web applications, and how they apply more specifically to the mobile context.

  1. #Graphics
  2. #Multimedia
  3. #Device Adaptation
  4. #Forms
  5. #User interactions
  6. #Data storage
  7. #Personal Information Management
  8. #Sensors and hardware integration
  9. #Network
  10. #Communication_and_Discovery
  11. #Packaging
  12. #Performance & Optimization

The data in this report should be used with caution. Feedback on every aspect of this document should be sent to the author (dom@w3.org) and will serve as input for the next iteration of the document.

The features that these technologies add to the Web platform are organized under the following categories: #Graphics, #Multimedia, #Device_Adaptation, #Forms, #User_interactions, #Data_storage, #Personal_Information_Management, #Sensors_and_hardware_integration, #Network, #Communication_and_Discovery, #Packaging, #Performance_.26_Optimization.

In each category, a table summarizes for each feature:

  • which W3C specification defines the feature,
  • which W3C group is responsible of the said specification,
  • the stage of the specification in the W3C Recommendation track (see below),
  • the estimated stability of the document, i.e. how widely the document is expected to change, as estimated by the author of this report, with three levels: low (the document is mostly stable), medium (some parts are stable, others are expected to change significantly), high (the document is expected to evolve significantly),
  • some qualitative indication on availability of implementations on mobile devices, based on data collected primarily from Can I Use… and mobile HTML5, completed with data from Mozilla developer network, QuirksMode, as well as the author’s understanding of the mobile devices market (see also the code used to generate the support icons)
  • a link to the latest editors draft of the document,
  • a link to the test suite for the said feature.


As a reminder, W3C creates Web standards by progressing documents through its Recommendation track, with the following stages:

  • “Editors drafts” represent the current view of the editors of the specification but have no standing in terms of standardization.
  • “Working Drafts” are early milestones of the Working Group progress.
  • “Last Call Working Drafts” signal that the Working Group has determined that the specification fulfills its requirements and all the known issues have been resolved, and thus requests feedback from the larger community.
  • “Candidate Recommendations” trigger a call for implementations where implementers are invited to implement the specification and send feedback; Working Groups are expected to show the specification gets implemented by running test suites they have developed.
  • “Proposed Recommendations” manifests that the group has gathered sufficient implementation experience, and triggers the final review by W3C Members
  • “W3C Recommendations” are stable and completed Web standards; these documents only get updated rarely, through the “Edited Recommendation” process, as a results from errata collected by Working Groups.

Prior to starting standardization, a Working Group needs to be chartered, based on input from W3C Members, often through the organization of a workshop, or after the reception of a W3C Member Submission.

W3C has set up Community Groups, a mechanism that allows anyone to do experimental work within the W3C infrastructure, under IPR rules that are compatible to transition the work to the W3C standardization process.

Graphics

SVG, Scalable Vector Graphics, provides an XML-based markup language to describe two-dimensions vector graphics. Since these graphics are described as a set of geometric shapes, they can be zoomed at the user request, which makes them well-suited to create graphics on mobile devices where screen space is limited. They can also be easily animated, enabling the creation of very advanced and slick user interfaces.

The integration of SVG in HTML5 opens up new possibilities, for instance applying advanced graphic filters (through SVG filters) to multimedia content, including videos. SVG 2.0 is set to facilitate that integration and complete the set of features in SVG.

In complement to the declarative approach provided by SVG, the <canvas> element added in HTML5 enables a 2D programmatic API that is well-suited for processing graphics in a less memory intensive way. That API not only allows rendering graphics, but can also be used to do image processing and analysis.

Both SVG and HTML can be styled using CSS (Cascading Style Sheets); in particular, CSS3 (the third level of the specification) is built as a collection of specifications set to offer a large number of new features that make it simple to create graphical effects, such as rounded corners, complex background images, shadow effects (CSS Backgrounds and Borders), rotated content (CSS 2D Transforms), animations (CSS Animations, CSS Transitions), and even 3D effects (CSS 3D Transforms).

Animations can be resource intensive — the possibility offered by the Timing control for script-based animations API to manage the rate of updates to animations can help keep them under control.

Fonts play also an important role in building appealing graphical interfaces, but mobile devices are in general distributed with only a limited set of fonts. WOFF (Web Open Font Format) addresses that limitation by making it easy to use fonts that are automatically downloaded through style sheets, while keeping the size of the downloaded fonts limited to what is actually needed to render the interface.

Another important aspect in graphics-intensive applications (e.g. games) is the possibility to use the entire screen to display the said graphics; the Fullscreen API lets a Web application requests and detects full screen display.

Likewise, in these scenarios, it is often useful to be able to lock the orientation of the screen; the Screen Orientation API allows not only to detect orientation change, but also to lock the orientation in a specific state.

NB: work on defining a 3D graphic API called WebGL has started outside of W3C, as part of the Khronos Group; this API has been built to be compatible with OpenGL ES, i.e. for embedded systems, and is intended to work on mobile devices.


FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
2D Vector GraphicsSVG Tiny 1.2SVG Working GroupRecommendationFinishedNew version of SVG (SVG 2.0) in preparationWidely deployedHigh coverage
SVG 2Working DraftEarly drafteditors draftN/AN/A
2D Programmatic APIHTML Canvas 2D ContextHTML Working GroupWorking DraftMostly stableUpdated regularlyWidely deployedGood coverage
Rounded CornersCSS Backgrounds and BordersCSS Working GroupCandidate RecommendationMostly finishedUpdated regularlyDeployed as an extension in many mobile browsersNone
Complex background imagesGrowing deployment
Box shadow effectsWidely deployed
2D EffectsCSS TransformsWorking DraftMostly stableLatest update Aug 2012Well deployedGood coverage
3D EffectsStabilizingGrowing deployment
AnimationsCSS Animations Module Level 3Working DraftEarly draftUpdated regularlyGrowing deploymentNone
CSS Transitions Module Level 3Working DraftEarly draftLatest update July 2012Well deployedNone
Timing control for script-based animations APIWeb Performance Working GroupLast Call Working DraftStabilizingRegularly updatedVery limitedStarted
Downloadable fontsWOFF File Format 1.0WebFonts Working GroupProposed RecommendationMostly finishedLatest update Oct 2012Good deploymentGood coverage
Fullscreen displayFullscreen APIWeb Apps and CSS Working GroupsWorking DraftEarly draftRegularly updatedVery limitedNone
Orientation LockThe Screen Orientation APIWeb Apps Working GroupsWorking DraftEarly draftRegularly updatedVery limitedNone

Multimedia

HTML5 adds two tags that dramatically improve the integration of multimedia content on the Web: the <video> and <audio> tags. Respectively, these tags allow embedding video and audio content, and make it possible for Web developers to interact much more freely with that content than they would through plug-ins. They make multimedia content first-class citizens of the Web, the same way images have been for the past 15 years.

To cater for the needs of some content providers, a proposal to enable playback of protected content, Encrypted Media Extensions is an API that is under consideration in the HTML Working Group.

The Pick Media Intent offers a Web-intent based approach to search and retrieve locally or remotely stored media content, while the Networked Service Discovery and Messaging API opens the door for integrating DLNA-hosted content into Web applications.

While the new HTML5 tags allow to play multimedia content, the HTML Media Capture defines a markup-based mechanism to access captured multimedia content using attached camera and microphones, a very common feature on mobile devices. The Web Real-Time Communications Working Group and the Device APIs Working Group are building together an API (getUserMedia) to directly manipulate streams from camera and microphones.

Beyond recording, two additional APIs add multimedia manipulation capabilities to the Web platform. We have already mentioned the Canvas 2D Context API: it enables modifying images, which in turn opens up the possibility of video editing.

In a similar vein, the Audio Working Group is working on an API that that makes it possible to modify audio content, as well as analyze, modify and synthesize sounds, the Web Audio API, in favor of which the competing proposal called MediaStream Processing API has been abandoned.

The combination of all these features marks the starting point of the Web as a comprehensive platform for multimedia, both for consuming and producing. The rising interest around bridging the Web and TV worlds (manifested through the W3C Web and TV Interest Group) should strengthen that trend in the coming months. Mobile devices are expected to take a growing role in many users TV experience, providing a “second screen” experience, where users can find more information on or interact with a TV program they're watching via their mobile devices.

FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Video playbackHTML5 video elementHTML Working GroupWorking DraftStabilizingUpdated regularlyGood deploymentJust started
Audio playbackHTML5 audio elementLast Call Working DraftGood deploymentBarely started
Protected content playbackEncrypted Media ExtensionsN/AEarly proposalLatest update Aug 2012NoneNone
Multimedia Gallery accessPick Media IntentDevice APIs Working GroupWorking DraftEarly Web-intents based approachLast updated Aug 2012N/A
Networked Service Discovery and MessagingWorking DraftEarly draftLast updated Aug 2012NoneNone
Capturing audio/videoHTML Media CaptureDevice APIs Working GroupLast Call Working DraftStabilizingLatest update July 2012Limited, but growingNone
Media Capture and StreamsJoint work between Web Real-Time Communications Working Group and Device APIs Working GroupWorking DraftStabilizing, but still subject to large changeslast updated Aug 2012A few experimental onesStarted
Image & Video analysis, modificationHTML Canvas 2D ContextHTML Working GroupWorking DraftMostly stableUpdated regularlyWidely deployedGood coverage
Audio analysis, modificationWeb Audio APIAudio Working GroupWorking DraftEarly workRegularly updatedA coupleNone
MediaStream Processing APIAbandonedAbandonedN/ANoneNone

Device Adaptation

Mobile devices not only differ widely from traditional computers, but they also have a lot of variations among themselves, in term of screen size, resolution, type of keyboard, media recording capabilities, etc.

The Device Description Repository API is a unified server-side API that allows Web developers to retrieve data on the devices that are accessing their pages on a variety of device information database.

The Media Capture task force is currently evaluating if and how to expose capabilities from camera and microphones to make it possible to take advantage of the large variety of media capturing devices provided on mobile phones.

CSS Media Queries offer a mechanism that allows adapting the layout and behavior of a Web page based on some of the characteristics of the device, including the screen resolution. CSS Device Adaptation defines a set of CSS directives to define the size on which this layout should be based, relatively to the size of the underlying device — specifying what has been implemented using the <meta name="viewport"> element so far.

The Responsive Images Community Group has been exploring proposals to make it possible to load and display images in HTML that are best adapted to the resolution of the device, and is now looking into incorporating a <picture> element in HTML5.

Complementarily, the WHATWG is discussing a proposal for a srcset attribute that would let Web developers define the various existing resolutions of an image, letting the browser pick the best choice for the resolution of the screen.

FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Device informationDevice Description Repository Simple API (server-side)Device Description Working Group (now closed)RecommendationfinishedN/ALimitedGood Coverage
Media Capture Capabilities APIWebRTC and Device APIs Working GroupN/ANot startedN/AN/AN/A
CSS-based adaptationMedia QueriesCSS Working GroupRecommendationFinishedLatest update Apr 2012Widely deployedGood coverage
CSS Device AdaptationWorking DraftEarly draftLatest update Apr 2012Very limitedN/A
Adaptive imagespicture elementHTML Working GroupN/AProposalLast updated Aug 2012NoneN/A
srcset attributeWHATWGN/AProposalRegularly updatedNoneNone

Forms

The ability to build rich forms with HTML is the basis for user input in most Web-based applications. Due to their limited keyboards, text input on mobile devices remains a difficult task for most users; HTML5 address parts of this problem by offering new type of form controls that optimize the way users will enter data:

  • date and time entries can take advantage of a number of dedicated form controls (e.g. <input type="date">) where the user can use a native calendar control;
  • the <input type="email">, <input type="tel"> and <input type="url"> can be used to optimize the ways user enter these often-difficult to type data, e.g. through dedicated virtual keyboards, or by accessing on-device records for these data (from the address book, bookmarks, etc.);
  • the pattern attribute allows both to guide user input as well as to avoid server-side validation (which requires a network round-trip) or JavaScript-based validation (which takes up more resources);
  • the placeholder attribute allows to guide user input by inserting hints as to what type of content is expected in a text-entry control;
  • the new <datalist> element allows creating free-text input controls coming with pre-defined values the user can select from.
FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Date and time entriesHTML5 Date and Time state of input elementHTML Working GroupWorking DraftStabilizingUpdated regularlyLimitedJust started
Customized text entries (tel, email, url)HTML5 telephone, email and URL state of input elementWorking DraftStabilizingUpdated regularlyLimited, but growingNone
Input patternHTML5 pattern attributeWorking DraftStabilizingUpdated regularlyVery limitedJust started
Input hintHTML5 placeholder attributeWorking DraftStabilizingUpdated regularlyWell deployedNone
Pre-defined values for text entriesHTML5 datalist elementWorking DraftStabilizingUpdated regularlyVery limitedNone

User interactions

An increasing share of mobile devices relies on touch-based interactions. While the traditional interactions recognized in the Web platform (keyboard, mouse input) can still be applied in this context, a more specific handling of touch-based input is a critical aspect of creating well-adapted user experiences, which Touch Events in the DOM (Document Object Model) enable. The work on that specification is now nearly finished, as the patents that had been disclosed have been determined to not apply. Meanwhile, the newly chartered Pointer Events Working Group has started work on a new approach to handle user input, Pointer Events, that allows to handle mouse, touch and pen events under a single model. This new approach is expected to replace the currently more widely deployed Touch Events.

Conversely, many mobile devices use haptic feedback (such as vibration) to create new form of interactions (e.g. in games); work on a vibration API in the Device APIs Working Group is making good progress.

But as the Web reaches new devices, and as devices gain new user interactions mechanisms, it also becomes important to allow Web developers to react to a more abstract set of user interactions: instead of having to work in terms of “click”, “key press”, or “touch event”, being able to react to an “undo” command, or a “next page” command independently of how the user instructed it to the device will prove beneficial to the development of device-independent Web applications. Work on abstract DOM events that would address this need is planned as part of a joint task force between the Web Events Working Group and the Indie UI Working Group.

Mobile devices follow their users everywhere, and many mobile users rely on them to remind them or notify them of events, such as messages: the Web Notifications specification proposes to add that feature to the Web environment.

Mobile devices, and mobile phones in particular, are also in many cases well-suited to be used through voice-interactions; the Speech API Community Group is exploring the opportunity of starting standardization work around a JavaScript API that would make it possible for users to interact with a Web page through spoken commands.

The hardware constraints of mobile devices, and their different usage context can make mobile users experience similar barriers to people with disabilities. These similarities in barriers mean that similar solutions can be used to cater for them, making a Web site accessible both for people with disabilities and mobile devices a natural goal.

How Web Content Accessibility Guidelines (WCAG) and User Agent Accessibility Guidelines (UAAG) provide guidance on mobile accessibility — that is, making websites and applications more accessible to people with disabilities when they are using mobile phones and a broad range of other devices — is discussed in Mobile Accessibility.

WAI-ARIA provides semantic information on widgets, structures and behaviors hooks to make Web applications more accessible, including on mobile devices.


FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Touch-based interactionsTouch Events SpecificationWeb Events Working GroupCandidate RecommendationMostly finishedUpdated regularlyLargely deployedJust started
Pointer EventsPointer Events Working GroupWorking DraftEarly draftUpdated regularlyLimited deploymentNone
VibrationVibration APIDevice APICandidate RecommendationStableUpdated regularlyExperimental implementationsstarted
Intent-based eventsN/AIndie UI Working Group and Web Events Working GroupN/ANot startedNot startedNoneNone
NotificationWeb NotificationsWeb Notifications Working GroupWorking DraftEarly draftRegularly updatedA few experimental onesNone
Speech-based interactionsN/ASpeech API Community GroupN/AN/ARegularly updatedN/AN/A
Model-based user interfacesN/AModel-Based User Interfaces Working GroupN/AN/AModel-based UI Incubator Group reportN/AN/A
Accessibility Relationship between Mobile Web Best Practices (MWBP) and Web Content Accessibility Guidelines (WCAG) Mobile Web Best Practices Working Group & Education and Outreach Working Group Working Group Note Finished N/A N/A N/A
Accessible Rich Internet Applications (WAI-ARIA) 1.0 Protocols & Formats Working Group Candidate Recommendation Stable Latest update May 2012 Growing deployment None

Data storage

A critical component of many applications is the ability to save state, export content, as well as integrate data from other files and services on the system.

For simple data storage, the Web Storage specification offers two basic mechanisms, localStorage and sessionStorage, that can preserve data respectively indefinitely, or on a browser-session basis.

For richer interactions, the Web platform has a growing number of APIs to interact with a device filesystem: the File Reader API makes it possible to load the content of a file, the File Writer API allows saving or modifying a file, while the nascent FileSystems API give access to more general file operations, including directory management. Discussions have started on whether these two latter APIs would better be implemented on top of IndexedDB.

On top of this file-based access, the Indexed Database API (IndexedDB) defines a database of values and hierarchical objects that integrates naturally with JavaScript, and can be queried and updated very efficiently. Note that the work around a client-side SQL-based database, which had been started in 2009, has been abandoned in favor of this new system.

As more and more data need to be stored by the browser (e.g. for offline usage), it becomes critical for developers to get reliable storage space, which the proposed Quota Mangement API will offer to Web applications.

Likewise, as some of this data need to be encrypted, the emerging Web Cryptography API from the Web Cryptography Working Group exposes strong cryptography primitives to Web applications.

</table>

Personal Information Management

Applications can benefit from integrating with existing data records; on mobile devices, the address book and calendar are particularly useful source of information, which the Contacts API and the Calendar API bring access to.

The current JavaScript APIs are being replaced with an approach based on Web Intents. A purely programmatic approach is also part of the proposed new System Applications Working Group.

FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Simple data storageWeb StorageWeb Applications Working GroupCandidate RecommendationStableUpdated regularlyWell deployedWell started
File readingFile APIWorking DraftStabilizing toward LCRegular updatesGrowingNone
File writingFile API: WriterWorking DraftEarly draft (but starting to stabilize)Latest update Mar 2012NoneNone
Filesystems operationsFile API: Directories and SystemWorking DraftEarly draftLatest update Mar 2012NoneNone
Database query/updateIndexed Database APILast Call Working DraftStabilizingRegularly updatedGrowingStarted
Web SQL APIWorking Group NoteAbandonedN/ASomewhat deployed, but won’t be further deployedN/A
Quota for StorageQuota Management APIWorking DraftEarly workLast updated June 2012NoneNone
Encrypted storage</td><td>Web Cryptography API</td><td class="low maturity">Working Draft</td><td class="low">Early work</td><td>Regularly updated</td><td class="low">None</td><td class="low">None</td>
FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Address book dataPick Contacts IntentDevice APIs Working GroupWorking DraftEarly Web-intents based approach; a more complete API will be developed in the proposed new SysApps Working GroupLast updated Aug 2012NoneEarly draft based on previous API
Calendar dataCalendar APIWorking DraftWill likely change significantlyRegularly updatedNoneNone

Sensors and hardware integration

Mobile devices are packed with sensors, making them a great bridge between the real and virtual worlds: GPS, accelerometer, ambient light detector, microphone, camera, thermometer, etc.

To take full advantage of these sensors in mobile Web applications, Web developers need to be provided with hooks to interact with them.

The Geolocation API provides a common interface for locating the device, independently of the underlying technology (GPS, WIFI networks identification, triangulation in cellular networks, etc.) The proposed second version of that API which would have added the ability to retrieve a civic address matching the user’s current location, has been abandoned due to lack of demand.

Web applications can also now access orientation and acceleration data via the DeviceOrientation Event Specification.

The work on a generic Sensor API has been put on hold in favor to designing APIs for specific sensors, such as the Proximity Events API, the Ambient Light Events API or the proposed Ambient Humidity Events API.

As already mentioned in the section on #Multimedia, there is ongoing work on APIs to open up access to camera and microphone streams.

Discussions on enabling Web applications to use Near-Field Communications (NFC) mechanisms have led to a proposed charter for a dedicated Working Group, and would likely lead to the creation of a dedicated Working Group, currently under review by W3C Members.

A more global access to sensors and hardware (including USB and bluetooth) would be in scope for the proposed new System Applications Working Group, currently under review by W3C Members.


FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
GeolocationGeolocation APIGeolocation Working GroupProposed RecommendationMostly finishedRegularly updatedWidely deployedGood coverage
Geolocation API v2AbandonedAbandonedN/ANoneN/A
Motion sensorsDeviceOrientation Event SpecificationLast Call Working DraftStabilizingRegularly updatedGrowingStarted
Battery StatusBattery Status APIDevice APIs Working GroupCandidate RecommendationStableUpdated regularlyExperimental implementationsNone
Proximity sensorsProximity EventsLast Call Working DraftGetting stableRegularly updatedA couple of experimental onesStarted
Ambient Light sensorAmbient Light EventsWorking DraftEarly draftRegularly updatedNoneStarted
Humidity sensorAmbient Humidity EventsN/AUnofficial draftLast updated Aug 2012NoneN/A
Camera & Microphone streamsMedia Capture StreamsWeb Real-Time Communications Working Group and Device APIs Working GroupWorking DraftStabilizing, but still subject to large changesLatest update Aug 2012 A few experimental onesStarted

Network

Network connectivity represents a major asset for mobile devices: the Web is an immense store of content, as well as an almost endless source of processing power, overcoming two of the limitations of mobile devices.

The Web platform is growing a number of APIs that facilitate establishing network connectivity in different contexts.

XMLHttpRequest (the “X” in AJAX) is a widely deployed API to load content from Web servers using the HTTP and HTTPs protocol: the W3C specification (formerly known as XMLHttpRequest Level 2) completes the existing deployed API with the ability to make requests on servers in a different domain, programmatic feedback on the progress of the network operations, and more efficient handling of binary content. The work on documenting the currently deployed API (XMLHttpRequest Level 1) has been abandoned in favor of getting the new API developed more quickly.

By default, browsers do not allow to make request across different domains (or more specifically, across different origins, a combination of the protocol, domain and port) from a single Web page; this rule protects the user from having a Web site abusing their credentials and stealing their data on another Web site. Sites can opt-out of that rule by making use of the Cross-Origin Resource Sharing mechanism, opening up much wider cooperation across Web applications and services.

XMLHttpRequest is useful for client-initiated network requests, but mobile devices with their limited network capabilities and the cost that network requests induce on their battery (and sometimes on their users bill) can often make better use of server-initiated requests. The Server-Sent Events API allows triggerring DOM events based on push notifications (via HTTP and other protocols.)

Early work on a Push API would allow Web applications to receive server-sent messages whether or not the said Web app is active in a browser window.

The WebSocket API, built on top of the IETF WebSocket protocol, offers a bidirectional, more flexible, and less resource intensive network connectivity than XMLHttpRequest.

The work on Web Real-Time Communications will also provide direct peer-to-peer data connections between browsers with real-time characteristics, opening the way to collaborative multi-devices Web applications.

Of course, an important part of using network connectivity relies on being able to determine if such connectivity exists, and the type of network available. The HTML5 onLine DOM flag (and its associated change event, ononline) signals when network connectivity is available to the Web environment.

The network-information API addresses discovery of the network characteristics, allowing to determine for instance the rough bandwidth of the current connection.


FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
HTTP(s) network APIXMLHttpRequestWeb Applications Working GroupWorking DraftStill changing, but starting to stabilizeRegularly updatedVery broad for level 1 features, growing for level 2Coverage of XMLHTTPRequest "level 1"
Cross-domain requestsCross-Origin Resource SharingLast Call Working DraftStableLatest update May 2012Growing deploymentStarted
Server-pushed requests Server-Sent Event Candidate Recommendation Stable Regularly updated Growing None
Push API Working Draft Early draft Last updated Oct 2012 None N/A
Bidirectional connectionsThe WebSocket APICandidate RecommendationStableRegularly updatedGood deploymentStarted
P2P data connectionsWebRTC 1.0: Real-time Communication Between BrowsersWeb Real-Time Communications Working GroupWorking DraftEarly draftRegularly updatedNoneNone
on-line stateHTML5 onLine DOM stateHTML Working GroupWorking DraftMostly stableregularly updatedLimitedNone
Network characteristicsThe Network Information APIDevice APIs Working GroupWorking DraftEarly draftRegularly updatedVery limitedNone

Communication and Discovery

Beyond connection to on-line services, allowing communications between users, but also between devices and between applications is an important aspect of a good mobile development platform. To communicate with unknown devices or pre-existing services, a discovery component is critical.

The Messaging API completes the existing ability to create and send message through links (with sms:, mms: and mailto: URI schemes) with more control on adding attachments and the success of the message sending. At this time, this API is likely to be entirely replaced by an approach based on Web Intents.

The postMessage API of HTML5 Web Messaging allows for Web Applications to communicate between each other.

Work has started in a joint task force of the Device APIs and Web Apps Working Groups that open up possibilities of closer integration of Web applications, as well as of Web applications with native applications via a mechanism called Web Intents. Some of the initial use cases for Web Intents have proved hard to expose through the regular Web browser UI, and discussions on how to properly scope that technology are on-going.

The Networked Service Discovery and Messaging API offers to discover services on the local network (such as the ones offered via DLNA), enabling mobile Web applications to integrate seamlessly with these services. An alternative approach based on Web Intents is also under exploration.

The Web Real-Time Communications Working Group is the host of specifications for a wider set of communication opportunities:

  • Peer-to-peer connection across devices,
  • P2P Audio and video streams allowing for real-time communications between users.
FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Emails, SMS and MMS with generated attachmentsThe Messaging APIDevice APIs Working GroupWorking DraftCandidate for replacement by a Web Intents-based approachLatest update July 2011NoneNone
Inter-app communicationsHTML5 Web MessagingWeb Applications Working GroupCandidate RecommendationStableRegularly updatedWell deployedStarted
Inter-app triggersWeb IntentsDevice APIs Working Group and Web Apps Working GroupWorking DraftEarly draftregularly updatedExperimentalNone
Networked services discoveryWeb Intents Addendum - Local ServicesWorking DraftVery early draftLatest updated Oct 2012NoneNone
Networked Service Discovery and MessagingDevice APIs Working GroupWorking DraftEarly draftLast updated Aug 2012NoneNone
P2P connectionsWebRTC 1.0: Real-time Communication Between BrowsersWeb Real-Time Communications Working GroupWorking DraftEarly draftRegularly updatedNoneNone
P2P Video/Audio streams

Packaging

An important aspect of the user experience of applications is linked to how the user perceives the said application is available permanently (even when off-line, which is particularly important on mobile devices), as well as how it can be shared and distributed, typically through purchases via applications stores — this is adequately addressed by packaging the application.

The Web platform offers two complementary approaches to packaging Web applications:

  • HTML5’s ApplicationCache enables access to Web applications off-line through the definition of a manifest of files that the browser is expected to keep in its cache;
  • the W3C Widgets family of specifications define technologies for distributing Web applications as Zip files which include a configuration file (see Widget Packaging and Configuration); this configuration file enables the inclusion of additional features such as signature of applications , controlled access to advanced APIs, restricted network usage, etc. In addition to aiding in the development of client-side Web applications for mobile devices, W3C Widgets have been used as server side-applications, standalone applications, daemons, starting point for hybrid Web/native applications, and as a Browser extension format.

As part of its new charter, the Web Apps Working Group is considering to work on an evolution of the Widgets configuration file based on a JSON format, although the latest discussions on it have established a likely dependency with the proposed new System Applications Working Group.

FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Application CacheHTML5 Application CacheHTML Working GroupWorking DraftStill changing but stabilizingRegularly updatedWell deployedNone
WidgetsWidgets Packaging & ConfigurationWeb Applications Working GroupRecommendationFinishedLatest update Aug 20114 complete implementations; 1 impl 99%Full coverage
Digital Signatures for WidgetsProposed RecommendationFinishedLatest update Aug 20112 or more implementations pass each testFull coverage
Widget Access Request Policy (WARP)RecommendationFinishedLatest update Dec 20113 complete implementations; 1 impl 98%Full coverage
Packaged Web AppWeb Application Manifest Format and Management APIsN/AN/ALast updated June 2012N/AN/A

Performance & Optimization

Due to their limited CPU, and more importantly to their limited battery, mobile devices require a lot of attention in terms of performance.

The work started by the Web Performance Working Group on Navigation Timing, Resource Timing, and more recently Performance Timeline and User Timing, gives tools to Web developers for optimizing their Web applications.

The proposed work on Efficient Script Yielding offers the opportunity to Web developers to use more efficiently asynchronous programming.

The API to determine whether a Web page is being displayed (Page Visibility API) can also be used to adapt the usage of resources to the need of the Web application, for instance by reducing network activity when the page is minimized. Likewise, the Timing control for script-based animations API can help reduce the usage of resources needed for playing animations.

The battery API allows adjusting the use of resources to the current level of power available in the battery of a mobile device.

Beyond optimization of resources, the perceived reactivity of an application is also a critical aspect of the mobile user experience. The thread-like mechanism made possible via Web Workers allows keeping the user interface responsive by offloading the most resource-intensive operations into a background process.

The Mobile Web Application Best Practices provide general advice on how to build Web applications that work well on mobile devices, taking into account in particular the needs for optimization.


FeatureSpecificationWorking GroupMaturityStabilityLatest editors draftCurrent implementationsTest suite
Timing hooksNavigation TimingWeb Performance Working GroupProposed RecommendationMostly finishedRegularly updatedMedium coverage
Resource timingCandidate RecommendationStableRegularly updatedNoneNone
Performance TimelineCandidate RecommendationStabilizingRegularly updatedNoneNone
User timingCandidate RecommendationStableRegularly updatedNoneNone
Priority handlingEfficient Script YieldingN/AEarly draftRegularly updatedVery limitedNone
Page Visibility detectionPage visibility APICandidate RecommendationStableRegularly updatedVery limitedStarted
Animation optimizationTiming control for script-based animationsLast Call Working DraftStabilizingRegularly updatedVery limitedStarted
ThreadingWeb WorkersWeb Applications Working GroupCandidate RecommendationStableRegularly updatedGrowingStarted
Battery StatusBattery Status EventsDevice APIs Working GroupCandidate RecommendationStableUpdated regularlyVery limitedNone
Optimization Best PracticesMobile Web Application Best PracticesMobile Web Best Practices Working Group (now closed)RecommendationFinishedN/AN/AN/A