richard pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
- 
aafb2ab9
by Richard Pospesel at 2023-06-20T21:22:57+00:00
- 
82bb2187
by Richard Pospesel at 2023-06-20T21:22:59+00:00
5 changed files:
- + .gitlab/issue_templates/Release Prep - Mullvad Browser Alpha.md
- .gitlab/issue_templates/Release Prep - Mullvad Browser Stable.md
- .gitlab/issue_templates/Release Prep - Tor Browser Alpha.md
- .gitlab/issue_templates/Release Prep - Tor Browser Stable.md
- .gitlab/merge_request_templates/default.md
Changes:
| 1 | +<details>
 | |
| 2 | +  <summary>Explanation of variables</summary>
 | |
| 3 | + | |
| 4 | +- `$(BUILD_SERVER)` : the server the main builder is using to build a mullvad-browser release
 | |
| 5 | +- `$(BUILDER)` : whomever is building the release on the $(BUILD_SERVER)
 | |
| 6 | +  - **example** : `pierov`
 | |
| 7 | +- `$(STAGING_SERVER)` : the server the signer is using to to run the signing process
 | |
| 8 | +- `$(ESR_VERSION)` : the Mozilla defined ESR version, used in various places for building mullvad-browser tags, labels, etc
 | |
| 9 | +  - **example** : `91.6.0`
 | |
| 10 | +- `$(MULLVAD_BROWSER_MAJOR)` : the Mullvad Browser major version
 | |
| 11 | +  - **example** : `11`
 | |
| 12 | +- `$(MULLVAD_BROWSER_MINOR)` : the Mullvad Browser minor version
 | |
| 13 | +  - **example** : either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
 | |
| 14 | +- `$(MULLVAD_BROWSER_VERSION)` : the Mullvad Browser version in the format
 | |
| 15 | +  - **example** : `12.5a3`, `12.0.3`
 | |
| 16 | +- `$(BUILD_N)` : a project's build revision within a its branch; this is separate from the `$(MULLVAD_BROWSER_BUILD_N)` value; many of the Firefox-related projects have a `$(BUILD_N)` suffix and may differ between projects even when they contribute to the same build.
 | |
| 17 | +    - **example** : `build1`
 | |
| 18 | +- `$(MULLVAD_BROWSER_BUILD_N)` : the mullvad-browser build revision for a given Mullvad Browser release; used in tagging git commits
 | |
| 19 | +    - **example** : `build2`
 | |
| 20 | +    - **NOTE** : A project's `$(BUILD_N)` and `$(MULLVAD_BROWSER_BUILD_N)` may be the same, but it is possible for them to diverge. For **example** :
 | |
| 21 | +      - if we have multiple Mullvad Browser releases on a given ESR branch the two will become out of sync as the `$(BUILD_N)` value will increase, while the `$(MULLVAD_BROWSER_BUILD_N)` value may stay at `build1` (but the `$(MULLVAD_BROWSER_VERSION)` will increase)
 | |
| 22 | +      - if we have build failures unrelated to `mullvad-browser`, the `$(MULLVAD_BROWSER_BUILD_N)` value will increase while the `$(BUILD_N)` will stay the same.
 | |
| 23 | +- `$(MULLVAD_BROWSER_VERSION)` : the published Mullvad Browser version
 | |
| 24 | +    - **example** : `11.5a6`, `11.0.7`
 | |
| 25 | +- `$(MB_BUILD_TAG)` : the `tor-browser-build` build tag used to build a given Mullvad Browser version
 | |
| 26 | +    - **example** : `mb-12.0.7-build1`
 | |
| 27 | +</details>
 | |
| 28 | + | |
| 29 | +**NOTE** It is assumed that the `tor-browser` alpha rebase and security backport tasks have been completed
 | |
| 30 | + | |
| 31 | +<details>
 | |
| 32 | +  <summary>Building</summary>
 | |
| 33 | + | |
| 34 | +### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
 | |
| 35 | +Mullvad Browser Alpha (and Nightly) are on the `main` branch
 | |
| 36 | + | |
| 37 | +- [ ] Update `rbm.conf`
 | |
| 38 | +  - [ ] `var/torbrowser_version` : update to next version
 | |
| 39 | +  - [ ] `var/torbrowser_build` : update to `$(MULLVAD_BROWSER_BUILD_N)`
 | |
| 40 | +  - [ ] `var/torbrowser_incremental_from` : update to previous Desktop version
 | |
