Apps/Overview: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Updated to reflect current wiki links, project status and names; removed webactivities which have not had much recent activity and running-in-Firefox which is not an active area of work)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Web Application Architecture =
Web applications are universal applications.  The run on any device.  They use standard technology that works on desktop PCs, smartphones, and tablets.  They can be installed on devices automatically when users authorize their devices, and are personalized so that users keep their preferences and data with them wherever they go.


== Universal Applications ==
== Mozilla-provided products to support Web Applications ==
=== The Gecko WebRT: The Best Runtime for Applications ===


Web Applications can run on any deviceThey use standard technology that works on desktop PCs, smartphones, and tabletsThey can be installed on devices automatically when users authorize their devices, and are personalized so that users keep their preferences and data with them wherever they go.
Mozilla will provide the best runtime for HTML5 applicationsIt will have the richest set of APIs, the best user experience of navigating and running applications, and the safest and easiest-to-use user controlsIt will communicate with the application cloud to keep the user's application choices always up-to-date.


== Personalized Application Collections ==
On desktop operating systems, applications will run as first-class applications, with their own icons, launcher, place in the taskbar/dock, and menusOn mobile operating systems, web applications will run full screen, with rich user interactions (touch, orientation, motion) and access to device APIsOn [[Boot to Gecko]]-powered devices, the entire user-facing operating system is powered by HTML5.
 
The user's collection of web applications is part of their personal data.  Web browsers and devices maintain the collection on the user's own hardwareIn the Firefox architecture, the list of installed web applications is part of the user's profile data.
 
Mozilla offers an application sync service that makes it quick and easy for users to keep their application collections in sync across their devicesThis synchronization includes all the infrastructure needed to support paid applications, and the list of in-application purchases that the user has made.
 
