Currently latests version of TBB is downloadable from https://www.torproject.org/projects/torbrowser/RecommendedTBBVersions and contain a list of latests TBB versions in a format that can lead to difficulties in parsing an deciding "which is the latests alpha release" and "which is the latests stable release" .
This ticket is to make up a new version of RecommendedTBBVersion in a simplified format, containing always and only 2 versions:
Stable one
Alpha one
We don't have one stable version and one alpha version recommended all the time for at least two reasons:
Releasing a Tor Browser which does not fix critical security bugs should not trigger the need for updates. Thus, it is perfectly fine to have, say, two versions of Tor Browser that are okay at a given moment in time.
The release process is organized in a way that we remove old versions only after some delay in order to give users the chance to get a Firefox update notification before their TorButton is blinking weirdly.
Thanks for the clarification gk. For what I understand, having more than one (stable and alpha) version recommended is a normal behaviour. In other words, it's not bad to use an old version of Tor Browser, as long as it is present in RecommendedTBBVersion. With this in mind, do you still consider it a problem, naif?
@ilv We can live with that but i do think it's not a good idea to keep it that way, given that a developer is looking at this file to get a simple answer to the question "Which is the latest version of Tor Browser?" .
Answering that way is misleading, adding parsing logic complexity to any third party implementation willing to take action based on the answer of that file.
I feel that an over-simplified version would be suitable, probably enriched with the URL where to download the version of the file that's reported in that file, so any third party developer will only get 1 answer and can immediately do a request to fetch it.
I agree, Tor Browser Launcher has this exact problem. At the moment it loads https://www.torproject.org/projects/torbrowser/RecommendedTBBVersions and then tries to parse it. There have been a few times in the past where RecommendedTBBVersions changed its format slightly, which entirely broken TBL.
This quickly becomes a complicated issue because of all of the different pieces of information that end up defining a URL: version (stable or experimental), platform, architecture, and language.
So the URLs to download the latest stable for Windows in English are:
Whatever the ultimate solution is, it would be good to figure out how to encapsulate all of this information. It could be a single JSON object, something like this:
@micahlee I'd really love to see implemented your proposed data structure by Tor!
It would be even cooler to see it implemented as part of CheckTor service, that way an active-client-side-component will be able in a single request to know if it's coming from Tor and which is the latests version of Tor Browser
boklm: nice! how are those file generated, by hand?
naif, micahlee: I did something for the first idea (based on this), with some minor changes in the structure. I'm attaching a sample of the JSON generated. You can check the script that generated it here. It would be interesting to know how RecommendedTBBVersion is generated, or the URLs mentioned by boklm; if these are generated by hand maybe there is a chance that someone could run the script on tpo on every TB release (or maybe a cronjob?). I've been working on something similar in #16601 (moved).
I think we can extend the script to generate a json file with download information, which would be updated at the same time a new version is made available in the updater.
Thank you boklm, this looks great. I think we are almost done here. I guess the next step should be to open a new ticket to apply these changes, but I'm not sure under what component, Service-dist maybe?
Thank you boklm, this looks great. I think we are almost done here. I guess the next step should be to open a new ticket to apply these changes, but I'm not sure under what component, Service-dist maybe?
The next step is tagging the ticket with the TorBrowserTeam201508R keyword (I'm doing it now) to get the patch reviewed.
Trac: Type: defect to enhancement Cc: evilaliv3, ilv, micahlee, boklm to evilaliv3, ilv, micahlee, boklm, tbb-team Keywords: N/Adeleted, TorBrowserTeam201508R added Status: new to needs_review
i've simply a concern: your all comments are still missing to answer the first comment by gk that if i'm not wrong can be summarized as:
multiple stables (the one that during time has not become vulnerable and so should not be listed at all) may exist
generically as 1. multiple alphas/beta/something may exist at a time.
i think that your gerarchical data format for describing a precise version is perfect, but we miss a good wrapping object that would allow to access the relevant information in O(1).
here is my proposal (written fastly as i'm reading but i think it should really be considered and improved):