| 41 | +    - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make mullvadbrowser-incrementals-*` step will fail
 | |
| 42 | +- [ ] Update build configs
 | |
| 43 | +  - [ ] Update `projects/firefox/config`
 | |
| 44 | +    - [ ] `browser_build` : update to match `mullvad-browser` tag
 | |
| 45 | +    - [ ] ***(Optional)*** `var/firefox_platform_version` : update to latest `$(ESR_VERSION)` if rebased
 | |
| 46 | +  - [ ] Update `projects/translation/config`:
 | |
| 47 | +    - [ ] run `make list_translation_updates-alpha` to get updated hashes
 | |
| 48 | +    - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
 | |
| 49 | +    - [ ] `steps/base-browser-fluent/git_hash` : update with `HEAD` commit of project's `basebrowser-newidentityftl` branch
 | |
| 50 | +- [ ] Update common build configs
 | |
| 51 | +  - [ ] Check for NoScript updates here : https://addons.mozilla.org/en-US/firefox/addon/noscript
 | |
| 52 | +    - [ ] ***(Optional)*** If new version available, update `noscript` section of `input_files` in `projects/browser/config`
 | |
| 53 | +      - [ ] `URL`
 | |
| 54 | +      - [ ] `sha256sum`
 | |
| 55 | +  - [ ] Check for uBlock-origin updates here : https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/
 | |
| 56 | +    - [ ] ***(Optional)*** If new version available, update `ublock-origin` section of `input_files` in `projects/browser/config`
 | |
| 57 | +      - [ ] `URL`
 | |
| 58 | +      - [ ] `sha256sum`
 | |
| 59 | +  - [ ] Check for Mullvad Privacy Companion updates here : https://github.com/mullvad/browser-extension/releases
 | |
| 60 | +    - [ ] ***(Optional)*** If new version available, update `mullvad-extension` section of `input_files` in `projects/browser/config`
 | |
| 61 | +      - [ ] `URL`
 | |
| 62 | +      - [ ] `sha256sum`
 | |
| 63 | +- [ ] Open MR with above changes
 | |
| 64 | +- [ ] Merge
 | |
| 65 | +- [ ] Sign/Tag commit: `make mullvadbrowser-signtag-alpha`
 | |
| 66 | +- [ ] Push tag to `origin`
 | |
| 67 | +- [ ] Begin build on `$(BUILD_SERVER)` (fix any issues in subsequent MRs)
 | |
| 68 | +- [ ] **TODO** Submit build-tag to Mullvad build infra
 | |
| 69 | +- [ ] Ensure builders have matching builds
 | |
| 70 | + | |
| 71 | +</details>
 | |
| 72 | + | |
| 73 | +<details>
 | |
| 74 | +  <summary>QA</summary>
 | |
| 75 | + | |
| 76 | +### send the build
 | |
| 77 | + | |
| 78 | +  - [ ] Email Mullvad QA: support@xxxxxxxxxxx, rui@xxxxxxxxxxx
 | |
| 79 | +    <details>
 | |
| 80 | +      <summary>email template</summary>
 | |
| 81 | + | |
| 82 | +        Subject:
 | |
| 83 | +        New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (unsigned)
 | |
| 84 | + | |
| 85 | +        Body:
 | |
| 86 | +        unsigned builds: https://tb-build-05.torproject.org/~$(BUILDER)/builds/mullvadbrowser/release/unsigned/$(MB_BUILD_TAG)
 | |
| 87 | + | |
| 88 | +        changelog:
 | |
| 89 | +        ...
 | |
| 90 | + | |
| 91 | +    </details>
 | |
| 92 | + | |
| 93 | +    - ***(Optional)*** Add additional information:
 | |
| 94 | +      - [ ] Note any new functionality which needs testing
 | |
| 95 | +      - [ ] Link to any known issues
 | |
| 96 | + | |
| 97 | +</details>
 | |
| 98 | + | |
| 99 | +<details>
 | |
| 100 | +  <summary>Signing</summary>
 | |
| 101 | + | |
| 102 | +### signing
 | |
| 103 | +- [ ] On `$(STAGING_SERVER)`, ensure updated:
 | |
| 104 | +  - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
 | |
| 105 | +    - `ssh_host_builder` : ssh hostname of machine with unsigned builds
 | |
| 106 | +      - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
 | |
| 107 | +    - `ssh_host_linux_signer` : ssh hostname of linux signing machine
 | |
| 108 | +    - `ssh_host_macos_signer` : ssh hostname of macOS signing machine
 | |
| 109 | +  - [ ] `tor-browser-build/tools/signing/set-config.macos-notarization`
 | |
| 110 | +    - `macos_notarization_user` : the email login for a mullvad notariser Apple Developer account
 | |
| 111 | +  - [ ] `set-config.update-responses`
 | |
| 112 | +    - `update_responses_repository_dir` : directory where you cloned `git@xxxxxxxxxxxxxxxxxxxxx:tpo/applications/mullvad-browser-update-responses.git`
 | |
| 113 | +  - [ ] `tor-browser-build/tools/signing/set-config.tbb-version`
 | |
| 114 | +    - `tbb_version` : mullvad browser version string, same as `var/torbrowser_version` in `rbm.conf` (examples: `11.5a12`, `11.0.13`)
 | |
| 115 | +    - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
 | |
| 116 | +    - `tbb_version_type` : either `alpha` for alpha releases or `release` for stable releases
 | |
| 117 | +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, run the macOS proxy script:
 | |
| 118 | +    - `cd tor-browser-build/tools/signing/`
 | |
| 119 | +    - `./macos-signer-proxy`
 | |
| 120 | +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
 | |
| 121 | +- [ ] run do-all-signing script:
 | |
| 122 | +    - `cd tor-browser-build/tools/signing/`
 | |
| 123 | +    - `./do-all-signing.mullvadbrowser`
 | |
| 124 | +- **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
 | |
| 125 | +- [ ] Update `staticiforme.torproject.org`:
 | |
| 126 | +  - From `screen` session on `staticiforme.torproject.org`:
 | |
| 127 | +  - [ ] Static update components : `static-update-component dist.torproject.org`
 | |
| 128 | +  - [ ] Remove old release data from `/srv/dist-master.torproject.org/htdocs/mullvadbrowser`
 | |
| 129 | +  - [ ] Static update components (again) : `static-update-component dist.torproject.org`
 | |
| 130 | + | |
| 131 | +</details>
 | |
| 132 | + | |
| 133 | +<details>
 | |
| 134 | +  <summary>Publishing</summary>
 | |
| 135 | + | |
| 136 | +### email
 | |
| 137 | + | |
| 138 | +- [ ] Email Mullvad with release information: support@xxxxxxxxxxx, rui@xxxxxxxxxxx
 | |
| 139 | +  <details>
 | |
| 140 | +    <summary>email template</summary>
 | |
| 141 | + | |
| 142 | +      Subject:
 | |
| 143 | +      New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (signed)
 | |
| 144 | + | |
| 145 | +      Body:
 | |
| 146 | +      signed builds: https://dist.torproject.org/mullvadbrowser/$(MULLVAD_BROWSER_VERSION)
 | |
| 147 | + | |
| 148 | +      update_response hashes: $(MULLVAD_UPDATE_RESPONSES_HASH)
 | |
| 149 | + | |
| 150 | +      changelog:
 | |
| 151 | +      ...
 | |
| 152 | + | |
| 153 | +  </details>
 | |
| 154 | + | |
| 155 | +### mullvad-browser (github): https://github.com/mullvad/mullvad-browser/
 | |
| 156 | +- [ ] Push this release's associated `mullvad-browser.git` branch to github
 | |
| 157 | +- [ ] Push this release's associated tags to github:
 | |
| 158 | +  - [ ] Firefox ESR tag
 | |
| 159 | +    - **example** : `FIREFOX_102_12_0esr_BUILD1,`
 | |
| 160 | +  - [ ] `base-browser` tag
 | |
| 161 | +    - **example** : `base-browser-102.12.0esr-12.0-1-build1`
 | |
| 162 | +  - [ ] `mullvad-browser` tag
 | |
| 163 | +    - **example** : `mullvad-browser-102.12.0esr-12.0-1-build1`
 | |
| 164 | +- [ ] Sign+Tag additionally the `mullvad-browser.git` `firefox` commit used in build:
 | |
| 165 | +  - **Tag**: `$(MULLVAD_BROWSER_VERSION)`
 | |
| 166 | +    - **example** : `12.5a7`
 | |
| 167 | +  - **Message**: `$(ESR_VERSION)esr-based $(MULLVAD_BROWSER_VERSION)`
 | |
| 168 | +    - **example** : `102.12.0esr-based 12.5a7`
 | |
| 169 | +  - [ ] Push tag to github
 | |
| 170 | + | |
| 171 | +</details>
 | |
| 172 | + | |
| 173 | +<details>
 | |
| 174 | +  <summary>Downstream</summary>
 | |
| 175 | + | |
| 176 | +### notify packagers
 | |
| 177 | + | |
| 178 | +- [ ] **(Optional, Once Mullvad Updates their Github Releases Page)** Email downstream consumers:
 | |
| 179 | +  <details>
 | |
| 180 | +    <summary>email template</summary>
 | |
| 181 | + | |
| 182 | +    ...
 | |
| 183 | + | |
| 184 | +    ...
 | |
| 185 | + | |
| 186 | +  </details>
 | |
| 187 | + | |
| 188 | +  - **NOTE**: This is an optional step and only necessary close a major release/transition from alpha to stable, or if there are major packing changes these developers need to be aware of
 | |
| 189 | +  - [ ] flathub package maintainer: proletarius101@xxxxxxxxxxxxxx
 | |
| 190 | +  - [ ] arch package maintainer: bootctl@xxxxxxxxx
 | |
| 191 | +  - [ ] nixOS package maintainer: dev@xxxxxxxxxxx
 | |
| 192 | + | |
| 193 | +</details>
 | |
| 194 | + | |
| 195 | +/label ~"Release Prep" | 
| ... | ... | @@ -2,32 +2,36 @@ | 
| 2 | 2 |    <summary>Explanation of variables</summary>
 | 
| 3 | 3 | |
| 4 | 4 |  - `$(BUILD_SERVER)` : the server the main builder is using to build a mullvad-browser release
 | 
| 5 | +- `$(BUILDER)` : whomever is building the release on the $(BUILD_SERVER)
 | |
| 6 | +  - **example** : `pierov`
 | |
| 5 | 7 |  - `$(STAGING_SERVER)` : the server the signer is using to to run the signing process
 | 
| 6 | 8 |  - `$(ESR_VERSION)` : the Mozilla defined ESR version, used in various places for building mullvad-browser tags, labels, etc
 | 
| 7 | -  - example : `91.6.0`
 | |
| 9 | +  - **example** : `91.6.0`
 | |
| 8 | 10 |  - `$(MULLVAD_BROWSER_MAJOR)` : the Mullvad Browser major version
 | 
| 9 | -  - example : `11`
 | |
| 11 | +  - **example** : `11`
 | |
| 10 | 12 |  - `$(MULLVAD_BROWSER_MINOR)` : the Mullvad Browser minor version
 | 
| 11 | -  - example : either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
 | |
| 13 | +  - **example** : either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
 | |
| 12 | 14 |  - `$(MULLVAD_BROWSER_VERSION)` : the Mullvad Browser version in the format
 | 
| 13 | -  - example: `12.5a3`, `12.0.3`
 | |
| 15 | +  - **example** : `12.5a3`, `12.0.3`
 | |
| 14 | 16 |  - `$(BUILD_N)` : a project's build revision within a its branch; this is separate from the `$(MULLVAD_BROWSER_BUILD_N)` value; many of the Firefox-related projects have a `$(BUILD_N)` suffix and may differ between projects even when they contribute to the same build.
 | 
| 15 | -    - example : `build1`
 | |
| 17 | +    - **example** : `build1`
 | |
| 16 | 18 |  - `$(MULLVAD_BROWSER_BUILD_N)` : the mullvad-browser build revision for a given Mullvad Browser release; used in tagging git commits
 | 
| 17 | -    - example : `build2`
 | |
| 18 | -    - **NOTE** : A project's `$(BUILD_N)` and `$(MULLVAD_BROWSER_BUILD_N)` may be the same, but it is possible for them to diverge. For example :
 | |
| 19 | -        - if we have multiple Mullvad Browser releases on a given ESR branch the two will become out of sync as the `$(BUILD_N)` value will increase, while the `$(MULLVAD_BROWSER_BUILD_N)` value may stay at `build1` (but the `$(MULLVAD_BROWSER_VERSION)` will increase)
 | |
| 20 | -        - if we have build failures unrelated to `mullvad-browser`, the `$(MULLVAD_BROWSER_BUILD_N)` value will increase while the `$(BUILD_N)` will stay the same.
 | |
| 19 | +    - **example** : `build2`
 | |
| 20 | +    - **NOTE** : A project's `$(BUILD_N)` and `$(MULLVAD_BROWSER_BUILD_N)` may be the same, but it is possible for them to diverge. For **example** :
 | |
| 21 | +      - if we have multiple Mullvad Browser releases on a given ESR branch the two will become out of sync as the `$(BUILD_N)` value will increase, while the `$(MULLVAD_BROWSER_BUILD_N)` value may stay at `build1` (but the `$(MULLVAD_BROWSER_VERSION)` will increase)
 | |
| 22 | +      - if we have build failures unrelated to `mullvad-browser`, the `$(MULLVAD_BROWSER_BUILD_N)` value will increase while the `$(BUILD_N)` will stay the same.
 | |
| 21 | 23 |  - `$(MULLVAD_BROWSER_VERSION)` : the published Mullvad Browser version
 | 
| 22 | -    - example : `11.5a6`, `11.0.7`
 | |
| 24 | +    - **example** : `11.5a6`, `11.0.7`
 | |
| 25 | +- `$(MB_BUILD_TAG)` : the `tor-browser-build` build tag used to build a given Mullvad Browser version
 | |
| 26 | +    - **example** : `mb-12.0.7-build1`
 | |
| 23 | 27 |  </details>
 | 
| 24 | 28 | |
| 25 | -**NOTE** It is assumed that the `tor-browser` rebase and security backport tasks have been completed
 | |
| 29 | +**NOTE** It is assumed that the `tor-browser` stable rebase and security backport tasks have been completed
 | |
| 26 | 30 | |
| 27 | 31 |  <details>
 | 
| 28 | -  <summary>Build Configs</summary>
 | |
| 32 | +  <summary>Building</summary>
 | |
| 29 | 33 | |
| 30 | -### tor-browser-build: https://gitlab.mullvadproject.org/tpo/applications/tor-browser-build.git
 | |
| 34 | +### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
 | |
| 31 | 35 |  Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MULLVAD_BROWSER_MINOR)` (and possibly more specific) branches
 | 