Read More:
* [https://developer.mozilla.org/en/OpenWebApps Web Client Application API]
* Application Dashboard - link needed
* Application Sync Service - link needed
 
== Authenticated Applications ==
 
Applications can optionally be "authenticated," which means that the application is stored on the user's devices with a targeted identity.  The BrowserID system allows the application to verify this identity at startup.  When the application is copied to another device, the identity flows with it, allowing the user to launch the application and get back to their cloud-based state with no per-application login step required.


Read More:
Read More:
* [http://identity.mozilla.com BrowserID]
* [https://wiki.mozilla.org/Apps/WebRT The Web Runtime]
* Browser ID Directed Identity Assertion - link needed
* [https://wiki.mozilla.org/WebAPI Mozilla's WebAPI project]
* [https://wiki.mozilla.org/B2G Boot to Gecko]
* [https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.security mozilla.dev.security group] for discussions of WebAPI security


== Paid Applications and In-App Purchases ==
=== The Mozilla Application Marketplace: The Most Complete, Trusted Directory of Web Apps ===


The Open Web Applications system supports paid applications ranging from free-and-self-published to paid, web-store distributionApplications can be sold by multiple stores, or sold directly by the publisherPaid applications are built on top the Authenticated Application system.
Mozilla operates an Application Marketplace, which is a safe, fast, fun place for users to find web applications, and for developers to reach their customers.  It is a reference implementation for a web application store, which developers can download and set up on their own domainsIt is implemented as a web application, and is easily reachable from the Firefox browser or from any other web browser on mobile or desktopIt understands the characteristics of major web browser platforms and helps users configure their devices to get the best experience.


When a user purchases an application from a store, the store synthesizes a Web Application Receipt with a purchase type of <tt>application</tt> and installs the application with the receipt in the <tt>appReceipt</tt> property of the application's installDataThe application later retrieves this receipt and verifies it, proving that the receipt came from a trusted store.  The application may then verifies the identity embedded in the receipt using BrowserID; when the application is launched through the <tt>launch</tt> method of Web Application Client API, a BrowserID Directed Identity Assertion is enabled to allow the application to verify the receipt's embedded user identity without a popup.  The application is free to use cookies, usernames, or other techniques for creating a user session, but is encouraged to user BrowserID to remove the need for a login screen.
The Marketplace is a payment processor, providing a place for developers to list their applications and for users to purchase themIt also supports in-app purchasing (by itself being an application), allowing developers to offer digital goods to their users after install.  The Marketplace also allows developers to list applications that are free, or that are sold by the developer on their own site.


When a user performs an in-application purchase, the store synthesizes a Web Application Receipt with a purchase type of <tt>application-payment</tt> and adds the receipt to the <tt>purchaseReceipts</tt> property of the application's installDataThe application may retrieve this list later and verify the receipts contained in the list; this data can be used to enable features on the server or the client as the application sees fit.
The Marketplace understands the complexity of delivering web applications to multiple platformsIt provides a features-and-capabilities system that shows users apps that can run on their platform, and suggests available platforms for the user's device if a more capable platform could provide a better experience.
 
Note that security concerns require that receipt verification be performed on a server under the developer's control; the web platform does not, and likely will never, support hardware-locked application licensing.  For more discussion of how offline verification be handled, see Offline Verification of Purchased Apps.


Read More:
Read More:
* Web Application Receipt - link needed
* [https://wiki.mozilla.org/Marketplace The Mozilla Marketplace] wiki page
* Offline Verification of Purchased Apps - link needed


== Application Activities ==
=== Apps in the Cloud ===


Applications can expose "Activities," which are an application-to-application communication system.  This system allows an application (or website) to request access to a user's preferred service, and for a message to flow between the application and the service.
Mozilla will implement and host a generic "app cloud service, which can be freely called by any store, dashboard, or application.  It provides a full implementation of the Application Client API in HTML5, and runs on any modern browser.  This service can run purely locally (with no user login), or can store all of the user's applications on the server, for access across all of a user's devices.  This service is visible to users through an easy-to-use "application dashboard", which always has their applications ready for use.


Use cases for this feature include link sharing, contact lists, personal profile data, payment processing, travel planning, and media preferences.
This service will store the user's applications and any receipts needed for proof-of-purchase; in the future it may also include per-application storage for user data, allowing applications to give users a consistent experience across devices.


Read More:
Read More:
* [https://github.com/mozilla/openwebapps/blob/master/docs/ACTIVITIES.md Activities specification] (in-progress)
* [https://wiki.mozilla.org/Apps/AITC Apps in the Cloud]
* [http://dev.chromium.org/developers/design-documents/webintentsapi Web Intents] (related work by Google Chrome team; conversations with this team are ongoing)
* [https://developer.mozilla.org/en/OpenWebApps Web Client Application API]
 
= Running Web Applications in a Browser =
 
Web browsers can run applications in a tab, a window, or full-screen.  The tab can be a traditional tab or a pinned tab that is always present in every browser window.


Web browsers can provide different default permissions to web applications, allowing them to access data and device capabilities that are not allowed to websites be default.  They can, optionally, provide greater capabilities to web applications that were installed from a trusted source (which assumes that a review and revocation system is in place).
=== The BrowserID protocol and persona.org service ===


In the Firefox architecture, web applications can run in tabs, pinned tabs, or full screenThe Firefox permissions mechanism will be enhanced to provide more capabilities to web applications, subject to the user's control.
Mozilla has proposed a decentralized identity system that allows applications to verify a user's identity, and operates a high-availability implementation of the identity system at [http://persona.org persona.org]Applications can use this system to perform easy, secure authentication of users.


Read More:
Read More:
* [http://people.mozilla.com/~faaborg/files/projects/apps/discovery-i2.png Web Apps on Firefox Home Tab]
* [http://browserid.org BrowserID]
* [http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/4b8892e0d277b14b/1c1ff493776249b9?lnk=raot#1c1ff493776249b9 dev-platform thread on advanced permissions]
* [https://wiki.mozilla.org/Identity Identity project management page]
* UI mockup of application permissions - need link
 
= Running Web Applications Natively =
 
The capabilities provided by a web browser can also be separated and turned into a standalone application.  These applications can interact with operating systems in a more "native" way; for example, they can have their own icon in a task bar or dock, act as a target for document-opening requests, and be copied between devices with a drag-and-drop to a file server.


The Mozilla platform can support this both in a "custom invocation of Firefox" mode (as the WebRunner project does today), or through statically linking the XULRunner libraries with an executable (as the [http://mozillalabs.com/chromeless/ Chromeless] project does).  The creation of native runtimes for web applications could be performed on the client, or on the server.


The PhoneGap project provides this capability for many smartphone platforms.
== Standardization and API Development to Support Applications ==


Read More:
Mozilla provides APIs, and works with other browser vendors to define standards, that enhance the web application ecosystem
* [http://www.salsitasoft.com/webrunner/ WebRunner]
* [http://mozillalabs.com/chromeless/ Chromeless]


= The Mozilla Application Marketplace =
=== Standard Device APIs ===


The Application Marketplace is a web site, operated by Mozilla, that provides a safe, fast, fun place for users to find web applications, and for developers to reach their customersIt is a reference implementation for a web application store, which developers can download and set up on their own domains.
The WebAPI project is defining many device APIs and proposing them as standards to the W3C.   


The Marketplace supports both paid applications and in-app purchasing. The in-app purchase function is supported by the Mozilla Marketplace application, which implements the In-App Purchase activity.
* [https://wiki.mozilla.org/WebAPI WebAPI wiki root]
* [https://developer.mozilla.org/en/OpenWebApps/The_Manifest Application The application manifest] definition used by Gecko-based applications
* The [https://developer.mozilla.org/en/OpenWebApps Web Client Application API] used to install applications, and to introspect on installation metadata.


The Marketplace understands the complexity of delivering web applications to multiple platformsIt provides a features-and-capabilities system that shows users apps that can run on their platform, and suggests available platforms for the user's device if a more capable platform could provide a better experience.
=== Web Application Receipts ===
Mozilla proposes a standard web application receipt format, to allow proof-of-purchase claims to travel from stores to applications using user-centric storageThis allows users to log into a new device and receive all their applications, including paid content, with no additional steps required.


Read More:
Read More:
* Application Marketplace - link needed
* [[Apps/WebApplicationReceipt|Web Application Receipt]]
* Mozilla Marketplace App - link needed
* [[Apps/WebApplicationReceipt/GenerationService|Receipt Generation Service]]

Latest revision as of 17:23, 24 April 2012

Web applications are universal applications. The run on any device. They use standard technology that works on desktop PCs, smartphones, and tablets. They can be installed on devices automatically when users authorize their devices, and are personalized so that users keep their preferences and data with them wherever they go.

Mozilla-provided products to support Web Applications

The Gecko WebRT: The Best Runtime for Applications

Mozilla will provide the best runtime for HTML5 applications. It will have the richest set of APIs, the best user experience of navigating and running applications, and the safest and easiest-to-use user controls. It will communicate with the application cloud to keep the user's application choices always up-to-date.

On desktop operating systems, applications will run as first-class applications, with their own icons, launcher, place in the taskbar/dock, and menus. On mobile operating systems, web applications will run full screen, with rich user interactions (touch, orientation, motion) and access to device APIs. On Boot to Gecko-powered devices, the entire user-facing operating system is powered by HTML5.

Read More:

The Mozilla Application Marketplace: The Most Complete, Trusted Directory of Web Apps

Mozilla operates an Application Marketplace, which is a safe, fast, fun place for users to find web applications, and for developers to reach their customers. It is a reference implementation for a web application store, which developers can download and set up on their own domains. It is implemented as a web application, and is easily reachable from the Firefox browser or from any other web browser on mobile or desktop. It understands the characteristics of major web browser platforms and helps users configure their devices to get the best experience.

The Marketplace is a payment processor, providing a place for developers to list their applications and for users to purchase them. It also supports in-app purchasing (by itself being an application), allowing developers to offer digital goods to their users after install. The Marketplace also allows developers to list applications that are free, or that are sold by the developer on their own site.

The Marketplace understands the complexity of delivering web applications to multiple platforms. It provides a features-and-capabilities system that shows users apps that can run on their platform, and suggests available platforms for the user's device if a more capable platform could provide a better experience.

Read More:

Apps in the Cloud

Mozilla will implement and host a generic "app cloud service, which can be freely called by any store, dashboard, or application. It provides a full implementation of the Application Client API in HTML5, and runs on any modern browser. This service can run purely locally (with no user login), or can store all of the user's applications on the server, for access across all of a user's devices. This service is visible to users through an easy-to-use "application dashboard", which always has their applications ready for use.

This service will store the user's applications and any receipts needed for proof-of-purchase; in the future it may also include per-application storage for user data, allowing applications to give users a consistent experience across devices.

Read More:

The BrowserID protocol and persona.org service

Mozilla has proposed a decentralized identity system that allows applications to verify a user's identity, and operates a high-availability implementation of the identity system at persona.org. Applications can use this system to perform easy, secure authentication of users.

Read More:


Standardization and API Development to Support Applications

Mozilla provides APIs, and works with other browser vendors to define standards, that enhance the web application ecosystem

Standard Device APIs

The WebAPI project is defining many device APIs and proposing them as standards to the W3C.

Web Application Receipts

Mozilla proposes a standard web application receipt format, to allow proof-of-purchase claims to travel from stores to applications using user-centric storage. This allows users to log into a new device and receive all their applications, including paid content, with no additional steps required.

Read More: