Release Management/Process coordination for handling off-train releases: Difference between revisions

Mark as obsolete
m (→‎Goal: Fixing bullet point formatting)
(Mark as obsolete)
 
(47 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{RELEASE_MANAGEMENT_OBSOLETE}}
<p>The bulk of this information is available in [https://docs.google.com/document/d/13EU2B4hqt9x7z4g5ApF0AEWMPBpFPnrSf6dQ6kuEePM/ Ways to ship a change to Firefox Desktop] document.
<br><br>
= Goal =
= Goal =


Line 8: Line 13:


The list of off-train release requests include (but are not limited to):
The list of off-train release requests include (but are not limited to):
* Shipping content via Remote Settings
* Shipping a new Mozilla webextension
* Shipping a new Mozilla webextension
* [https://wiki.mozilla.org/Firefox/Go_Faster/System_Add-ons/Process GoFaster] for shipping new system add-ons
* [https://wiki.mozilla.org/Firefox/Go_Faster/System_Add-ons/Process GoFaster] for shipping new system add-ons
Line 38: Line 44:
| align=center| '''Checklist'''
| align=center| '''Checklist'''
|- style="border:1pt solid #000000;padding:0.176cm;"
|- style="border:1pt solid #000000;padding:0.176cm;"
| align=center| Content sent via Remote Settings
|| Publishing content to Firefox users with the in-product messaging system (Remote Settings)
''Example:'' (TBD)
<u>Typical time-to-ship</u>: (TBD)
|| Product manager/Dev owner files a bug and adds the messaging-system-request flag, filling out the resulting Bugzilla comment form.
<u>Driver</u>: Product owner
|| ✅ Product owner
✅ Publishing engineer
✅ Messaging (Firefox) Engineering peer
✅ Messaging Product owner
✅ Relman owner
||[https://docs.google.com/document/d/1TAu5OQ_hWZjfL4k9-b7uEcjjyvWhgeQQD6X5ksCC7bc/edit#heading=h.rfqkfzwwckon Messaging system intake and release process]
|- style="border:1pt solid #000000;padding:0.176cm;"
| align=center| New Mozilla webext
| align=center| New Mozilla webext
|| A business need to publish Mozilla owned webext to Firefox Desktop users via AMO.
|| A business need to publish Mozilla owned webext to Firefox Desktop users via AMO.
Line 59: Line 89:




|| TODO add a link to a template for the process
||  
|- style="border:1pt solid #000000;padding:0.176cm;"
|- style="border:1pt solid #000000;padding:0.176cm;"
| align=center| GoFaster
| align=center| GoFaster
Line 212: Line 242:
= General process =
= General process =


As all these processes are similar, the general process is describe. Specificities are described in dedicated checklists.
As all these processes are similar, the general process is described. Specific details are described in dedicated checklists.


# Kick-off email thread or meeting to establish scope, owners and timeline.
# Identify which off-train release vehicle to use. E.g. Controlled rollout or dot release or chemspill or shield study.
# Create checklist, find owners and track items on the checklist.
# Requirement doc - defines the goal of the change, why we are doing it and what will be done
# Test plan - Using the requirement doc, the QA owner will draft the test plan. Test plan to be reviewed by product owner, eng owner.
# Prepare the technical changes (code, pref change, etc)
# “Build it” process (including signature if needed)
# QA sign off - Formal QA sign off.
# Rollout plan and timing - From the kick-off meeting to daily stand-ups, keep the team aligned on rollout plan and timing.
# Communication - Do we need to communicate on the change? Release notes? Blog? If yes, identify owner and timeline to publish blog live.
# Publication of the change
# QA sign off of the publication of the change


# <div style="margin-left:1.27cm;margin-right:0cm;">Kick-off email thread or meeting to establish scope, owners and timeline.</div>
= Process: Messaging to users with Remote Settings =
# <div style="margin-left:1.27cm;margin-right:0cm;">Identify which off-train release vehicle to use. E.g. Controlled rollout or dot release or chemspill or shield study.</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Create checklist, find owners and track items on the checklist.</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Requirement doc - defines the goal of the change, why we are doing it and what will be done</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Test plan - Using the requirement doc, the QA owner will draft the test plan. Test plan to be reviewed by product owner, eng owner.</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Prepare the technical changes (code, pref change, etc)</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">“Build it” process (including signature if needed)</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">QA sign off - Formal QA sign off. </div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Rollout plan and timing - From the kick-off meeting to daily stand-ups, keep the team aligned on rollout plan and timing.</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Communication - Do we need to communicate on the change? Release notes? Blog? If yes, identify owner and timeline to publish blog live.</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Publication of the change</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">QA sign off of the publication of the change</div>


==Decisions==


== Extra steps ==


== Checklist ==


== Extra information ==
[https://docs.google.com/document/d/1eDDIZCp_pD01cCeghum7fLRDqmEl3dfds9y3yI4W9Hw/edit Messaging system intake and release process]


= Process: Shipping a New Mozilla Webextension =
= Process: Shipping a New Mozilla Webextension =
Line 238: Line 274:
== Decisions ==
== Decisions ==


Products supported: Desktop / Fennec / both
* Products supported: Desktop / Fennec / both
 
* Platforms supported
Platforms supported
* Firefox versions supported
 
* Release readiness criteria
Firefox versions supported
** QA  
 
** Performance
Release readiness criteria
** Security review
* <div style="margin-left:1.27cm;margin-right:0cm;">QA</div>
* What kind of telemetry data will this webext capture and send to Mozilla?
* <div style="margin-left:1.27cm;margin-right:0cm;">Performance</div>
* Timeline and rollout strategy
* <div style="margin-left:1.27cm;margin-right:0cm;">Security review</div>
 
 
 
What kind of telemetry data will this webext capture and send to Mozilla?
 
Timeline and rollout strategy
 
== 3.2 Extra steps ==
# <div style="margin-left:1.27cm;margin-right:0cm;">Data Steward review and sign off - Review webext by a data steward to ensure we are not collecting any privacy data that we ought not to.</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Security review - Security team within Product Integrity (PI) group will review and sign off on webext</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Perf review - Perf team within Product Integrity (PI) group will review and sign off on webext</div>
# <div style="margin-left:1.27cm;margin-right:0cm;">Maintain webext and fix issues reported by users - This happens in iterations until the time Mozilla plans to support this new webext</div>
 
 
 
<span style="color:#000000;">As I go through a final review of this, I am leaning towards removing the checklists section. I think as a first-pass of documenting the various process, we should let the teams decide what kind of checklist they want to maintain, in what form and use which repository. If the feedback we get is that checklists would make this more efficient, we can come back to it in a phase2. Thoughts? +yor@mozilla.com</span><span style="color:#000000;">Move that into a spreadsheet</span>3.3 Checklists


== Extra steps ==
# Data Steward review and sign off - Review webext by a data steward to ensure we are not collecting any privacy data that we ought not to.
# Security review - Security team within Product Integrity (PI) group will review and sign off on webext
# Perf review - Perf team within Product Integrity (PI) group will review and sign off on webext
# Maintain webext and fix issues reported by users - This happens in iterations until the time Mozilla plans to support this new webext


== Checklist ==
{| border="1" style="border-spacing:0;width:17.251cm;"
{| border="1" style="border-spacing:0;width:17.251cm;"
|- style="background-color:#ffff00;border:0.75pt solid #000000;padding:0.071cm;"
|- style="background-color:#ffff00;border:0.75pt solid #000000;padding:0.071cm;"
Line 347: Line 372:
|-
|-
|}
|}


= Process: GoFaster release Ship a new system add-on (SAO) or update an existing one =
= Process: GoFaster release Ship a new system add-on (SAO) or update an existing one =
Line 357: Line 377:
== Decisions ==
== Decisions ==


Is GoFaster the [https://wiki.mozilla.org/Firefox/Go_Faster/When_To_Use_System_Add-ons appropriate release strategy]?
* Is GoFaster the [https://wiki.mozilla.org/Firefox/Go_Faster/When_To_Use_System_Add-ons appropriate release strategy]?
 
* By nature, the rest of the decisions are the same as a Mozilla Webextension
By nature, the rest of the decisions are the same as a Mozilla Webextension




== Extra steps ==
== Extra steps ==
# By nature, the rest of the decisions are the same as a Mozilla Webextension


By nature, the rest of the decisions are the same as a Mozilla Webextension
== Checklists ==
 
 
4<span style="color:#000000;">As I go through a final review of this, I am leaning towards removing the checklists section. I think as a first-pass of documenting the various process, we should let the teams decide what kind of checklist they want to maintain, in what form and use which repository. If the feedback we get is that checklists would make this more efficient, we can come back to it in a phase2. Thoughts? +yor@mozilla.com</span><span style="color:#000000;">Move that into a spreadsheet</span>.3 Checklists




Line 451: Line 468:
|-
|-
|}
|}


== Extra information ==
== Extra information ==
The steps for shipping a system add-on are described in detail here:


[https://wiki.mozilla.org/Firefox/Go_Faster/System_Add-ons/Process https://wiki.mozilla.org/Firefox/Go_Faster/System_Add-ons/Process]  
[https://wiki.mozilla.org/Firefox/Go_Faster/System_Add-ons/Process https://wiki.mozilla.org/Firefox/Go_Faster/System_Add-ons/Process]
 


= Process: Funnelcake release =
= Process: Funnelcake release =
Line 465: Line 481:
== Decisions ==
== Decisions ==


* <div style="margin-left:1.27cm;margin-right:0cm;">Timeline</div>
* Timeline
* <div style="margin-left:1.27cm;margin-right:0cm;">Team</div>
* Team
* <div style="margin-left:1.27cm;margin-right:0cm;">Scope</div>
* Scope
* <div style="margin-left:1.27cm;margin-right:0cm;">New User population that will be targeted</div>
* New User population that will be targeted
* <div style="margin-left:1.27cm;margin-right:0cm;">Release readiness criteria</div>
* Release readiness criteria
** <div style="margin-left:2.54cm;margin-right:0cm;">QA</div>
** QA
** <div style="margin-left:2.54cm;margin-right:0cm;">Perf</div>
** Perf
** <div style="margin-left:2.54cm;margin-right:0cm;">Security review</div>
** Security review
** <div style="margin-left:2.54cm;margin-right:0cm;">Data & Privacy review</div>
** Data & Privacy review
 
 
 
<div style="margin-left:0cm;margin-right:0cm;"></div>


== Extra steps ==
== Extra steps ==


Intent to ship email to release-drivers with the bug number
# Intent to ship email to release-drivers with the bug number
 
# Releng owner to configure balrog rules and sign offs
Releng owner to configure balrog rules and sign offs
 


== Checklists ==
== Checklists ==




Line 550: Line 559:


== Extra information ==
== Extra information ==
[https://wiki.mozilla.org/Funnelcake https://wiki.mozilla.org/Funnelcake ]
[https://wiki.mozilla.org/Funnelcake https://wiki.mozilla.org/Funnelcake ]


= Process: Add-ons/ThirdParty Blocklisting =
= Process: Add-ons/ThirdParty Blocklisting =
Line 566: Line 573:
== Extra steps ==
== Extra steps ==


# <div style="margin-left:1.27cm;margin-right:0cm;">Intent to ship email to release-drivers to explain the change</div>
# Intent to ship email to release-drivers to explain the change
# <div style="margin-left:1.27cm;margin-right:0cm;">The change should be published on the relevant platform</div>
# The change should be published on the relevant platform
 
 


== Checklists ==
== Checklists ==
Line 634: Line 639:
= Process: Shield studies =
= Process: Shield studies =


Shield studies are controlled A/B tests. They are available on all channels, namely Nightly, Beta, Release. A/B experiments are done to understand user behavior, user retention, onboarding, test feature ideas, etc.
Shield studies are controlled A/B tests, using either a pref-flip or an add-on. They are available on all channels, namely Nightly, Beta, Release. A/B experiments are done to understand user behavior, user retention, onboarding, test feature ideas, etc.  


== Decisions ==
== Decisions ==
 
* Work with Data Science first to determine the best way to answer your questions.  A pref-flip or add-on study is only one way to find answers.  Guidance to get started with Data Science is [https://mana.mozilla.org/wiki/display/PM/Firefox+Data+Science#FirefoxDataScience-projectworkflow here]. 
* <div style="margin-left:1.27cm;margin-right:0cm;">Target channel</div>
* If Data Science and product determine a pref-flip or add-ons study is needed, you will fill out Experimenter together to get started. Getting Started guidance [https://mana.mozilla.org/wiki/display/FIREFOX/Pref-Flip+and+Add-On+Experiments#Pref-FlipandAdd-OnExperiments-GettingStarted here].  
* <div style="margin-left:1.27cm;margin-right:0cm;">Rollout plan (channel, user population, test/control channel breakdown)</div>
* These are the [https://mana.mozilla.org/wiki/display/FIREFOX/Pref-Flip+and+Add-On+Experiments#Pref-FlipandAdd-OnExperiments-Stages stages] between starting Experimenter and the study releasing.
* <div style="margin-left:1.27cm;margin-right:0cm;">Timeline</div>
* <div style="margin-left:1.27cm;margin-right:0cm;">Data/Legal review</div>
 


<div style="margin-left:0cm;margin-right:0cm;"></div>


== Extra steps ==
== Extra steps ==


# <div style="margin-left:1.27cm;margin-right:0cm;">Product Hypothesis Doc (Phd) review</div>
# In Experimenter, after you have completed your "Draft", click the "[https://mana.mozilla.org/wiki/display/FIREFOX/Pref-Flip+and+Add-On+Experiments#Pref-FlipandAdd-OnExperiments-ReadyforSign-offs Ready for Sign-offs]" button to get the checklist of Required and Optional items needed to launch your study.
 
# When you have all your required and optional checklist items complete, click the "Ready to Ship" button to let Normandy know this is ready to be launched.  You will be contacted with any questions.
 


== Checklists ==
== Checklists ==
Line 662: Line 661:
| align=center| Completion Date
| align=center| Completion Date
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
| align=center| Phd review
| align=center| Data Science Bug
| align=center| <product-owner>
| align=center| product-owner
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
| align=center| Data steward/Privacy review
| align=center| Analysis Battery
| align=center| <data-steward>
| align=center| data scientist
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
| align=center| Firefox peer review
| align=center| Experimenter Draft
| align=center| <shield-owner>
| align=center| product-owner & data scientist
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
| align=center| QA sign off
| align=center| Complete Study checklist
| align=center| <qa-owner>
| align=center| product-owner
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
| align=center| Relman Go/NoGo sign off
| align=center| Kick-off the study
| align=center| <relman>
| align=center| Normandy-owner
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
| align=center|  
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
|- style="background-color:#ffffff;border:0.75pt solid #000000;padding:0.071cm;"
| align=center| Kick-off the study
| align=center| Study Results
| align=center| <shield-owner>
| align=center| product-owner & data scientist
| align=center|  
| align=center|  
| align=center|  
| align=center|  
Line 702: Line 701:
== Extra information ==
== Extra information ==


Useful links* <div style="margin-left:1.27cm;margin-right:0cm;">[https://docs.google.com/document/d/1MQKsT1pNR30Qtc6B7a_1egcnOt7ft-fJhelrQZUrre8/edit?usp=sharing Release management risk assessment criteria] </div>
Useful links
* <div style="margin-left:1.27cm;margin-right:0cm;">[https://wiki.mozilla.org/Firefox/Shield/Shield_Studies https://wiki.mozilla.org/Firefox/Shield/Shield_Studies] </div>
* [https://mana.mozilla.org/wiki/display/FIREFOX/Pref-Flip+and+Add-On+Experiments#Pref-FlipandAdd-OnExperiments-Risks&Testing risk assessment criteria]  
* [https://mana.mozilla.org/wiki/display/FIREFOX/Pref-Flip+and+Add-On+Experiments#Pref-FlipandAdd-OnExperiments-GettingStarted Experimenter Guidance]


= Process: Feature rollout via Normandy =
= Process: Feature rollout via Normandy =
Line 712: Line 712:


== Decisions ==
== Decisions ==
* <div style="margin-left:1.27cm;margin-right:0cm;">Timeline</div>
* Timeline (Refer to the [https://docs.google.com/document/d/1xiWjGqK-s3NiqEY-Qg34eAm1Nca5iqzEUE8udRX1ku0/edit feature rollout playbook] for help with this)
* <div style="margin-left:1.27cm;margin-right:0cm;">Products affected: Desktop, Fennec, ESR?</div>
* Products affected: Desktop, Fennec, ESR?
* <div style="margin-left:1.27cm;margin-right:0cm;">Platforms affected: All, Windows, Mac, Linux?</div>
* Platforms affected: All, Windows, Mac, Linux?
* <div style="margin-left:1.27cm;margin-right:0cm;">Rollout strategy</div>
* Rollout strategy




== Extra steps ==
== Extra steps ==
* <div style="margin-left:1.27cm;margin-right:0cm;">Development owner configures the recipe in Normandy to flip pref for targeted end-users</div>
# File a bug for handling the rollout (examples: {{bug|1467514}} or {{bug|1523978}})
* <div style="margin-left:1.27cm;margin-right:0cm;">Release owner reviews, approves and publishes recipe</div>
# Development owner (likely mythmon) configures the recipe in Normandy to flip pref for targeted end-users
* <div style="margin-left:1.27cm;margin-right:0cm;">Feature team, release owner monitor data to verify:</div>
# For release-unblockers/hotfixes, set up on stage, so QA can test on https://delivery-console.stage.mozaws.net
** <div style="margin-left:2.54cm;margin-right:0cm;">Recipe uptake is going as planned</div>
# Release owner reviews, approves and publishes recipe
** <div style="margin-left:2.54cm;margin-right:0cm;">Feature is having the intended effect on end-users</div>
# Feature team, release owner monitor data to verify:
 
## Recipe uptake is going as planned
 
## Feature is having the intended effect on end-users


== Checklist ==
== Checklist ==
<TBD>
<TBD>


= Process Dot Release =
= Process Dot Release =


Dot release builds are pushed to release/ESR end-user users to mitigate release blocking issues
Dot release builds are pushed to release and/or ESR end-user users to mitigate release blocking issues.


== Decisions ==
== Decisions ==


* <div style="margin-left:1.27cm;margin-right:0cm;">Timeline</div>
* Timeline</div>
* <div style="margin-left:1.27cm;margin-right:0cm;">Bugs that are dot release drivers and ride-alongs</div>
* Bugs that are dot release drivers and ride-alongs
* <div style="margin-left:1.27cm;margin-right:0cm;">Products affected: Desktop, Fennec, ESR?</div>
* Products affected: Desktop, Fennec, ESR?
* <div style="margin-left:1.27cm;margin-right:0cm;">Platforms affected: All, Windows, Mac, Linux?</div>
* Platforms affected: All, Windows, Mac, Linux?
* <div style="margin-left:1.27cm;margin-right:0cm;">Rollout strategy</div>
* Rollout strategy
* <div style="margin-left:1.27cm;margin-right:0cm;">Release notes, sec advisories, comms plan, What’s New Page</div>
* Release notes, sec advisories, comms plan, What’s New Page
 
 


== Extra steps ==
== Extra steps ==
# <div style="margin-left:1.27cm;margin-right:0cm;">Release owner drafts release notes and shares for review. </div>
# Release owner drafts release notes and shares for review.
# <div style="margin-left:1.27cm;margin-right:0cm;">Security owner drafts security advisory as needed and shares for review.</div>
# Security owner drafts security advisory as needed and shares for review.


== Checklist ==
== Checklist ==
 
Example: [https://drive.google.com/open?id=1LTuQzvudGchDPELJkhpv7C8H7-2qTcmTvDokkZGpoFY 59.0.x dot release checklist]
Example: [https://drive.google.com/open?id=1LTuQzvudGchDPELJkhpv7C8H7-2qTcmTvDokkZGpoFY 59.0.x dot release checklist]  
 


= Process: Chemspills =
= Process: Chemspills =
Line 759: Line 754:


== Decisions ==
== Decisions ==
* <div style="margin-left:1.27cm;margin-right:0cm;">Timeline</div>
* Timeline
* <div style="margin-left:1.27cm;margin-right:0cm;">Products affected: Desktop, Fennec, ESR?</div>
* Products affected: Desktop, Fennec, ESR?
* <div style="margin-left:1.27cm;margin-right:0cm;">Platforms affected: All, Windows, Mac, Linux?</div>
* Platforms affected: All, Windows, Mac, Linux?
* <div style="margin-left:1.27cm;margin-right:0cm;">sec advisories, comms plan</div>
* sec advisories, comms plan


== Extra steps ==
== Extra steps ==
# <div style="margin-left:1.27cm;margin-right:0cm;">Security owner drafts security advisory as needed and shares for review.</div>
# Security owner drafts security advisory as needed and shares for review.
# <div style="margin-left:1.27cm;margin-right:0cm;">Create a CVE if necessary</div>
# Create a CVE if necessary
# <div style="margin-left:1.27cm;margin-right:0cm;">Reach out to partners and/or other projects impacted if needed</div>
# Reach out to partners and/or other projects impacted if needed
 
== checklist ==


== Checklist ==
[https://docs.google.com/spreadsheets/d/1LRrKopum2_ScOglsyXtkKgyNyiUAhooaFNZDxo4iUN8/edit#gid=0 Chemspill release checklist]  
[https://docs.google.com/spreadsheets/d/1LRrKopum2_ScOglsyXtkKgyNyiUAhooaFNZDxo4iUN8/edit#gid=0 Chemspill release checklist]  


== Extra information ==
== Extra information ==
 
[https://docs.google.com/document/d/1SwiR6Jk9Sdqfd0CU06Qci0XlJ3fnoD6BGVkL1imrcgY/edit?usp=sharing Chemspill process description]
* <div style="margin-left:1.27cm;margin-right:0cm;">[https://docs.google.com/document/d/1SwiR6Jk9Sdqfd0CU06Qci0XlJ3fnoD6BGVkL1imrcgY/edit?usp=sharing Chemspill process description]</div>
Confirmed users
1,311

edits