Apps/Architecture: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Created page with "== Architecture == 200px200px Legend #Client possibly initiates a browserID session ##Client goes to the marketplace, and a browserid login...")
 
 
(58 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Architecture ==
= Apps Program Software Architecture =


[[Image:Webappspurchaseflow.png|200px200px]]
Bill Walker


Legend
== Program Goals ==
#Client possibly initiates a browserID session
##Client goes to the marketplace, and a browserid login is presented
#Client goes to the marketplace
#Client initiates an install off an app
##Navigator.mozApps.install
#App is installed, user opens app
#Twitter app is launched
#Twitter app verifies the receipt that was presented.
#Apps Sync occurs ad-hoc manner, still unsure as to the schedule.


<br>
* Provide Developers with:
** a consistent App runtime environment that makes their Apps feel like natives, not tourists, on every platform they care about
** a consistent payment infrastructure for Apps available at our Marketplace


The basics behind open webapps architecture is to allow for HTML5 apps to flourish.  To do that a few things infrastructure pieces need to be in place.  
* Provide Users with:
# Firefox needs to support navigator.mozApps
** an open Apps ecosystem that lets them shop at the App store of their choice
# HTML5 App Managmement in case no OWA Extension is installed.  
** a robust App runtime environment that makes Apps feel like natives, not tourists on every device
# Store needs to support both the issuing of payment receipts as well as the verification of receipt information
** a means to back up and manage their Apps from multiple Stores across multiple devices
# Apps Need to be able to run from the desktop or in browser.  
 
# The navigator.mozApps is the javascript object that will manage installing / removing apps
* Provide App Stores with
# Iframes are used to manage the communication channel between the Application Repo and the Dashboard
** a well-documented API for installing and managing Apps
# Application Sync is managed through a separate API.
** access to the same cloud-based services for App management that our Marketplace uses
 
== Architectural Goals ==
 
* Provide well-designed API's for App installation, App management, and App payments
* Conceal uninteresting platform dependencies while providing access to crucial platform-specific features
* Provide access to multiple payment providers through a single, unified API
 
== Deliverables ==
 
{|
! Category
! Description
! Deliverable
! Architect
! Tech Lead
|-
| rowspan=3 | App Definition
| rowspan=3 width="50%" |An App is described by its Manifest. The manifest contains user-facing metadata, including descriptions and icons. The manifest also enumerates the protected API's to which the App requests access. This information is used by the App Security Model to control access to privileged API's at run time.
| [https://wiki.mozilla.org/Apps/Security Apps security model]
| ladamski
| sicking
|-
| [https://wiki.mozilla.org/Apps/PackagingProposal App packaging specification]
| sicking
| sicking
|-
| [http://mozilla.github.com/webapps-spec/ App manifest specification]
| anant
| anant
|-
| style="background:#DDDDDD" | Identity
| style="background:#DDDDDD" | Many services in the Apps ecosystem require user authentication (e.g., the Marketplace itself, many of the Apps, the Cloud-based services). We can offer our users a much better overall experience if we (1) build a coherent Identity solution into all our services and (2) encourage App developers to do the same.  
| style="background:#DDDDDD" | [https://developer.mozilla.org/en-US/docs/DOM/navigator.id navigator.id API]
| style="background:#DDDDDD" | benadida
| style="background:#DDDDDD" | benadida
|-
|Marketplace
|We will develop and operate a vibrant, open source Marketplace for Apps. Participating developers will receive timely and transparent review of Apps they submit; participating users will discover relevant Apps and install them quickly and easily. The Marketplace will operate equally well on laptops, tablets, and smartphones.
|[https://wiki.mozilla.org/Marketplace marketplace architecture]
|clouserw
|clouserw
|-
| rowspan=3 style="background:#DDDDDD" |Payment
| rowspan=3 style="background:#DDDDDD" |We will offer our developers (1) a centralized way to price and manage paid Apps, including integration with multiple billing providers, as needed; (2) a unified Javascipt DOM API to facilitate In-app payments from Users for digital goods within Apps. We will offer users (1) a unified, trustworthy experience of purchasing and seeking refunds for paid Apps; (2) a consistent, trustworthy experience of making In-App payments
| style="background:#DDDDDD" | [https://docs.google.com/document/d/1NLKbHVPQXa9uvDBC3cfgOD7sIrtIxi0qDoXMQrxcCsI/edit navigator.mozPay API]
| style="background:#DDDDDD" | benadida
| style="background:#DDDDDD" | not sure
|-
| style="background:#DDDDDD" | [https://wiki.mozilla.org/Apps/WebApplicationReceipt App receipt specification]
| style="background:#DDDDDD" | anant
| style="background:#DDDDDD" | anant
|-
| style="background:#DDDDDD" | [https://mozilla.com/ In-app payment specification]
| style="background:#DDDDDD" | benadida
| style="background:#DDDDDD" | kumar
|-
| rowspan=3 | Cloud services
| rowspan=3 | We will offer users a centralized way to backup and manage their Apps (1) across all the App Stores they patronize and (2) across all their devices. We will achieve this using a Cloud-based service distinct from our Marketplace that will be integrated with our Web Runtime such that any App installation can be captured by the service if the user opts in.
|[http://docs.services.mozilla.com/aitc/lifeofanapp.html Apps in the Cloud design]
|anant
|anant
|-
|Payment service
|benadida
|benadida
|-
|Identity service
|benadida
|benadida
|-
| rowspan=4 style="background:#DDDDDD" | Runtime
| rowspan=4 style="background:#DDDDDD" | <p>We will provide a Web Runtime for Apps that makes HTML5-based Apps feel exactly like native applications on every device. This includes access to privileged device API's (i. e., geolocation, contacts, SMS) and native OS features (menus, drag-and-drop).</p><p>We will provide Apps-specific API's convering several different areas: (1) an installation API to allow App Store Apps to install packaged and web-hosted Apps; (2) a runtime API to allow running Apps access to their install metadata (i. e., their own App receipts); (3) a management API to allow Cloud-based services or management Apps access to the set of Apps installed on the current device</p>
| style="background:#DDDDDD" | Web Runtime (WebRT) for Android
| style="background:#DDDDDD" | bwalker
| style="background:#DDDDDD" | mfinkle
|-
| style="background:#DDDDDD" | Web Runtime (WebRT) for Mac OS, Windows, Linux
| style="background:#DDDDDD" | bwalker
| style="background:#DDDDDD" | myk
|-
| style="background:#DDDDDD" | [https://wiki.mozilla.org/Gaia/System/Apps Apps support on Firefox OS]
| style="background:#DDDDDD" | sicking
| style="background:#DDDDDD" | fabrice
|-
| style="background:#DDDDDD" | [https://developer.mozilla.org/en-US/docs/Apps/Apps_JavaScript_API#Management_API_%28 navigator.mozApps API]
| style="background:#DDDDDD" | anant
| style="background:#DDDDDD" | anant
|-
|}
 
== Problematic questions ==
 
* How can we help developers cope with the one-app-per-origin restriction?
* How can achieve a consistent Identity sol'n in the face of Firefox OS carrier and operator constraints?
* How can achieve a consistent payments API in the face of Firefox OS carrier and operator constraints?

Latest revision as of 20:31, 22 August 2012

Apps Program Software Architecture

Bill Walker

Program Goals

  • Provide Developers with:
    • a consistent App runtime environment that makes their Apps feel like natives, not tourists, on every platform they care about
    • a consistent payment infrastructure for Apps available at our Marketplace
  • Provide Users with:
    • an open Apps ecosystem that lets them shop at the App store of their choice
    • a robust App runtime environment that makes Apps feel like natives, not tourists on every device
    • a means to back up and manage their Apps from multiple Stores across multiple devices
  • Provide App Stores with
    • a well-documented API for installing and managing Apps
    • access to the same cloud-based services for App management that our Marketplace uses

Architectural Goals

  • Provide well-designed API's for App installation, App management, and App payments
  • Conceal uninteresting platform dependencies while providing access to crucial platform-specific features
  • Provide access to multiple payment providers through a single, unified API

Deliverables

Category Description Deliverable Architect Tech Lead
App Definition An App is described by its Manifest. The manifest contains user-facing metadata, including descriptions and icons. The manifest also enumerates the protected API's to which the App requests access. This information is used by the App Security Model to control access to privileged API's at run time. Apps security model ladamski sicking
App packaging specification sicking sicking
App manifest specification anant anant
Identity Many services in the Apps ecosystem require user authentication (e.g., the Marketplace itself, many of the Apps, the Cloud-based services). We can offer our users a much better overall experience if we (1) build a coherent Identity solution into all our services and (2) encourage App developers to do the same. navigator.id API benadida benadida
Marketplace We will develop and operate a vibrant, open source Marketplace for Apps. Participating developers will receive timely and transparent review of Apps they submit; participating users will discover relevant Apps and install them quickly and easily. The Marketplace will operate equally well on laptops, tablets, and smartphones. marketplace architecture clouserw clouserw
Payment We will offer our developers (1) a centralized way to price and manage paid Apps, including integration with multiple billing providers, as needed; (2) a unified Javascipt DOM API to facilitate In-app payments from Users for digital goods within Apps. We will offer users (1) a unified, trustworthy experience of purchasing and seeking refunds for paid Apps; (2) a consistent, trustworthy experience of making In-App payments navigator.mozPay API benadida not sure
App receipt specification anant anant
In-app payment specification benadida kumar
Cloud services We will offer users a centralized way to backup and manage their Apps (1) across all the App Stores they patronize and (2) across all their devices. We will achieve this using a Cloud-based service distinct from our Marketplace that will be integrated with our Web Runtime such that any App installation can be captured by the service if the user opts in. Apps in the Cloud design anant anant
Payment service benadida benadida
Identity service benadida benadida
Runtime

We will provide a Web Runtime for Apps that makes HTML5-based Apps feel exactly like native applications on every device. This includes access to privileged device API's (i. e., geolocation, contacts, SMS) and native OS features (menus, drag-and-drop).

We will provide Apps-specific API's convering several different areas: (1) an installation API to allow App Store Apps to install packaged and web-hosted Apps; (2) a runtime API to allow running Apps access to their install metadata (i. e., their own App receipts); (3) a management API to allow Cloud-based services or management Apps access to the set of Apps installed on the current device

Web Runtime (WebRT) for Android bwalker mfinkle
Web Runtime (WebRT) for Mac OS, Windows, Linux bwalker myk
Apps support on Firefox OS sicking fabrice
navigator.mozApps API anant anant

Problematic questions

  • How can we help developers cope with the one-app-per-origin restriction?
  • How can achieve a consistent Identity sol'n in the face of Firefox OS carrier and operator constraints?
  • How can achieve a consistent payments API in the face of Firefox OS carrier and operator constraints?