App Updates: Background
There are three types of installed apps, each with their own update policies.
- Core apps
- Are packaged, certified, pre-installed, non-removable.
- Are only updated within Full System or atomic Gecko+Gaia updates.
- Pre-installed third-party apps
- Are updated subject to same update policies as User-installed apps (see below)
- User-installed apps
- Are packaged or hosted.
- Update policies are described in rest of this page.
For initial FxOS versions, should assume the following about users:
- Data is slow, expensive, and intentionally constrained.
- Very limited access to WiFi
- Rarely in Roaming mode
- Turn data connections off by default, and only activate for brief transactions.
- Use multiple SIM cards.
- Users think Installed vs Un-installed. Not Free vs Paid. (per Jonas)
- Packaged apps can specify version notes within their mini-manifests
- Can poll Marketplace for update.
- Will evaluate pushing updates to users in future versions.
- Marketplace will know current version off app.
- Updates can download and install while current version is open.
- There is relatively low risk of new app versions breaking old.
- There is a higher risk of Gecko changes breaking apps.
- Content servers will know version of the installed app that they are sending content to.
- Good apps will provide backwards compatibility
- App revocation will be handled by the store. It will sign a special update with a "revoked" app type (vs. "certified" or "privileged").
- Manifest enables devs to specify specific features required by apps.
- We cannot separate "Poll for update", from "Start update".
- We can specify when poll happens, however. For v1 we can Add additional checks. But we cannot remove the "Poll on Open" behavior).
- Have no way of knowing file size (contents are remotely hosted).
- Current version can be used while new version downloads in background.
- Web devs are used to users always being on latest version. Simplifies development.
- Security also benefits when as many users as possible are up-to-date.
- How are 3rd party apps tested with different versions of b2g releases?
- What needs to be exposed regarding privacy? e.g. What data are sent for updates?
- What happens when the manifest version changes? Does this trigger any sort of notification for the user?
- Low-friction. Minimize user interruptions, connection speed impacts, etc.
- Free. Avoid user charges.
- Safe. Minimize changes and consequences of failed updates.
- Patient. Support backwards compatibility for users who cannot update.
- Friendly. Avoid presenting users with excess technical details.
For the latest UX specifications, please visit https://mozilla.box.com/system
- Manual: Individual
- Manual: Batch