202
edits
m (DenSchub moved page Compatibility/Interventions Releases to Compatibility/System Addon/Release Process: This is about the WebCompat System Addon, and thus should be in the right namespace. Makes it easier to find.) |
(WIP of an updated version of the Release Process documentation.) |
||
Line 5: | Line 5: | ||
__TOC__ | __TOC__ | ||
Generally speaking, new interventions are landed in <tt>mozilla-central</tt> close to the start of each cycle's soft freeze period, and then ride the trains to Release. By essentially skipping the Nightly cycle, we speed up the process a bit, but we get some stability testing in Beta before the interventions are available to all users. | |||
In cases that are more urgent, we can speed up the process by | |||
* uplifting interventions into Beta at any time during the cycle, | |||
* uplifting the interventions into Release to be shipped with the next dot-release, | |||
* shipping an interventions add-on update out-of-band. | |||
' | It is up to each release's Interventions Owner to decide if a WebCompat bug is important enough to warrant a fast process. | ||
== | == The normal process: Letting interventions ride the train == | ||
For low-priority interventions, the simplest way to ship is to land them in the tree and have them ride the trains like any code change. | |||
# Build and test the interventions as usual. Submit a Pull Request to the <tt>mozilla-extensions/webcompat</tt> GitHub repository that does include new interventions, but do not include a version number bump yet. | |||
# Bump the version number in your local clone of the repo, but do not commit the change yet. | |||
# Export your changed sources into your <tt>mozilla-central</tt> checkout. Check the [https://github.com/mozilla-extensions/webcompat-addon#readme addon's <tt>README.md</tt>] for instructions on how to use the tooling. | |||
# Make sure <tt>./mach lint browser/extensions/webcompat</tt> passes. Since the on-GitHub lints are not exactly the same (primarily, <tt>eslint</tt> is missing), it's a good idea to run that every time. | |||
# Submit the patch to Phabricator. You do not ''need'' to manually specify a reviewer: the <tt>webcompat-reviewers</tt> group will be added automatically, sending a notification to everyone in the team. | |||
# Land the patch. Wait until the patch got merged into <tt>mozilla-central</tt> to make sure it doesn't get backed out immediately. | |||
# Export the same sources into your local checkout of <tt>android-components</tt>. There is tooling to help you with that as well, see [https://github.com/mozilla-extensions/webcompat-addon#readme addon's <tt>README.md</tt>]. [https://github.com/mozilla-mobile/android-components/pull/11938 Example Pull Request]. To make it easier to keep track of, attach a link to the pull request to the corresponding bug on Bugzilla. If you don't know someone who can review your patch, ask in <tt>#fenix-team</tt> on Slack. | |||
# When the patch is merged, you can commit the version number change in the <tt>webcompat-addon</tt> repository. Make sure to run <tt>npm run autoformat</tt> before commiting, as that will apply your version number change to <tt>package.json</tt> and <tt>package-lock.json</tt> as well. | |||
# Tag the version with <tt>git tag -a v100.0.0 -m 'v100.0.0'</tt>, and push both your version-bump-commit, and the new tag, to GitHub with <tt>git push origin main v100.0.0</tt> | |||
# Make sure that for any intervention you added, you set the <tt>sitepatch-applied</tt> label GitHub or the <tt><nowiki> | |||
[webcompat:sitepatch-applied]</nowiki></tt> whiteboard flag on Bugzilla. Likewise, remove those labels for all interventions you removed. | |||
== | == Uplifting new interventions into Beta == | ||
For interventions that are a bit more urgent, you can skip one release cycle and uplift your intervention(s) into Beta. However, '''do not just request beta uplift''' for the patch you submitted to <tt>mozilla-central</tt>: | |||
* It is possible that your patch was not the only change to the addon since the Beta branch got merged. This would cause conflicts, because your new patch won't cleanly apply to Beta. | |||
* Version numbers won't make sense: If you're uplifting a patch for the addon version <tt>101.0.0</tt> into Beta 100, you might make version numbers more confusing, and you also will make rolling out of-of-band updates a bit more complicated. | |||
* It generally is a good idea to limit your Beta uplift to only the important/urgent things. It might not be a wise idea to uplift everything, which might include logic changes, SmartBlock Fixes, and other changes into beta. Keep the risk as low as possible. | |||
Instead, we generally build a separate patch just for Beta. | |||
# Follow the "normal process", and get your interventions landed in <tt>mozilla-central</tt>. Wait for the next Nightly build, and make sure your interventions work as you expect. | |||
# In your local <tt>mozilla-central</tt> checkout, switch to the <tt>mozilla-beta</tt> branch/bookmark. If you've never done this before, check [https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/unifiedrepo.html the documentation explaining how to work with the <tt>mozilla-unified</tt> repository]. | |||
# Apply the relevant changes to the Firefox sources. | |||
#* If your patch is simple, you can apply the changes directly to your <tt>mozilla-beta</tt> tree. | |||
#* If your changes are more complicated, it might be a good idea to use the export tooling in our GitHub repo. You can <tt>git checkout</tt> the tag corresponding to the version currently shipping in Beta, and then <tt>git cherry-pick</tt> individual patches from <tt>main</tt> into your temporary branch. There is no need to publish/merge that branch upstream, as your beta rollout should never include any interventions that aren't also in the <tt>main</tt> branch anyway. | |||
# Publish the beta patch to Phabricator and have a webcompat-reviewer rubberstamp the patch. It is a good idea to add a clear indication into the commit message saying that this patch is meant for the Beta branch. <tt>Bug 1234567 - Beta - Uplift v101 Interventions into v100 Beta.</tt> is an example. | |||
# Set the <tt>approval-mozilla-release?</tt> request flag, and explain in the comment why you think this patch should be uplifted to Beta. | |||
A release manager will see your request. If your request is approved, the release managers will push your patch. You do not need to land it, or do anything else! | |||
== Uplifting new interventions into Release == | |||
If you want your interventions to be available to users very quickly, you can uplift them into <tt>mozilla-release</tt> and have it shipped in the next dot-release. | |||
# | # There is no fixed schedule for dot-releases, but you can reach out to the [[Release_Management/Release_owners|Release Owner]] and ask if a dot release is planned, and when it will be shipping. If there is a dot release coming up that fits your needs, let them know that you intend to ship WebCompat interventions in that release. | ||
# Get your interventions into <tt>mozilla-central</tt> first, using the "normal process" explained above. Make sure it works! | |||
# | # Then, you can follow the "uplifting into Beta" steps. The steps for Beta and Release are exactly the same, except that you're using a different branch/bookmark: <tt>mozilla-release</tt> instead of <tt>mozilla-beta</tt>. | ||
# You can request uplift for Beta and Release at the same time, but since these are two different patches, you have to request both uplifts separately in two comments. | |||
== | == Shipping interventions with an out-of-band System Addon Update == | ||
'''To be done'''. :denschub is typing this at the moment. | |||
= Interventions Release Rotations = | = Interventions Release Rotations = | ||
Engineers on the Web Compatibility team will rotate on ownership of shipping new versions of our interventions addons, serving as an Intervention Release Owner (IRO). The process will follow a predictable 4 week schedule, mirroring the [[Release_Management/Calendar|Firefox release schedule]]. However, we will attempt to land the interventions 1 week before soft freeze (see the schedule above for dates). Another way to look at this is 2 weeks before release. | |||
A tracking bug for the next release should be filed in Bugzilla (in the [https://bugzilla.mozilla.org/enter_bug.cgi?product=Web%20Compatibility&component=Interventions <tt>Web Compatibility::Interventions</tt> component]). Bugs for adding or removing interventions in the current release cycle should block this bug. | |||
During bug diagnosis, if a site is identified as a low priority intervention candidate, a <tt>action-needssitepatch</tt> label is added for the next IRO to take care of during their rotation. High priority interventions should be flagged immediately to the IRO who will then begin the process necessary to ship an off-train intervention. | |||
During bug diagnosis, if a site is identified as a low priority intervention candidate, a label | |||
High priority interventions should be flagged immediately to the IRO who will then begin the process necessary to ship an off-train intervention. | |||
== Candidates for interventions == | == Candidates for interventions == | ||
There is a [https://github.com/webcompat/web-bugs/issues?q=label%3Aaction-needssitepatch dedicated <tt>action-needssitepatch</tt> label on GitHub] as well as a [https://bugzilla.mozilla.org/buglist.cgi?product=Web%20Compatibility&component=Interventions&resolution=--- Bugzilla bug query] for sites that need interventions. During a rotation, you should look at both of these sites and determine which are the most important to work on and ship (or close, if appropriate). | |||
== Upcoming Releases == | |||
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1752989 Version 102] - Ksenia 2022-05-26 2022H1 | * [https://bugzilla.mozilla.org/show_bug.cgi?id=1752989 Version 102] - Ksenia 2022-05-26 2022H1 | ||
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1752990 Version 103] - Tom 2022-06-23 2022H1 | * [https://bugzilla.mozilla.org/show_bug.cgi?id=1752990 Version 103] - Tom 2022-06-23 2022H1 | ||
== Past Releases == | |||
* Firefox 74 (v7) - Ksenia | * Firefox 74 (v7) - Ksenia |
edits