| 32 | 36 | |
| 33 | 37 |  - [ ] Update `rbm.conf`
 | 
| ... | ... | @@ -57,30 +61,55 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU | 
| 57 | 61 |        - [ ] `URL`
 | 
| 58 | 62 |        - [ ] `sha256sum`
 | 
| 59 | 63 |  - [ ] Open MR with above changes
 | 
| 60 | -- [ ] Begin build on `$(BUILD_SERVER)` (and fix any issues which come up and update MR)
 | |
| 61 | 64 |  - [ ] Merge
 | 
| 62 | 65 |  - [ ] Sign/Tag commit: `make mullvadbrowser-signtag-release`
 | 
| 63 | 66 |  - [ ] Push tag to `origin`
 | 
| 67 | +- [ ] Begin build on `$(BUILD_SERVER)` (fix any issues in subsequent MRs)
 | |
| 68 | +- [ ] **TODO** Submit build-tag to Mullvad build infra
 | |
| 69 | +- [ ] Ensure builders have matching builds
 | |
| 70 | + | |
| 71 | +</details>
 | |
| 72 | + | |
| 73 | +<details>
 | |
| 74 | +  <summary>QA</summary>
 | |
| 75 | + | |
| 76 | +### send the build
 | |
| 77 | + | |
| 78 | +  - [ ] Email Mullvad QA: support@xxxxxxxxxxx, rui@xxxxxxxxxxx
 | |
| 79 | +    <details>
 | |
| 80 | +      <summary>email template</summary>
 | |
| 81 | + | |
| 82 | +        Subject:
 | |
| 83 | +        New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (unsigned)
 | |
| 84 | + | |
| 85 | +        Body:
 | |
| 86 | +        unsigned builds: https://tb-build-05.torproject.org/~$(BUILDER)/builds/mullvadbrowser/release/unsigned/$(MB_BUILD_TAG)
 | |
| 87 | + | |
| 88 | +        changelog:
 | |
| 89 | +        ...
 | |
| 90 | + | |
| 91 | +    </details>
 | |
| 92 | + | |
| 93 | +    - ***(Optional)*** Add additional information:
 | |
| 94 | +      - [ ] Note any new functionality which needs testing
 | |
| 95 | +      - [ ] Link to any known issues
 | |
| 64 | 96 | |
| 65 | 97 |  </details>
 | 
| 66 | 98 | |
| 67 | 99 |  <details>
 | 
| 68 | 100 |    <summary>Signing</summary>
 | 
| 69 | 101 | |
| 70 | -### signing + publishing
 | |
| 71 | -- [ ] Ensure builders have matching builds
 | |
| 102 | +### signing
 | |
| 72 | 103 |  - [ ] On `$(STAGING_SERVER)`, ensure updated:
 | 
| 73 | -  - [ ] `tor-browser-build/tools/signing/set-config`
 | |
| 74 | -    - `NSS_DB_DIR` : location of the `nssdb7` direcmullvady
 | |
| 75 | 104 |    - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
 | 
| 76 | 105 |      - `ssh_host_builder` : ssh hostname of machine with unsigned builds
 | 
