Gaia/System/Updates/Apps: Difference between revisions

Jump to navigation Jump to search
Line 1: Line 1:
= App Updates =
= App Updates: Overview =


== Introduction ==
== Introduction ==
Line 56: Line 56:
* We don't yet have the ability to tell a packaged app that an update is available.
* We don't yet have the ability to tell a packaged app that an update is available.


=== Packaged app updates ===
=== Package apps ===


* Update availability is checked by polling the store to see whether a new package available.
See section below.
* We also have the ability to tell the app that an update is available.


=== Deferred download ===
=== Answered questions ===


* We have the ability to download and install app updates while the previous versions are running. The new version is made available on app restart.
=== Open questions ===
* How often should we check for app update?
** Once a day, only on WiFi?
* Does the frequency of usage affect how often we check for app updates?
* Does being on 3G/Edge affect when we check for app updates?
* What should we tell the user when an app update is detected?
* What should we tell the user when an app update is detected while the app is running, or should we rely on the app to do so? (note that while we can inform a running app about an update being available, we can't detect if the app is actually doing anything useful with that information)
* Should we behave differently if the user is on 3G/Edge connection when we detect that an update is available?
* Can the user inspect permissions enumerated in the app at the time of installation? Should we let the user know if an update expands the list of permissions?
* Can the user inspect permissions enumerated in the app at the time of installation? Should we let the user know if an update expands the list of permissions?
* Do we need to have a mechanism for pushing extra-critical updates?
* Do we need to have a mechanism for pushing extra-critical updates?
Line 83: Line 71:
*** Group all the applications by store, and send to each store the list to check with ones to update. This could also return hashes for the new packages which could be safely downloaded from mirrors.
*** Group all the applications by store, and send to each store the list to check with ones to update. This could also return hashes for the new packages which could be safely downloaded from mirrors.
*** If the user has authentication credentials with a store, use a store specific api to get a list of updated applications.
*** If the user has authentication credentials with a store, use a store specific api to get a list of updated applications.
* Should we enable batch download of updates?
 
* Should we indicate download+install progress to user?
* Should we surface "this app has been updated" information to user?
* Do we create user configuration options? eg:
** Download and install apps in background.
* How do we ensure backwards compatibility for apps that cannot update? eg: User is on Edge connection and rarely accesses via WiFi. Would their apps stop working once they are out of date?




Line 99: Line 82:
* Add a |DOMEventListener onupdated| event listener to be notified when an application has been updated. This let a dashboard update any displayed item that could have changed (icon, application name, etc.)
* Add a |DOMEventListener onupdated| event listener to be notified when an application has been updated. This let a dashboard update any displayed item that could have changed (icon, application name, etc.)


=== Open questions: ===
= Packaged Apps =  
 
== Users ==
 
* Limited access to wifi
* Rarely roaming
* Off-by-default data connections
* SIM card swapping
* Expensive data
* Mental models are "installed" vs "not-installed"
 
== Technical parameters ==
 
* Can poll Marketplace for update, or push update to user.
* Marketplace will know installed version #.
* We can download and install updates while current version is running. New version is then available on app restart
* Low risk of new versions breaking old.
 
== Developers ==
 
* Web devs are used to their users being on latest version. Makes development easier.
* Long term, we want world where as many users as possible are always on newest app versions. Great for security, development, etc.
 
== Challenge ==
 
* Our long term vision depends on ubquitious, fast, affordable connectivity. But those conditions do not exist in initial launch markets. It may be a challenge convincing users to use and update apps if data connectivity is a requirement.
 
== Design principles ==
 
* 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.
 
== User-facing Steps ==
 
* Inform
* Request confirmation
* Show Process
* Confirm success / failure
* Prompt for new permissions at next run
 
== Potential tactics (v2?) ==
 
* Batch process updates?
** Poll Marketplace(s) for list of all available updates, and A) present menu to user with Update Individual and Update All options, and/or B) download automatically.
* Poll less frequently, depending on connection type?
* Poll less frequently, depending on frequency of app use?
* Update all apps automatically with Gecko+Gaia atomic updates?
* Enable users to opt-out? eg: "Don't remind me again"?
* Enable users to specify per-app update permissions? eg: app by app silent update?
* Incentivize updates? "Update for free credits"
* Allow users to set global update preferences?
 
Questions:


* Do we also need an event signaling that an update is available?  
* Can/should apps tell inform users of available updates?
* Do we also need an event signaling that an update has been downloaded?
* Package apps: require full .ZIP contents update every single time?
* Marketplace maintains receipts of transactions and can be used as update channel?
* Can users defer updates and still use app? Sounds like this will be up to app devs to ensure on app-by-app basis?
* How often will packaged apps be updated? It could get obnoxious if I am constantly being pinged by the app to update.
* Do we have strategies to reduce file sizes? ala Binary diffs in Gecko+Gaia updates?
816

edits

Navigation menu