The Open Web apps project architecture consists of the following elements:
- Web-server-based installation
- Web runtime
- Integrated supporting services
Apps can be installed from the server that hosts them ("self-hosting") or from a store. Mozilla is planning to launch a marketplace for apps early in 2012. The Developer Preview site provides an early view of the marketplace, so that app developers can experiment with submitting, purchasing, and installing apps. Other third-party app stores are also possible in this architecture. Apps can be free or paid; stores can support (and the marketplace provided by Mozilla will support) validation of purchases to ensure that apps are run only by users who purchased them.
The Developer Preview (and eventual marketplace) site supports these activities:
- Developers can submit HTML5-based apps by giving the location of a manifest file.
- Developers can set a price for apps (limited to $0.01 in the Developer Preview).
- Users can install apps, which are linked to their account by a digital receipt. User identity is provided through BrowserID.
- Apps can, at run time, validate the user's receipt. This mechanism supports returns and limited-time purchases.
While apps can run in any modern browser, many users expect a "native" experience, even for Web-based apps. A Web runtime (WebRT) is an app-centric user agent (in contrast to browsing-centric user agents like Firefox).
- Installs a launch icon in the native operating system.
- Can verify and then launch an app from the native operating system in a frameless window.
- Shows the app in the native environment as a typical running application (so that application switching and monitoring work as expected).
- Integrates with device capabilities. Mozilla's early implementation for Android uses PhoneGap, while the WebAPI project is progressing towards supporting these APIs directly in Gecko.
- Provides a seamless launch experience when the user is already signed in with BrowserID (through Firefox or another app). When an app is launched, it can check that its receipt is valid, via the user's BrowserID identity; if the user is already logged in with BrowserID, the app launches immediately.
Mozilla provides WebRTs for Windows, Mac, and Android. The WebRT for Android is a native application (Mozilla Labs App Runtime for Android) that provides access to the (Developer Preview) marketplace run by Mozilla, and also installs and launches apps. For Windows and Mac, a WebRT is available as a Firefox extension (Mozilla Labs App Runtime for Firefox). For other browsers, Mozilla provides an HTML5-based WebRT, available at http://myapps.mozillalabs.com/jsapi/include.js.
Integrated supporting services
Mozilla provides services that work together to support the apps ecosystem.
The apps architecture integrates BrowserID in multiple ways:
- Developers log in to the Developer Preview site (and users will log in to the marketplace site) using BrowserID.
- Receipts for purchases from the Developer Preview site (and marketplace) are tied to the purchaser's BrowserID identity.
- Apps that implement BrowserID support can instantly sign in users.
Mozilla is implementing a cloud-based app synchronization service. This service can store all of the purchase receipts linked to a given BrowserID identity (including from non-Mozilla stores that implement BrowserID). It can also synchronize those receipts to all of a user's devices, allowing apps purchased on one device to be used on other devices without repurchasing.