| 77 | -      - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` direcmullvady)
 | |
| 106 | +      - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
 | |
| 78 | 107 |      - `ssh_host_linux_signer` : ssh hostname of linux signing machine
 | 
| 79 | 108 |      - `ssh_host_macos_signer` : ssh hostname of macOS signing machine
 | 
| 80 | 109 |    - [ ] `tor-browser-build/tools/signing/set-config.macos-notarization`
 | 
| 81 | 110 |      - `macos_notarization_user` : the email login for a mullvad notariser Apple Developer account
 | 
| 82 | 111 |    - [ ] `set-config.update-responses`
 | 
| 83 | -    - `update_responses_reposimullvady_dir` : direcmullvady where you cloned `git@gitlab.mullvadproject.org:tpo/applications/mullvad-browser-update-responses.git`
 | |
| 112 | +    - `update_responses_repository_dir` : directory where you cloned `git@gitlab.torproject.org:tpo/applications/mullvad-browser-update-responses.git`
 | |
| 84 | 113 |    - [ ] `tor-browser-build/tools/signing/set-config.tbb-version`
 | 
| 85 | 114 |      - `tbb_version` : mullvad browser version string, same as `var/torbrowser_version` in `rbm.conf` (examples: `11.5a12`, `11.0.13`)
 | 
| 86 | 115 |      - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
 | 
| ... | ... | @@ -91,7 +120,7 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU | 
| 91 | 120 |  - [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
 | 
| 92 | 121 |  - [ ] run do-all-signing script:
 | 
| 93 | 122 |      - `cd tor-browser-build/tools/signing/`
 | 
| 94 | -    - `./do-all-signing.sh`
 | |
| 123 | +    - `./do-all-signing.mullvadbrowser`
 | |
| 95 | 124 |  - **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
 | 
| 96 | 125 |  - [ ] Update `staticiforme.torproject.org`:
 | 
| 97 | 126 |    - From `screen` session on `staticiforme.torproject.org`:
 | 
| ... | ... | @@ -101,19 +130,64 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU | 
| 101 | 130 | |
| 102 | 131 |  </details>
 | 
| 103 | 132 | |
| 133 | +<details>
 | |
| 134 | +  <summary>Publishing</summary>
 | |
| 135 | + | |
| 136 | +### email
 | |
| 137 | + | |
| 138 | +- [ ] Email Mullvad with release information: support@xxxxxxxxxxx, rui@xxxxxxxxxxx
 | |
| 139 | +  <details>
 | |
| 140 | +    <summary>email template</summary>
 | |
| 141 | + | |
| 142 | +      Subject:
 | |
| 143 | +      New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (signed)
 | |
| 144 | + | |
| 145 | +      Body:
 | |
| 146 | +      signed builds: https://dist.torproject.org/mullvadbrowser/$(MULLVAD_BROWSER_VERSION)
 | |
| 147 | + | |
| 148 | +      update_response hashes: $(MULLVAD_UPDATE_RESPONSES_HASH)
 | |
| 149 | + | |
| 150 | +      changelog:
 | |
| 151 | +      ...
 | |
| 152 | + | |
| 153 | +  </details>
 | |
| 154 | + | |
| 155 | +### mullvad-browser (github): https://github.com/mullvad/mullvad-browser/
 | |
| 156 | +- [ ] Push this release's associated `mullvad-browser.git` branch to github
 | |
| 157 | +- [ ] Push this release's associated tags to github:
 | |
| 158 | +  - [ ] Firefox ESR tag
 | |
| 159 | +    - **example** : `FIREFOX_102_12_0esr_BUILD1,`
 | |
| 160 | +  - [ ] `base-browser` tag
 | |
| 161 | +    - **example** : `base-browser-102.12.0esr-12.0-1-build1`
 | |
| 162 | +  - [ ] `mullvad-browser` tag
 | |
| 163 | +    - **example** : `mullvad-browser-102.12.0esr-12.0-1-build1`
 | |
| 164 | +- [ ] Sign+Tag additionally the `mullvad-browser.git` `firefox` commit used in build:
 | |
| 165 | +  - **Tag**: `$(MULLVAD_BROWSER_VERSION)`
 | |
| 166 | +    - **example** : `12.0.7`
 | |
| 167 | +  - **Message**: `$(ESR_VERSION)esr-based $(MULLVAD_BROWSER_VERSION)`
 | |
| 168 | +    - **example** : `102.12.0esr-based 12.0.7`
 | |
| 169 | +  - [ ] Push tag to github
 | |
| 170 | + | |
| 171 | +</details>
 | |
| 172 | + | |
| 104 | 173 |  <details>
 | 
| 105 | 174 |    <summary>Downstream</summary>
 | 
| 106 | 175 | |
| 107 | -### notify stakeholders
 | |
| 176 | +### notify packagers
 | |
| 177 | + | |
| 178 | +- [ ] **(Once Mullvad Updates their Github Releases Page)** Email downstream consumers:
 | |
| 179 | +  <details>
 | |
| 180 | +    <summary>email template</summary>
 | |
| 181 | + | |
| 182 | +    ...
 | |
| 183 | + | |
| 184 | +    ...
 | |
| 185 | + | |
| 186 | +  </details>
 | |
| 108 | 187 | |
| 109 | -- [ ] Email Mullvad with release information: rui@xxxxxxxxxxx
 | |
| 110 | -  - [ ] Build artifact download list
 | |
| 111 | -  - [ ] New `mullvad-browser` project branch and tags
 | |
| 112 | -  - [ ] mullvad-browser-update-responses git hash
 | |
| 113 | -  - [ ] changelog
 | |
| 114 | -- [ ] Email downstream consumers:
 | |
| 115 | 188 |    - [ ] flathub package maintainer: proletarius101@xxxxxxxxxxxxxx
 | 
| 116 | 189 |    - [ ] arch package maintainer: bootctl@xxxxxxxxx
 | 
| 190 | +  - [ ] nixOS package maintainer: dev@xxxxxxxxxxx
 | |
| 117 | 191 | |
| 118 | 192 |  ### merge requests
 | 
| 119 | 193 | 
| ... | ... | @@ -2,28 +2,34 @@ | 
| 2 | 2 |    <summary>Explanation of variables</summary>
 | 
| 3 | 3 | |
| 4 | 4 |  - `$(BUILD_SERVER)` : the server the main builder is using to build a tor-browser release
 | 
| 5 | +- `$(BUILDER)` : whomever is building the release on the $(BUILD_SERVER)
 | |
| 6 | +  - **example** : `pierov`
 | |
| 5 | 7 |  - `$(STAGING_SERVER)` : the server the signer is using to to run the signing process
 | 
| 6 | 8 |  - `$(ESR_VERSION)` : the Mozilla defined ESR version, used in various places for building tor-browser tags, labels, etc
 | 
| 7 | -    - example : `91.6.0`
 | |
| 9 | +  - **example** : `91.6.0`
 | |
| 8 | 10 |  - `$(TOR_BROWSER_MAJOR)` : the Tor Browser major version
 | 
| 9 | -    - example : `11`
 | |
| 11 | +  - **example** : `11`
 | |
| 10 | 12 |  - `$(TOR_BROWSER_MINOR)` : the Tor Browser minor version
 | 
| 11 | -    - example : either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
 | |
| 13 | +  - **example** : either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
 | |
| 14 | +- `$(TOR_BROWSER_VERSION)` : the Tor Browser version in the format
 | |
| 15 | +  - **example** : `12.5a3`, `12.0.3`
 | |
| 12 | 16 |  - `$(BUILD_N)` : a project's build revision within a its branch; this is separate from the `$(TOR_BROWSER_BUILD_N)` value; many of the Firefox-related projects have a `$(BUILD_N)` suffix and may differ between projects even when they contribute to the same build.
 | 
| 13 | -    - example : `build1`
 | |
| 17 | +  - **example** : `build1`
 | |
| 14 | 18 |  - `$(TOR_BROWSER_BUILD_N)` : the tor-browser build revision for a given Tor Browser release; used in tagging git commits
 | 
| 15 | -    - example : `build2`
 | |
| 16 | -    - **NOTE** : A project's `$(BUILD_N)` and `$(TOR_BROWSER_BUILD_N)` may be the same, but it is possible for them to diverge. For example :
 | |
| 17 | -        - if we have multiple Tor Browser releases on a given ESR branch the two will become out of sync as the `$(BUILD_N)` value will increase, while the `$(TOR_BROWSER_BUILD_N)` value may stay at `build1` (but the `$(TOR_BROWSER_VERSION)` will increase)
 | |
| 18 | -        - if we have build failures unrelated to `tor-browser`, the `$(TOR_BROWSER_BUILD_N)` value will increase while the `$(BUILD_N)` will stay the same.
 | |
| 19 | +  - **example** : `build2`
 | |
| 20 | +  - **NOTE** : A project's `$(BUILD_N)` and `$(TOR_BROWSER_BUILD_N)` may be the same, but it is possible for them to diverge. For example :
 | |
| 21 | +    - if we have multiple Tor Browser releases on a given ESR branch the two will become out of sync as the `$(BUILD_N)` value will increase, while the `$(TOR_BROWSER_BUILD_N)` value may stay at `build1` (but the `$(TOR_BROWSER_VERSION)` will increase)
 | |
| 22 | +    - if we have build failures unrelated to `tor-browser`, the `$(TOR_BROWSER_BUILD_N)` value will increase while the `$(BUILD_N)` will stay the same.
 | |
| 19 | 23 |  - `$(TOR_BROWSER_VERSION)` : the published Tor Browser version
 | 
| 20 | -    - example : `11.5a6`, `11.0.7`
 | |
| 24 | +    - **example** : `11.5a6`, `11.0.7`
 | |
| 25 | +- `$(TBB_BUILD_TAG)` : the `tor-browser-build` build tag used to build a given Tor Browser version
 | |
| 26 | +    - **example** : `tbb-12.5a7-build1`
 | |
| 21 | 27 |  </details>
 | 
| 22 | 28 | |
| 23 | -**NOTE** It is assumed that the `tor-browser` rebase and security backport tasks have been completed
 | |
| 29 | +**NOTE** It is assumed that the `tor-browser` stable rebase and security backport tasks have been completed
 | |
| 24 | 30 | |
| 25 | 31 |  <details>
 | 
| 26 | -  <summary>Build Updates</summary>
 | |
| 32 | +  <summary>Building</summary>
 | |
| 27 | 33 | |
| 28 | 34 |  ### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
 | 
| 29 | 35 |  Tor Browser Alpha (and Nightly) are on the `main` branch
 | 
| ... | ... | @@ -44,7 +50,7 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 44 | 50 |      - [ ] `steps/tor-browser/git_hash` : update with `HEAD` commit of project's `tor-browser` branch
 | 
| 45 | 51 |      - [ ] `steps/fenix/git_hash` : update with `HEAD` commit of project's `fenix-torbrowserstringsxml` branch
 | 
| 46 | 52 |  - [ ] Update Android-specific build configs
 | 
| 47 | -  - [ ] ***(Optional)*** Update `projects/geckoview/config`
 | |
| 53 | +  - [ ] Update `projects/geckoview/config`
 | |
| 48 | 54 |      - [ ] `browser_build` : update to match `tor-browser` tag
 | 
| 49 | 55 |      - [ ] ***(Optional)*** `var/geckoview_version` : update to latest `$(ESR_VERSION)` if rebased
 | 
| 50 | 56 |    - [ ] ***(Optional)*** Update `projects/tor-android-service/config`
 | 
| ... | ... | @@ -56,7 +62,6 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 56 | 62 |      - [ ] `android_components_build` : update to match alpha android-components tag
 | 
| 57 | 63 |    - [ ] ***(Optional)*** Update `projects/fenix/config`
 | 
| 58 | 64 |      - [ ] `fenix_build` : update to match fenix tag
 | 
| 59 | -    - [ ] ***(Optional)*** `var/fenix_version` : update to latest `$(ESR_VERSION)` if rebased
 | |
| 60 | 65 |    - [ ] Update allowed_addons.json by running (from `tor-browser-build` root):
 | 
| 61 | 66 |      - `./tools/fetch_allowed_addons.py > projects/browser/allowed_addons.json`
 | 
| 62 | 67 |  - [ ] Update common build configs
 | 
| ... | ... | @@ -79,14 +84,13 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 79 | 84 |      - [ ] ***(Optional)*** Update `projects/go/config`
 | 
| 80 | 85 |        - [ ] `version` : update go version
 | 
| 81 | 86 |        - [ ] `input_files/sha256sum` for `go` : update sha256sum of archive (sha256 sums are displayed on the go download page)
 | 
| 82 | -  - [ ] Update the manual : https://gitlab.torproject.org/tpo/web/manual/-/jobs/
 | |
| 83 | -    - [ ] Download the `artifacts.zip` file from latest build stage row (download icon button on the right)
 | |
| 84 | -    - [ ] Rename it to `manual_$PIPELINEID.zip`
 | |
| 85 | -    - [ ] Upload it to people.tpo
 | |
| 86 | -    - [ ] Update `projects/manual/config`
 | |
| 87 | -      - [ ] Change the version to `$PIPELINEID`
 | |
| 88 | -      - [ ] Update the hash in the input_files section
 | |
| 89 | -      - [ ] Update the URL if you have uploaded to a different people.tpo home
 | |
| 87 | +  - [ ] Check for manual updates by running (from `tor-browser-build` root): `./tools/fetch-manual.py`
 | |
| 88 | +    - [ ] ***(Optional)*** If new version is available:
 | |
| 89 | +      - [ ] Upload the downloaded `manual_$PIPELINEID.zip` file to people.tpo
 | |
| 90 | +      - [ ] Update `projects/manual/config`:
 | |
| 91 | +        - [ ] Change the `version` to `$PIPELINEID`
 | |
| 92 | +        - [ ] Update `sha256sum` in the `input_files` section
 | |
| 93 | +        - [ ] ***(Optional)*** Update the URL if you have uploaded to a different people.tpo home
 | |
| 90 | 94 |  - [ ] Update `ChangeLog.txt`
 | 
| 91 | 95 |    - [ ] Ensure ChangeLog.txt is sync'd between alpha and stable branches
 | 
| 92 | 96 |    - [ ] Check the linked issues: ask people to check if any are missing, remove the not fixed ones
 | 
| ... | ... | @@ -94,19 +98,26 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 94 | 98 |      - Make sure you have `requests` installed (e.g., `apt install python3-requests`)
 | 
| 95 | 99 |      - The first time you run this script you will need to generate an access token; the script will guide you
 | 
| 96 | 100 |    - [ ] Copy the output of the script to the beginning of `ChangeLog.txt` and adjust its output
 | 
| 97 | -    - If you used the issue number, you will need to write the Tor Browser version manually
 | |
| 98 | -  - [ ] Include any version updates for:
 | |
| 99 | -    - [ ] translations
 | |
| 100 | -    - [ ] OpenSSL
 | |
| 101 | -    - [ ] NoScript
 | |
| 101 | +    - **NOTE** : If you used the issue number, you will need to write the Tor Browser version manually
 | |
| 102 | +  - [ ] ***(Optional)*** Under `All Platforms` include any version updates for:
 | |
| 103 | +    - [ ] Translations
 | |
| 104 | +    - [ ]OpenSSL
 | |
| 105 | +    - [ ]NoScript
 | |
| 106 | +    - [ ]zlib
 | |
| 107 | +    - [ ] tor daemon
 | |
| 108 | +  - [ ] ***(Optional)*** Under `Windows + macOS + Linux` include updates for:
 | |
| 109 | +    - [ ] Firefox
 | |
| 110 | +  - [ ] ***(Optional)*** Under `Android`, include updates for:
 | |
| 111 | +    - [ ] Geckoview
 | |
| 112 | +  - [ ] ***(Optional)*** Under `Build System/All Platforms` include updates for:
 | |
| 102 | 113 |      - [ ] Go
 | 
| 103 | -    - [ ] zlib
 | |
| 104 | -  - [ ] Include any ESR rebase for Firefox and GeckoView
 | |
| 105 | 114 |  - [ ] Open MR with above changes
 | 
| 106 | -- [ ] Begin build on `$(BUILD_SERVER)` (fix any issues which come up and update MR)
 | |
| 107 | 115 |  - [ ] Merge
 | 
| 108 | 116 |  - [ ] Sign/Tag commit: `make torbrowser-signtag-alpha`
 | 
| 109 | 117 |  - [ ] Push tag to `origin`
 | 
| 118 | +- [ ] Begin build on `$(BUILD_SERVER)` (fix any issues in subsequent MRs)
 | |
| 119 | +- [ ] **TODO** Submit build-tag to Mullvad build infra
 | |
| 120 | +- [ ] Ensure builders have matching builds
 | |
| 110 | 121 | |
| 111 | 122 |  </details>
 | 
| 112 | 123 | |
| ... | ... | @@ -118,6 +129,10 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 118 | 129 |    <details>
 | 
| 119 | 130 |      <summary>email template</summary>
 | 
| 120 | 131 | |
| 132 | +      Subject:
 | |
| 133 | +      Tor Browser $(TOR_BROWSER_VERION) (Android, Windows, macOS, Linux)
 | |
| 134 | + | |
| 135 | +      Body:
 | |
| 121 | 136 |        Hello All,
 | 
| 122 | 137 | |
| 123 | 138 |        Unsigned Tor Browser $(TOR_BROWSER_VERSION) alpha candidate builds are now available for testing:
 | 
| ... | ... | @@ -126,15 +141,15 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 126 | 141 | |
| 127 | 142 |        The full changelog can be found here:
 | 
| 128 | 143 | |
| 129 | -      - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/raw/main/projects/browser/Bundle-Data/Docs/ChangeLog.txt
 | |
| 144 | +      - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/blob/$(TBB_BUILD_TAG)/ChangeLog.txt
 | |
| 130 | 145 | |
| 131 | 146 |    </details>
 | 
| 132 | 147 | |
| 133 | 148 |  - [ ] Email tor-qa mailing list: tor-qa@xxxxxxxxxxxxxxxxxxxx
 | 
| 134 | -  - Additional information:
 | |
| 149 | +  - ***(Optional)*** Additional information:
 | |
| 135 | 150 |      - [ ] Note any new functionality which needs testing
 | 
| 136 | 151 |      - [ ] Link to any known issues
 | 
| 137 | -- [ ] ***(Optional, only around build/packaging changes)*** Email downstream consumers:
 | |
| 152 | +- [ ] ***(Optional, only around build/packaging changes)*** Email packagers:
 | |
| 138 | 153 |    - Recipients:
 | 
| 139 | 154 |      - Tails dev mailing list: tails-dev@xxxxxxxx
 | 
| 140 | 155 |      - Guardian Project: nathan@xxxxxxxxxxxxxxxxxxxx
 | 
| ... | ... | @@ -142,7 +157,7 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 142 | 157 |      - FreeBSD port: freebsd@xxxxxxxxx <!-- Gitlab user maxfx -->
 | 
| 143 | 158 |      - OpenBSD port: caspar@xxxxxxxxxxxxxx <!-- Gitlab user cschutijser -->
 | 
| 144 | 159 |    - [ ] Note any changes which may affect packaging/downstream integration
 | 
| 145 | -- [ ] Email upstream stakeholders:
 | |
| 160 | +- [ ] Email external partners:
 | |
| 146 | 161 |    - ***(Optional, after ESR migration)*** Cloudflare: ask-research@xxxxxxxxxxxxxx
 | 
| 147 | 162 |      - **NOTE** :  We need to provide them with updated user agent string so they can update their internal machinery to prevent Tor Browser users from getting so many CAPTCHAs
 | 
| 148 | 163 | |
| ... | ... | @@ -151,11 +166,9 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 151 | 166 |  <details>
 | 
| 152 | 167 |    <summary>Signing</summary>
 | 
| 153 | 168 | |
| 154 | -### signing + publishing
 | |
| 155 | -- [ ] Ensure builders have matching builds
 | |
| 169 | +### signing
 | |
| 170 | +- **NOTE** : In practice, it's most efficient to have the blog post and website updates ready to merge, since signing doesn't take very long
 | |
| 156 | 171 |  - [ ] On `$(STAGING_SERVER)`, ensure updated:
 | 
| 157 | -  - [ ] `tor-browser-build/tools/signing/set-config`
 | |
| 158 | -    - `NSS_DB_DIR` : location of the `nssdb7` directory
 | |
| 159 | 172 |    - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
 | 
| 160 | 173 |      - `ssh_host_builder` : ssh hostname of machine with unsigned builds
 | 
| 161 | 174 |        - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
 | 
| ... | ... | @@ -182,7 +195,7 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 182 | 195 |    - [ ] Static update components : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
 | 
| 183 | 196 |    - [ ] Enable update responses : `sudo -u tb-release ./deploy_update_responses-alpha.sh`
 | 
| 184 | 197 |    - [ ] Remove old release data from following places:
 | 
| 185 | -    - **NOTE** : Skip this step if the current release is Android or Desktop *only*
 | |
| 198 | +    - **NOTE** : Skip this step if we need to hold on to older versions for some reason (for example, this is an Andoid or Desktop-only release, or if we need to hold back installers in favor of build-to-build updates if there are signing issues, etc)
 | |
| 186 | 199 |      - [ ] `/srv/cdn-master.torproject.org/htdocs/aus1/torbrowser`
 | 
| 187 | 200 |      - [ ] `/srv/dist-master.torproject.org/htdocs/torbrowser`
 | 
| 188 | 201 |    - [ ] Static update components (again) : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
 | 
| ... | ... | @@ -236,7 +249,24 @@ Tor Browser Alpha (and Nightly) are on the `main` branch | 
| 236 | 249 |  - [ ] Publish after CI passes and website has been updated
 | 
| 237 | 250 | |
| 238 | 251 |  ### tor-announce mailing list
 | 
| 239 | -- [ ] Send an email to tor-announce@xxxxxxxxxxxxxxxxxxxx, using the same content as the blog post and subject "Tor Browser $version is released".
 | |
| 252 | +  <details>
 | |
| 253 | +    <summary>email template</summary>
 | |
| 254 | + | |
| 255 | +      Subject:
 | |
| 256 | +      New Release: Tor Browser $(TOR_BROWSER_VERSION) (Android, Windows, macOS, Linux)
 | |
| 257 | + | |
| 258 | +      Body:
 | |
| 259 | +      Hi everyone,
 | |
| 260 | + | |
| 261 | +      Tor Browser $(TOR_BROWSER_VERSION) has now been published for all platforms. For details please see our blog post:
 | |
| 262 | + | |
| 263 | +      - $(BLOG_POST_URL)
 | |
| 264 | + | |
| 265 | +  </details>
 | |
| 266 | + | |
| 267 | +- [ ] Email tor-announce mailing list: tor-announce@xxxxxxxxxxxxxxxxxxxx
 | |
| 268 | +  - **(Optional)** Additional information:
 | |
| 269 | +    - [ ] Link to any known issues
 | |
| 240 | 270 | |
| 241 | 271 |  </details>
 | 
| 242 | 272 | 
| ... | ... | @@ -2,33 +2,34 @@ | 
| 2 | 2 |    <summary>Explanation of variables</summary>
 | 
| 3 | 3 | |
| 4 | 4 |  - `$(BUILD_SERVER)` : the server the main builder is using to build a tor-browser release
 | 
| 5 | +- `$(BUILDER)` : whomever is building the release on the $(BUILD_SERVER)
 | |
| 6 | +  - **example** : `pierov`
 | |
| 5 | 7 |  - `$(STAGING_SERVER)` : the server the signer is using to to run the signing process
 | 
| 6 | 8 |  - `$(ESR_VERSION)` : the Mozilla defined ESR version, used in various places for building tor-browser tags, labels, etc
 | 
| 7 | -  - example : `91.6.0`
 | |
| 8 | -- `$(ESR_TAG)` : the Mozilla defined hg (Mercurial) tag associated with `$(ESR_VERSION)`
 | |
| 9 | -  - exmaple : `FIREFOX_91_7_0esr_BUILD2`
 | |
| 10 | -- `$(ESR_TAG_PREV)` : the Mozilla defined hg (Mercurial) tag associated with the previous ESR version when rebasing (ie, the ESR version we are rebasing from)
 | |
| 9 | +  - **example** : `91.6.0`
 | |
| 11 | 10 |  - `$(TOR_BROWSER_MAJOR)` : the Tor Browser major version
 | 
| 12 | -  - example : `11`
 | |
| 11 | +  - **example** : `11`
 | |
| 13 | 12 |  - `$(TOR_BROWSER_MINOR)` : the Tor Browser minor version
 | 
| 14 | -  - example : either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
 | |
| 13 | +  - **example** : either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
 | |
| 15 | 14 |  - `$(TOR_BROWSER_VERSION)` : the Tor Browser version in the format
 | 
| 16 | -  - example: `12.5a3`, `12.0.3`
 | |
| 15 | +  - **example** : `12.5a3`, `12.0.3`
 | |
| 17 | 16 |  - `$(BUILD_N)` : a project's build revision within a its branch; this is separate from the `$(TOR_BROWSER_BUILD_N)` value; many of the Firefox-related projects have a `$(BUILD_N)` suffix and may differ between projects even when they contribute to the same build.
 | 
| 18 | -    - example : `build1`
 | |
| 17 | +  - **example** : `build1`
 | |
| 19 | 18 |  - `$(TOR_BROWSER_BUILD_N)` : the tor-browser build revision for a given Tor Browser release; used in tagging git commits
 | 
| 20 | -    - example : `build2`
 | |
| 21 | -    - **NOTE** : A project's `$(BUILD_N)` and `$(TOR_BROWSER_BUILD_N)` may be the same, but it is possible for them to diverge. For example :
 | |
| 22 | -        - if we have multiple Tor Browser releases on a given ESR branch the two will become out of sync as the `$(BUILD_N)` value will increase, while the `$(TOR_BROWSER_BUILD_N)` value may stay at `build1` (but the `$(TOR_BROWSER_VERSION)` will increase)
 | |
| 23 | -        - if we have build failures unrelated to `tor-browser`, the `$(TOR_BROWSER_BUILD_N)` value will increase while the `$(BUILD_N)` will stay the same.
 | |
| 19 | +  - **example** : `build2`
 | |
| 20 | +  - **NOTE** : A project's `$(BUILD_N)` and `$(TOR_BROWSER_BUILD_N)` may be the same, but it is possible for them to diverge. For example :
 | |
| 21 | +    - if we have multiple Tor Browser releases on a given ESR branch the two will become out of sync as the `$(BUILD_N)` value will increase, while the `$(TOR_BROWSER_BUILD_N)` value may stay at `build1` (but the `$(TOR_BROWSER_VERSION)` will increase)
 | |
| 22 | +    - if we have build failures unrelated to `tor-browser`, the `$(TOR_BROWSER_BUILD_N)` value will increase while the `$(BUILD_N)` will stay the same.
 | |
| 24 | 23 |  - `$(TOR_BROWSER_VERSION)` : the published Tor Browser version
 | 
| 25 | -    - example : `11.5a6`, `11.0.7`
 | |
| 24 | +    - **example** : `11.5a6`, `11.0.7`
 | |
| 25 | +- `$(TBB_BUILD_TAG)` : the `tor-browser-build` build tag used to build a given Tor Browser version
 | |
| 26 | +    - **example** : `tbb-12.0.7-build1`
 | |
| 26 | 27 |  </details>
 | 
| 27 | 28 | |
| 28 | -**NOTE** It is assumed that the `tor-browser` rebase and security backport tasks have been completed
 | |
| 29 | +**NOTE** It is assumed that the `tor-browser` stable rebase and security backport tasks have been completed
 | |
| 29 | 30 | |
| 30 | 31 |  <details>
 | 
| 31 | -  <summary>Build Configs</summary>
 | |
| 32 | +  <summary>Building</summary>
 | |
| 32 | 33 | |
| 33 | 34 |  ### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
 | 
| 34 | 35 |  Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSER_MINOR)` (and possibly more specific) branches
 | 
