You are right -- we do not need the info that Mozilla calls OS_VERSION in order to return the correct update manifest. But we included it in the update URL because if, for example, we drop support for an older OS such as Mac OS 10.6, having this info will allow us to return an update manifest that informs the user that updates are no longer available for their OS version.
But maybe it is too intrusive from a privacy / anonymity point of view (I also did not realize that GTK version was included on Linux). To remove it, we just need to remove %OS_VERSION% from the app.update.url preference inside browser/app/profile/firefox.js.
Another possibility would be to reduce the amount of detail that is returned within the OS_VERSION component, e.g., Linux-3.14
You are right -- we do not need the info that Mozilla calls OS_VERSION in order to return the correct update manifest. But we included it in the update URL because if, for example, we drop support for an older OS such as Mac OS 10.6, having this info will allow us to return an update manifest that informs the user that updates are no longer available for their OS version.
Good thinking.
But maybe it is too intrusive from a privacy / anonymity point of view (I also did not realize that GTK version was included on Linux). To remove it, we just need to remove %OS_VERSION% from the app.update.url preference inside browser/app/profile/firefox.js.
I bet there are a couple of users that are not happy to send this data to us. So, I would like to see it removed as it is stricly speaking not necessary. BUT: on the other side being able to show the user that support of an OS (version) got dropped seems important to me too. I think the best solution would be to not transmit %OS_VERSION% over the wire at all but rather to compute it locally and compare that locally with a notice the update.xml contains. Looking at it we could certainly encode something in the buildID we don't need or we could even make up a new element, say <obsolete/>, specifying the respective OS and version + architecture. But probably there are even better ideas on how to do this which I am currently missing.
I think the best solution would be to not transmit %OS_VERSION% over the wire at all but rather to compute it locally and compare that locally with a notice the update.xml contains. Looking at it we could certainly encode something in the buildID we don't need or we could even make up a new element, say <obsolete/>, specifying the respective OS and version + architecture. But probably there are even better ideas on how to do this which I am currently missing.
I like your idea. Since we will already be returning different XML update manifests for different OS platforms, we can probably just add something like this:
minSupportedOSVersion="10.7"
(e.g., for Mac OS when we drop support for 10.6), Kathy and I will try to make the necessary changes next week.
I think the best solution would be to not transmit %OS_VERSION% over the wire at all but rather to compute it locally and compare that locally with a notice the update.xml contains. Looking at it we could certainly encode something in the buildID we don't need or we could even make up a new element, say <obsolete/>, specifying the respective OS and version + architecture. But probably there are even better ideas on how to do this which I am currently missing.
I like your idea. Since we will already be returning different XML update manifests for different OS platforms, we can probably just add something like this:
minSupportedOSVersion="10.7"
(e.g., for Mac OS when we drop support for 10.6), Kathy and I will try to make the necessary changes next week.
I wonder how we should handle things if we want to drop support just for 32bit systems. (See: https://lists.torproject.org/pipermail/tor-talk/2014-September/034728.html for my idea) That plan has IMO a bunch of advantages and not much disadvantages compared to the "Let's move to 10.7 as minimum proposal"...
I wonder how we should handle things if we want to drop support just for 32bit systems. (See: https://lists.torproject.org/pipermail/tor-talk/2014-September/034728.html for my idea) That plan has IMO a bunch of advantages and not much disadvantages compared to the "Let's move to 10.7 as minimum proposal"...
I think we will be able to detect the difference because of the presence of the %BUILD_TARGET% component within our update URL (we do not plan to remove that component). In TB 4.0a2 that component turns into this:
Darwin_x86-gcc3
I think it will turn into the following in a 64-bit build (we will need to test to be 100% sure):
Darwin_x86_64-gcc3
Then we just need to modify boklm's tb-update-response script to return a "end of life" XML response if _64 is missing. In the simplest case, that can look like:
Still needed: some modifications to boklm's tb-update-response to handle the new update URL that omits the %OS_VERSION% component.
How careful do we need to be about synchronizing these changes with the update response script? It seems like we'll want boklm's scripts to handle both forms of these urls for some time while 4.0a2 users upgrade, right? And will the new version property in the update manifest cause problems for 4.0a2?
If we need to change the URL format again the future, we can then change it to use "update_3", and keep the old directories on the server until everybody upgraded.
I also like boklm's idea; it is similar to what Mozilla has done for "versioning" of the update URLs over time. Hopefully, we do not have to keep tweaking the URL.
Mike -- It looks like the Mozilla code ignores attributes that it doesn't know about so we should be OK.
bolkm -- do you have time to modify your update_responses script so it will generate the correct files for the new .../update_2/ URL format? (I think you just need to modify the RewriteRule expressions within the .htaccess file.
It should work OK to use the current/older version of the update_responses script to generate the files needed for TB 4.0a2 (.../update/).
bolkm -- do you have time to modify your update_responses script so it will generate the correct files for the new .../update_2/ URL format? (I think you just need to modify the RewriteRule expressions within the .htaccess file.
Yes, I updated the script so it does not include anymore the OS version in the URL (I reverted the commit which added it).
So it should be ready to use when we have the .mar files of a new build available.
I also added support for the minSupportedOSVersion and unsupported attributes. When we need to set them on a specific platform, we can uncomment the minSupportedOSVersion or unsupported line in config.yml:
https://github.com/boklm/tb-update-response/blob/master/config.yml
It should work OK to use the current/older version of the update_responses script to generate the files needed for TB 4.0a2 (.../update/).