canmove, Confirmed users
2,056
edits
No edit summary |
(reorganize into more recognizable sections) |
||
| Line 1: | Line 1: | ||
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 == | === Target Platforms === | ||
* P1 for Q1 2012: Android | * P1 for Q1 2012: Android | ||
| Line 10: | Line 10: | ||
* P3 for Q1 2012: Linux | * P3 for Q1 2012: Linux | ||
* P1 for Q3 2012: Windows Metro | * P1 for Q3 2012: Windows Metro | ||
* ? for ?: iOS | |||
== | === User Stories === | ||
=== | ==== 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. | 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. | ||
| Line 28: | Line 23: | ||
* 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?) | * 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, | ==== Windows, Classic, Firefox ==== | ||
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. | 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 | ==== Windows, Classic, non-Firefox ==== | ||
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. | ||
==== | ==== Mac ==== | ||
==== Linux ==== | |||
==== | ==== Windows Metro ==== | ||
==== iOS ==== | |||
=== Features === | === Features === | ||
| Line 151: | Line 112: | ||
A WebRT should be able to show, and share (using user-selected and platform-appropriate idioms) URLs. | 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 === | === TBD points === | ||
| Line 310: | Line 316: | ||
=== Android === | === 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 | 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. 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 One: Mobile World Congress (MWC) - February 27 | ||
| Line 318: | Line 324: | ||
* Milestone Two: End Q1 - March 31 | * Milestone Two: End Q1 - March 31 | ||
** implement APK launcher strategy with fallback to existing shortcut strategy | ** implement APK launcher strategy with fallback to existing shortcut strategy | ||
** prototype using | ** prototype using Gecko as the runtime | ||
* Milestone Three: Marketplace Launch - June | * Milestone Three: Marketplace Launch - June | ||
** | ** Gecko-based runtime bundled with Fennec in mozilla-central | ||
=== Desktop === | === Desktop === | ||
We implement the -webapp flag to Firefox and | We implement the -webapp flag to Firefox and 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 | * Milestone One: Mobile World Congress (MWC) - February 27 | ||
| Line 335: | Line 341: | ||
** native menus, restore window state | ** native menus, restore window state | ||
* Milestone Three: Marketplace Launch - June | * Milestone Three: Marketplace Launch - June | ||
** | ** runtime ships with Firefox 13 | ||
== Team == | == Team == | ||