| ... | ... | @@ -37,7 +38,7 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 37 | 38 |    - [ ] `var/torbrowser_version` : update to next version
 | 
| 38 | 39 |    - [ ] `var/torbrowser_build` : update to `$(TOR_BROWSER_BUILD_N)`
 | 
| 39 | 40 |    - [ ] ***(Desktop Only)***`var/torbrowser_incremental_from` : update to previous Desktop version
 | 
| 40 | -    - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make incrementals-*` step will fail
 | |
| 41 | +    - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make torbrowser-incrementals-*` step will fail
 | |
| 41 | 42 |  - [ ] Update Desktop-specific build configs
 | 
| 42 | 43 |    - [ ] Update `projects/firefox/config`
 | 
| 43 | 44 |      - [ ] `browser_build` : update to match `tor-browser` tag
 | 
| ... | ... | @@ -49,7 +50,7 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 49 | 50 |      - [ ] `steps/tor-browser/git_hash` : update with `HEAD` commit of project's `tor-browser` branch
 | 
| 50 | 51 |      - [ ] `steps/fenix/git_hash` : update with `HEAD` commit of project's `fenix-torbrowserstringsxml` branch
 | 
| 51 | 52 |  - [ ] Update Android-specific build configs
 | 
| 52 | -  - [ ] ***(Optional)*** Update `projects/geckoview/config`
 | |
