Software Update:Major Update Use Cases
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