Hi everyone! Here is my status report for July 2023.
Like the previous month, in July, I worked mainly on the transition to Firefox ESR 115 and the refactors of Torbutton.
For the ESR update, I kept working on our build system. We stumbled upon a couple of reproducibility problems with LLVM. One [0] was already fixed in the main branch, but I had to git bisect to find the solution and backport it to 16.0.4, the version we and Mozilla use. The other one was about the macOS binaries: they matched except for the UUID. Because this difference was limited and specific, I could quickly find the cause in the source code. This UUID is a hash, and its computation was split into as many workers as the available cores. Even though this is deterministic, it introduces a dependency of the result on the hardware used to produce it. So, I opened an issue [1], which was solved super fastly ❤️!
Then, I also worked on the Android part of the build system. Between 102 and 115, Mozilla unified the repositories for Android Components and Fenix [2]. Therefore, we had to create a brand new project, and making it build successfully from start to end required a considerable time. We had reproducibility problems also on Android, more precisely on the application services part. They were already known, so I just had to update the patch for 102 to 115. I wanted to upstream these changes, but in Application Services 116, Mozilla did a big refactor on this code. So, I adapted our patch again, and it was accepted [3]. The tor-browser-build merge request for Android [4] is still under review, but we will need to merge it soon because we want to release 13.0a2 also for Android.
My other big work topic of July was the refactors to Torbutton. Our objective is to extract all the code that originally composed the extension and integrate it more with the rest of the browser code. The first MR [5] moved about:tor to a patch on its own and included a modernization of its IPC mechanisms and a refactor to TorCheckService. It also removed old migration code that is not needed anymore since users are forced to pass through Tor Browser 11.5.8 if updating from older versions. Torbutton also forced the value of a few preferences depending on whether PBM was always enabled [6]. This MR removed this behavior.
In another MR [7], I removed direct uses of the Tor controller. We planned to centralize all these operations in a TorProvider class built around the browser's needs. The rationale is to create a common interface with a future ArtiProvider. We expect that we will have to review everything again in the future, but we preferred starting already to get the first part of the work done. With this done, I could focus on refactoring the browser's Tor controller [8].
Other smaller tasks I worked on last month are: - a fix to make NoScript and the browser communicate again [9] - a fix to the bootstrap failing without any error [10] - make the build system extract Firefox's PDB and distribute them to users interested in debugging the browser [11].
This sure was a long month for me, but I am very happy about the results we are getting. I hope you will appreciate them too. In yesterday's weekly meeting, we decided to release alphas more often since we are still targeting the end of September for 13.0 stable. So, I would like to invite you all to please test the Tor Browser alphas. Thank you very much!
Pier
[0] https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/40... [1] https://github.com/llvm/llvm-project/issues/63961 [2] https://github.com/mozilla-mobile/firefox-android [3] https://github.com/mozilla/application-services/pull/5736 [4] https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/merge_req... [5] https://gitlab.torproject.org/tpo/applications/tor-browser/-/merge_requests/... [6] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/41845 [7] https://gitlab.torproject.org/tpo/applications/tor-browser/-/merge_requests/... [8] https://gitlab.torproject.org/tpo/applications/tor-browser/-/merge_requests/... [9] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/41877 [10] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/41907 [11] https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/31...