| 53 | +  - [ ] Update `projects/geckoview/config`
 | |
| 53 | 54 |      - [ ] `browser_build` : update to match `tor-browser` tag
 | 
| 54 | 55 |      - [ ] ***(Optional)*** `var/geckoview_version` : update to latest `$(ESR_VERSION)` if rebased
 | 
| 55 | 56 |    - [ ] ***(Optional)*** Update `projects/tor-android-service/config`
 | 
| ... | ... | @@ -58,10 +59,9 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 58 | 59 |      **NOTE** we don't currently have any of our own patches for this project
 | 
| 59 | 60 |      - [ ] `git_hash` : update to appropriate git commit associated with `$(ESR_VERSION)`
 | 
| 60 | 61 |    - [ ] ***(Optional)*** Update `projects/android-components/config`:
 | 
| 61 | -    - [ ] `android_components_build` : update to match android-components tag
 | |
| 62 | +    - [ ] `android_components_build` : update to match stable android-components tag
 | |
| 62 | 63 |    - [ ] ***(Optional)*** Update `projects/fenix/config`
 | 
| 63 | 64 |      - [ ] `fenix_build` : update to match fenix tag
 | 
| 64 | -    - [ ] ***(Optional)*** `var/fenix_version` : update to latest `$(ESR_VERSION)` if rebased
 | |
