Software Update:Major Update Use Cases

From MozillaWiki
Jump to: navigation, search

Major Update Use Cases

Let's assume that in each of these cases a Major Update is also available (2.0.0.0):

a) -1 from current minor version (i.e. I have 1.5.0.7 and 1.5.0.8 is published)

Result: User should get the minor update.  No offer of Major will be made

b) -x from current minor version (i.e. I have 1.5.0.3 and 1.5.0.8 is published)

Result: User should get the minor update.  No offer of Major will be made

c) at current minor version (I have 1.5.0.8 and the only newer version is 2.0.0.0)

Result: User should get the offer for major upgrade to 2.0.0.0

d) at current minor version (I have 1.5.0.8 and the only newer version is 2.0.0.0) and have clicked "never" to previous major update offer

Result: User should get no update.

e) at current minor version (I have 1.5.0.8 and the only newer version is 2.0.0.0) and have clicked "never" to previous major update offer - however we've offered a new major version (i.e. 2.1)

Result: User should get major update offer to 2.1

Summary

The only time I get a major offer is if:

a) There is no minor update for me (I'm at the latest point release)
AND
b) I've not clicked never for this major update version 
   OR 
   I've done a manual "Check for Updates..."

If you do a manual check for updates, we'll clear the per version "never" client side pref for the major update you are presented. This allows the user to "undo" the never decision.

Notes

  • A never decision does not affect minor updates, only major updates. (See https://bugzilla.mozilla.org/show_bug.cgi?id=350636 for why this matters.)
  • If the server side accidentally offered a major update to Fx 1.5.0.7 (and below), it would be bad because the user would get the major update without having agreed to the EULA. There is nothing in 1.5.0.7 (and below) on the client side to prevent this, so we need a safeguard on the server side.
  • At some point (Firefox 3, according to bug https://bugzilla.mozilla.org/show_bug.cgi?id=341190), we plan to stop supporting Windows 98/ME. Unlike Fx 1.5.x, Fx 2.0+ sends the OS version as part of the update url when it pings the AUS server. Again, this is something the server side will take care of, by not presenting incompatible major updates to clients running on unsupported OSes. See https://bugzilla.mozilla.org/show_bug.cgi?id=341190 for details

Example Table

Starting point, 1.5.0.7 has shipped.

When 2.0.0.0 ships, AUS should advertise...

1.0 - 1.5.0.6 -> 1.5.0.7 (minor)
1.5.0.7 -> no update (since only 1.5.0.8+ can handle a major update)
2.0.0.0 -> no update 

Then when 1.5.0.8 ships, AUS should advertise...

1.0 - 1.5.0.7 -> 1.5.0.8 (minor)
1.5.0.8 -> 2.0.0.0 (major)
2.0.0.0 -> no update

Then when 2.0.0.1 ships, AUS should advertise...

1.0 - 1.5.0.7 -> 1.5.0.8 (minor)
1.5.0.8 -> 2.0.0.1 (major)
2.0.0.0 -> 2.0.0.1 (minor)
2.0.0.1 -> no update

Then when 1.5.0.9 ships, AUS should advertise...

1.0 - 1.5.0.8 -> 1.5.0.9 (minor)
1.5.0.9 -> 2.0.0.1 (major)
2.0.0.0 -> 2.0.0.1 (minor)
2.0.0.1 -> no update

Then when 3.0.0.0 ships, AUS should advertise...

1.0 - 1.5.0.8 -> 1.5.0.9 (minor)
1.5.0.9 -> 2.0.0.1 (major, if platform is not supported)
1.5.0.9 -> 3.0.0.0 (major, if platform is supported)
2.0.0.0 -> 2.0.0.1 (minor)
2.0.0.1 -> 3.0.0.0 (major, if platform is supported) 
2.0.0.1 -> no update (if platform is not supported)
3.0.0.0 -> no update

Then when 3.0.0.1 ships, AUS should advertise...

1.0 - 1.5.0.8 -> 1.5.0.9 (minor)
1.5.0.9 -> 3.0.0.1 (major, if platform is supported)
1.5.0.9 -> 2.0.0.1 (major, if platform is not supported)
2.0.0.0 -> 2.0.0.1 (minor)
2.0.0.1 -> 3.0.0.1 (major, if platform is supported)
2.0.0.1 -> no update (if platform is not supported)
3.0.0.0 -> 3.0.0.1 (minor)
3.0.0.1 -> no update

Then when 2.0.0.2 ships, AUS should advertise...

1.0 - 1.5.0.8 -> 1.5.0.9 (minor)
1.5.0.9 -> 3.0.0.1 (major, if platform is supported)
1.5.0.9 -> 2.0.0.2 (major, if platform is not supported)
2.0.0.0 - 2.0.0.1 -> 2.0.0.2 (minor)
2.0.0.2 -> 3.0.0.1 (major, if platform is supported)
2.0.0.2 -> no update (if platform is not supported)
3.0.0.0 -> 3.0.0.1 (minor)
3.0.0.1 -> no update

Then when 1.5.0.10 ships, AUS should advertise...

1.0 - 1.5.0.9 -> 1.5.0.10 (minor)
1.5.0.10 -> 3.0.0.1 (major, if platform is supported)
1.5.0.10 -> 2.0.0.2 (major, if platform is not supported)
2.0.0.0 - 2.0.0.1 -> 2.0.0.2 (minor)
2.0.0.2 -> 3.0.0.1 (major, if platform is supported)
2.0.0.2 -> no update (if platform is not supported)
3.0.0.0 -> 3.0.0.1 (minor)
3.0.0.1 -> no update