Changes

Jump to: navigation, search

Apps/WebRT

810 bytes added, 16:41, 6 February 2012
reorganize into more recognizable sections
{{draft|}}WebRT is a runtime for web applications that gives them a native-like look and feel along with platform integration APIs on Android, Windows, Mac, and other platforms.
WebRT is a runtime for web applications that gives them a native-like look and feel along with platform integration APIs on Android, Windows, Mac, and other platforms.== Product Requirements ==
=== Target Platforms ===
* P1 for Q1 2012: Android
* P3 for Q1 2012: Linux
* P1 for Q3 2012: Windows Metro
* ? for ?: iOS
== Product Requirements = User Stories ===
=== Critical platform features= Android: ===* Native widget support, especially toolbar, menu, list?, scrolling canvas?* Device APIs* Silent update of the runtime=
=== Expected User Interactions ===
 
==== Android: ====
The user installs a Mozilla Marketplace application from the Android Marketplace, granting access to a superset of device APIs allowed to Mozilla apps. The user then clicks an Install button from inside this application. The Marketplace application may then initiate a background task to download the resources associated with the application, not signalling readiness until the download task is complete. A new shortcut is created on their launcher screen. When the user launches the shortcut, the application launches full-screen with instant access to the downloaded resources.
* cjones: silent update of runtime may not be possible; also, if we want Firefox to share profile with WebRT it has to be in the same .apk (q: not just the same signing key?)
==== Windows, Classic, non-Firefox user: ====The user navigates to a Mozilla-powered marketplace website using Internet Explorer or another browser. The user clicks an Install button on the website. This causes an executable to be downloaded, in the usual Windows installer experience. The executable is installed with the usual Start Menu / Desktop options. This little executable is responsible for making sure WebRT is available on the system, if needed, and for launching the app.
When the user launches the executable, it checks for the WebRT libraries, doesn't find them, and initiates a download; when that download completes, the application launches with normal Windows behavior.
 
* cjones: to support Windows uninstall behavior, we need a full install step, branding, etc.
 