| 65 | 65 |    - [ ] Update allowed_addons.json by running (from `tor-browser-build` root):
 | 
| 66 | 66 |      - `./tools/fetch_allowed_addons.py > projects/browser/allowed_addons.json`
 | 
| 67 | 67 |  - [ ] Update common build configs
 | 
| ... | ... | @@ -84,14 +84,13 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 84 | 84 |      - [ ] ***(Optional)*** Update `projects/go/config`
 | 
| 85 | 85 |        - [ ] `version` : update go version
 | 
| 86 | 86 |        - [ ] `input_files/sha256sum` for `go` : update sha256sum of archive (sha256 sums are displayed on the go download page)
 | 
| 87 | -  - [ ] Update the manual : https://gitlab.torproject.org/tpo/web/manual/-/jobs/
 | |
| 88 | -    - [ ] Download the `artifacts.zip` file from latest build stage row (download icon button on the right)
 | |
| 89 | -    - [ ] Rename it to `manual_$PIPELINEID.zip`
 | |
| 90 | -    - [ ] Upload it to people.tpo
 | |
| 91 | -    - [ ] Update `projects/manual/config`
 | |
| 92 | -      - [ ] Change the version to `$PIPELINEID`
 | |
| 93 | -      - [ ] Update the hash in the input_files section
 | |
| 94 | -      - [ ] Update the URL if you have uploaded to a different people.tpo home
 | |
| 87 | +  - [ ] Check for manual updates by running (from `tor-browser-build` root): `./tools/fetch-manual.py`
 | |
| 88 | +    - [ ] ***(Optional)*** If new version is available:
 | |
| 89 | +      - [ ] Upload the downloaded `manual_$PIPELINEID.zip` file to people.tpo
 | |
| 90 | +      - [ ] Update `projects/manual/config`:
 | |
| 91 | +        - [ ] Change the `version` to `$PIPELINEID`
 | |
| 92 | +        - [ ] Update `sha256sum` in the `input_files` section
 | |
| 93 | +        - [ ] ***(Optional)*** Update the URL if you have uploaded to a different people.tpo home
 | |
| 95 | 94 |  - [ ] Update `ChangeLog.txt`
 | 
| 96 | 95 |    - [ ] Ensure ChangeLog.txt is sync'd between alpha and stable branches
 | 
| 97 | 96 |    - [ ] Check the linked issues: ask people to check if any are missing, remove the not fixed ones
 | 
| ... | ... | @@ -99,19 +98,26 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 99 | 98 |      - Make sure you have `requests` installed (e.g., `apt install python3-requests`)
 | 
| 100 | 99 |      - The first time you run this script you will need to generate an access token; the script will guide you
 | 
| 101 | 100 |    - [ ] Copy the output of the script to the beginning of `ChangeLog.txt` and adjust its output
 | 
| 102 | -    - If you used the issue number, you will need to write the Tor Browser version manually
 | |
| 103 | -  - [ ] Include any version updates for:
 | |
| 104 | -    - [ ] translations
 | |
| 105 | -    - [ ] OpenSSL
 | |
| 106 | -    - [ ] NoScript
 | |
| 101 | +    - **NOTE** : If you used the issue number, you will need to write the Tor Browser version manually
 | |
| 102 | +  - [ ] ***(Optional)*** Under `All Platforms` include any version updates for:
 | |
| 103 | +    - [ ] Translations
 | |
| 104 | +    - [ ]OpenSSL
 | |
| 105 | +    - [ ]NoScript
 | |
| 106 | +    - [ ]zlib
 | |
| 107 | +    - [ ] tor daemon
 | |
| 108 | +  - [ ] ***(Optional)*** Under `Windows + macOS + Linux` include updates for:
 | |
| 109 | +    - [ ] Firefox
 | |
| 110 | +  - [ ] ***(Optional)*** Under `Android`, include updates for:
 | |
| 111 | +    - [ ] Geckoview
 | |
| 112 | +  - [ ] ***(Optional)*** Under `Build System/All Platforms` include updates for:
 | |
| 107 | 113 |      - [ ] Go
 | 
| 108 | -    - [ ] zlib
 | |
| 109 | -  - [ ] Include any ESR rebase for Firefox and GeckoView
 | |
| 110 | 114 |  - [ ] Open MR with above changes
 | 
| 111 | -- [ ] Begin build on `$(BUILD_SERVER)` (and fix any issues which come up and update MR)
 | |
| 112 | 115 |  - [ ] Merge
 | 
| 113 | 116 |  - [ ] Sign/Tag commit: `make torbrowser-signtag-release`
 | 
| 114 | 117 |  - [ ] Push tag to `origin`
 | 
| 118 | +- [ ] Begin build on `$(BUILD_SERVER)` (fix any issues in subsequent MRs)
 | |
| 119 | +- [ ] **TODO** Submit build-tag to Mullvad build infra
 | |
| 120 | +- [ ] Ensure builders have matching builds
 | |
| 115 | 121 | |
| 116 | 122 |  </details>
 | 
| 117 | 123 | |
| ... | ... | @@ -123,6 +129,10 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 123 | 129 |    <details>
 | 
| 124 | 130 |      <summary>email template</summary>
 | 
| 125 | 131 | |
| 132 | +      Subject:
 | |
| 133 | +      Tor Browser $(TOR_BROWSER_VERION) (Android, Windows, macOS, Linux)
 | |
| 134 | + | |
| 135 | +      Body:
 | |
| 126 | 136 |        Hello All,
 | 
| 127 | 137 | |
| 128 | 138 |        Unsigned Tor Browser $(TOR_BROWSER_VERSION) release candidate builds are now available for testing:
 | 
| ... | ... | @@ -131,36 +141,31 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 131 | 141 | |
| 132 | 142 |        The full changelog can be found here:
 | 
| 133 | 143 | |
| 134 | -      - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/raw/maint-12.0/projects/browser/Bundle-Data/Docs/ChangeLog.txt
 | |
| 144 | +      - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/blob/$(TBB_BUILD_TAG)/ChangeLog.txt
 | |
| 135 | 145 | |
| 136 | 146 |    </details>
 | 
| 137 | 147 | |
| 138 | 148 |  - [ ] Email tor-qa mailing list: tor-qa@xxxxxxxxxxxxxxxxxxxx
 | 
| 139 | -  - Additional information:
 | |
| 149 | +  - ***(Optional)*** Additional information:
 | |
| 140 | 150 |      - [ ] Note any new functionality which needs testing
 | 
| 141 | 151 |      - [ ] Link to any known issues
 | 
| 142 | -- [ ] Email downstream consumers:
 | |
| 152 | +- [ ] Email packagers:
 | |
| 143 | 153 |    - Recipients:
 | 
| 144 | 154 |      - Tails dev mailing list: tails-dev@xxxxxxxx
 | 
| 145 | 155 |      - Guardian Project: nathan@xxxxxxxxxxxxxxxxxxxx
 | 
| 146 | 156 |      - torbrowser-launcher: micah@xxxxxxxxxxxxx
 | 
| 147 | 157 |      - FreeBSD port: freebsd@xxxxxxxxx <!-- Gitlab user maxfx -->
 | 
| 148 | 158 |      - OpenBSD port: caspar@xxxxxxxxxxxxxx <!-- Gitlab user cschutijser -->
 | 
| 149 | -  - [ ] Note any changes which may affect packaging/downstream integration
 | |
| 150 | -- [ ] Email upstream stakeholders:
 | |
| 151 | -  - ***(Optional, after ESR migration)*** Cloudflare: ask-research@xxxxxxxxxxxxxx
 | |
| 152 | -    - **NOTE** :  We need to provide them with updated user agent string so they can update their internal machinery to prevent Tor Browser users from getting so many CAPTCHAs
 | |
| 159 | +  - [ ] ***(Optional)*** Note any changes which may affect packaging/downstream integration
 | |
| 153 | 160 | |
| 154 | 161 |  </details>
 | 
| 155 | 162 | |
| 156 | 163 |  <details>
 | 
| 157 | 164 |    <summary>Signing</summary>
 | 
| 158 | 165 | |
| 159 | -### signing + publishing
 | |
| 160 | -- [ ] Ensure builders have matching builds
 | |
| 166 | +### signing
 | |
| 167 | +- **NOTE** : In practice, it's most efficient to have the blog post and website updates ready to merge, since signing doesn't take very long
 | |
| 161 | 168 |  - [ ] On `$(STAGING_SERVER)`, ensure updated:
 | 
| 162 | -  - [ ] `tor-browser-build/tools/signing/set-config`
 | |
| 163 | -    - `NSS_DB_DIR` : location of the `nssdb7` directory
 | |
| 164 | 169 |    - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
 | 
| 165 | 170 |      - `ssh_host_builder` : ssh hostname of machine with unsigned builds
 | 
| 166 | 171 |        - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
 | 
| ... | ... | @@ -180,14 +185,14 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 180 | 185 |  - [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
 | 
| 181 | 186 |  - [ ] run do-all-signing script:
 | 
| 182 | 187 |      - `cd tor-browser-build/tools/signing/`
 | 
| 183 | -    - `./do-all-signing.sh`
 | |
| 188 | +    - `./do-all-signing.torbrowser`
 | |
| 184 | 189 |  - **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
 | 
| 185 | 190 |  - [ ] Update `staticiforme.torproject.org`:
 | 
| 186 | 191 |    - From `screen` session on `staticiforme.torproject.org`:
 | 
| 187 | 192 |    - [ ] Static update components : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
 | 
| 188 | 193 |    - [ ] Enable update responses : `sudo -u tb-release ./deploy_update_responses-release.sh`
 | 
| 189 | 194 |    - [ ] Remove old release data from following places:
 | 
| 190 | -    - **NOTE** : Skip this step if the current release is Android or Desktop *only*
 | |
| 195 | +    - **NOTE** : Skip this step if we need to hold on to older versions for some reason (for example, this is an Andoid or Desktop-only release, or if we need to hold back installers in favor of build-to-build updates if there are signing issues, etc)
 | |
| 191 | 196 |      - [ ] `/srv/cdn-master.torproject.org/htdocs/aus1/torbrowser`
 | 
| 192 | 197 |      - [ ] `/srv/dist-master.torproject.org/htdocs/torbrowser`
 | 
| 193 | 198 |  - [ ] Static update components (again) : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
 | 
| ... | ... | @@ -241,7 +246,24 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE | 
| 241 | 246 |  - [ ] Publish after CI passes and website has been updated
 | 
| 242 | 247 | |
| 243 | 248 |  ### tor-announce mailing list
 | 
| 244 | -- [ ] Send an email to tor-announce@xxxxxxxxxxxxxxxxxxxx, using the same content as the blog post and subject "Tor Browser $version is released".
 | |
| 249 | +  <details>
 | |
| 250 | +    <summary>email template</summary>
 | |
| 251 | + | |
| 252 | +      Subject:
 | |
| 253 | +      New Release: Tor Browser $(TOR_BROWSER_VERSION) (Android, Windows, macOS, Linux)
 | |
| 254 | + | |
| 255 | +      Body:
 | |
| 256 | +      Hi everyone,
 | |
| 257 | + | |
| 258 | +      Tor Browser $(TOR_BROWSER_VERSION) has now been published for all platforms. For details please see our blog post:
 | |
| 259 | + | |
| 260 | +      - $(BLOG_POST_URL)
 | |
| 261 | + | |
| 262 | +  </details>
 | |
| 263 | + | |
| 264 | +- [ ] Email tor-announce mailing list: tor-announce@xxxxxxxxxxxxxxxxxxxx
 | |
| 265 | +  - **(Optional)** Additional information:
 | |
| 266 | +    - [ ] Link to any known issues
 | |
| 245 | 267 | |
| 246 | 268 |  </details>
 | 
| 247 | 269 | 
| ... | ... | @@ -2,20 +2,52 @@ | 
| 2 | 2 | |
| 3 | 3 |  <!-- Bookkeeping information for release management -->
 | 
| 4 | 4 | |
| 5 | -- ### Related Issues
 | |
| 6 | -  - tor-browser#xxxxx
 | |
| 7 | -  - tor-browser-build#xxxxx
 | |
| 8 | -  - etc
 | |
| 5 | +### Related Issues
 | |
| 6 | +- tor-browser#xxxxx
 | |
| 7 | +- mullvad-browser#xxxxx
 | |
| 8 | +- tor-browser-build#xxxxx
 | |
| 9 | 9 | |
| 10 | -- ### Backport Timeline
 | |
| 11 | -  - [ ] **Immediate** - patchsets for critical bug fixes or other major blocker (e.g. fixes for a 0-day exploit) OR patchsets with trivial changes which do not need testing (e.g. fixes for typos or fixes easily verified in a local developer build)
 | |
| 12 | -  - [ ] **Next Minor Stable Release** - patchset that needs to be verified in nightly before backport
 | |
| 13 | -  - [ ] **Eventually** - patchset that needs to be verified in alpha before backport
 | |
| 14 | -  - [ ] **No Backport** - patchset for the next major stable
 | |
| 10 | +### Backporting
 | |
| 15 | 11 | |
| 16 | -- ### Issue Tracking
 | |
| 17 | -  - [ ] Link resolved issues with appropriate [Release Prep issue](https://gitlab.torproject.org/groups/tpo/applications/-/issues/?sort=updated_desc&state=opened&label_name%5B%5D=Release%20Prep&first_page_size=20) for changelog generation
 | |
| 12 | +#### Timeline
 | |
| 13 | +- [ ] **Immediate**: patchset needed as soon as possible
 | |
| 14 | +- [ ] **Next Minor Stable Release**: patchset that needs to be verified in nightly before backport
 | |
| 15 | +- [ ] **Eventually**: patchset that needs to be verified in alpha before backport
 | |
| 16 | +- [ ] **No Backport (preferred)**: patchset for the next major stable
 | |
| 18 | 17 | |
| 19 | -## Change Description
 | |
| 18 | +#### (Optional) Justification
 | |
| 19 | +- [ ] **Emergency security update**: patchset fixes CVEs, 0-days, etc
 | |
| 20 | +- [ ] **Censorship event**: patchset enables censorship circumvention
 | |
| 21 | +- [ ] **Critical bug-fix**: patchset fixes a bug in core-functionality
 | |
| 22 | +- [ ] **Consistency**: patchset which would make development easier if it were in both the alpha and release branches; developer tools, build system changes, etc
 | |
| 23 | +- [ ] **Sponsor required**: patchset required for sponsor
 | |
| 24 | +- [ ] **Other**: please explain
 | |
| 20 | 25 | |
| 21 | -<!-- Whatever context the reviewer needs to effectively review the patchset --> | |
| \ No newline at end of file | ||
| 26 | +### Issue Tracking
 | |
| 27 | +- [ ] Link resolved issues with appropriate [Release Prep issue](https://gitlab.torproject.org/groups/tpo/applications/-/issues/?sort=updated_desc&state=opened&label_name%5B%5D=Release%20Prep&first_page_size=20) for changelog generation
 | |
| 28 | + | |
| 29 | +### Review
 | |
| 30 | + | |
| 31 | +#### Request Reviewer
 | |
| 32 | + | |
| 33 | +- [ ] Request review from an applications developer depending on modified system:
 | |
| 34 | +  - **NOTE**: if the MR modifies multiple areas, please `/cc` all the relevant reviewers (since gitlab only allows 1 reviewer)
 | |
| 35 | +  - **accessibility** : henry
 | |
| 36 | +  - **android** : dan
 | |
| 37 | +  - **build system** : boklm
 | |
| 38 | +  - **extensions** : ma1
 | |
| 39 | +  - **firefox internals (XUL/JS/XPCOM)** : ma1
 | |
| 40 | +  - **fonts** : pierov
 | |
| 41 | +  - **frontend (implementation)** : henry
 | |
| 42 | +  - **frontend (review)** : donuts, richard
 | |
| 43 | +  - **localization** : henry, pierov
 | |
| 44 | +  - **nightly builds** : boklm
 | |
| 45 | +  - **rebases/release-prep** : dan_b, ma1, pierov, richard
 | |
| 46 | +  - **security** : ma1
 | |
| 47 | +  - **signing** : boklm, richard
 | |
| 48 | +  - **updater** : pierov
 | |
| 49 | +  - **misc/other** : pierov, richard
 | |
| 50 | + | |
| 51 | +#### Change Description
 | |
| 52 | + | |
| 53 | +<!-- Whatever context the reviewer needs to effectively review the patchset; if the patch includes UX updates be sure to include screenshots/video of how any new behaviour --> |