==== Windows, Classic, Firefox user: ====
The user navigates to a Mozilla-powered marketplace using Firefox. The user clicks an Install button on the website. Firefox prompts the user for the usual Start Menu / Desktop Windows install options, and creates an executable in the user's file system. When the user launches the executable, it links against the WebRT libraries provided by Firefox and launches with normal Windows behavior. The Firefox silent update process may be responsible for keeping the WebRT libraries up-to-date.
==== Windows Metro User , Classic, non-Firefox ====TBW
=== Native Integration ===The user navigates to a Mozilla-powered marketplace website using Internet Explorer or another browser. The user clicks an Install button on the website. This causes an executable to be downloaded, in the usual Windows installer experience. The executable is installed with the usual Start Menu / Desktop options. This little executable is responsible for making sure WebRT is available on the system, if needed, and for launching the app.
==== Android ====When the user launches the executable, it checks for the WebRT libraries, doesn't find them, and initiates a download; when that download completes, the application launches with normal Windows behavior.
* icon on homescreencjones: an launcher icon on the user's homescreen that can be repositioned and removed like those for native apps and that launches the app when tapped* installed apps entry: an entry in the platform's list of installed apps* task switcher entry: an entry in the platform's list of running apps while the app is running* multitasking: the ability for more than one app to run simultaneously* data sandboxing: platform-level isolation of each app's data* native support Windows uninstall: the ability to uninstall in app using native affordances* native major updates: the native UX flow for updating an app when the app makes changes that require user confirmation (f.e. to permissions)* native permissions: reflection of the app's permissions into the native interface for browsing app permissions* known source: apps are seen as being from behavior, we need a "known source"full install step, so they do not trigger the default prohibition on the installation of apps from "unknown sources"* graceful offline behavior: ?* full screen/chromeless: ?* instant on: ?branding, etc.
==== Windows Mac ====
* Program Files entry* Start menu entry* desktop icon* registered uninstaller* app icon in taskbar* pin app in taskbar* device/filesystem access* elevated privileges by default* protocol handler/file type associations* native menus* COM object==== Linux ====
==== Mac Windows Metro ====
* /Applications: installer puts the stub executable in the system-wide /Applications folder* LaunchPad: when an app is installed, add it to LaunchPad, open LaunchPad, and show the user where it is* auto-add to dock: when an app is installed, automatically add it to the dock (parity with Apple App Store)* quit on close window: when all windows of an app are closed, the app quits (consistency w/web model, although uncommon for apps on Mac)* restore window state: when an app is quit and restarted, the positions and sizes of windows are restored to the state they were in when the app was quit* native menus: apps can specify menus and menuitems to appear in the native Mac menubar* scrollbars: apps have control over the appearance of scrollbars (myk: don't they already?)==== iOS ====
=== Features ===
A WebRT should be able to show, and share (using user-selected and platform-appropriate idioms) URLs.
 
==== Native Integration ====
 
Apps running on WebRT look and feel like native apps via integration into the native APIs and affordances for installation, uninstallation, discovery, launch, and management. This integration will vary by platform and will not be complete, as some native functionality will be prohibitively difficult to integrate or would not provide the optimal user experience.
 
===== Cross-Platform =====
 
* graceful offline behavior: ?
* full screen/chromeless: ?
* instant on: ?
* device/filesystem access:
* elevated privileges by default:
* protocol handler/file type associations:
* native menus
* restore window state: when an app is quit and restarted, the positions and sizes of windows are restored to the state they were in when the app was quit
* native menus: apps can specify menus and menuitems to appear in the native Mac menubar
* scrollbars: apps have control over the appearance of scrollbars (myk: don't they already?)
 
===== Android =====
 
* icon on homescreen: an launcher icon on the user's homescreen that can be repositioned and removed like those for native apps and that launches the app when tapped
* installed apps entry: an entry in the platform's list of installed apps
* task switcher entry: an entry in the platform's list of running apps while the app is running
* multitasking: the ability for more than one app to run simultaneously
* data sandboxing: platform-level isolation of each app's data
* native uninstall: the ability to uninstall in app using native affordances
* native major updates: the native UX flow for updating an app when the app makes changes that require user confirmation (f.e. to permissions)
* native permissions: reflection of the app's permissions into the native interface for browsing app permissions
* known source: apps are seen as being from a "known source", so they do not trigger the default prohibition on the installation of apps from "unknown sources"
 
===== Windows =====
 
* Start menu entry: an entry in the Start menu
* desktop icon: an icon on the desktop
* Program Files entry: an entry in the Program Files folder [non-goal]
* registered uninstaller: an executable that uninstalls the app that can be invoked from the OS's list of installed apps
* app icon in taskbar: an entry in the taskbar with a custom icon for a running app
* pin app in taskbar: the ability to pin an app to the taskbar such that its entry in the taskbar is persistent
 
===== Mac =====
 
* /Applications: installer puts the stub executable in the system-wide /Applications folder
* LaunchPad: when an app is installed, add it to LaunchPad, open LaunchPad, and show the user where it is
* auto-add to dock: when an app is installed, automatically add it to the dock (parity with Apple App Store)
* quit on close window: when all windows of an app are closed, the app quits (consistency w/web model, although uncommon for apps on Mac)
=== TBD points ===
=== Android ===
We build on the "Soup " Developer Preview by implementing the APK launcher strategy for devices that support it, falling back to the existing shortcut strategy for those that don't. Then we prototype using Gecko as the runtime engine. If the prototype proves viable, we develop and land a Gecko-based implementation in mozilla-central.
* Milestone One: Mobile World Congress (MWC) - February 27
* Milestone Two: End Q1 - March 31
** implement APK launcher strategy with fallback to existing shortcut strategy
** prototype using Fennec/Gecko as the runtime/rendering engine
* Milestone Three: Marketplace Launch - June
** ?Gecko-based runtime bundled with Fennec in mozilla-central
=== Desktop ===
We implement the -webapp flag to Firefox and then stub executables on both Mac and Windows. Then we refine the experience of using installed apps through further integration with the native platform at both the runtime and web API layers.
* Milestone One: Mobile World Congress (MWC) - February 27
** native menus, restore window state
* Milestone Three: Marketplace Launch - June
** ?runtime ships with Firefox 13
== Team ==
Canmove, confirm
2,056
edits

Navigation menu