-
Notifications
You must be signed in to change notification settings - Fork 24.4k
Release Roles and Responsibilities
Lorenzo Sciandra edited this page Jan 10, 2022
·
9 revisions
Here we set guidelines to apply the “dividi et impera” approach to React Native releases as it is an involved process and we need to clarify the work to allow for easier rotations of folks in various positions.
The roles should be imagined as “concentric”, with #1 in the centre: this means that anything in role #3 can be done by #2 or #1, and anything on role #2 can be done by #1. But the goal is precisely that #1 doesn’t have to do everything - to do so the suggestion is to at least always have a person per each role in each release.
- 1 release captain as main point of contact for 1 minor release (aiming for every 2 months)
- 1 reverse shadow for minor release — working on high-need tooling (perhaps from retrospective of previous minor release) and serves as backup if release captain is out
- Time commitment - maximum 4 hours/week of work for each release captain and reverse shadow
- Drives the initial cut and sets up release scaffolding (re: posts etc)
- Is informed of the pre-release & stable release status and any blocking issues and communicates to appropriate channels
- Attends & drives weekly release meeting
- updates and monitors the #releases channel
- updates and monitors discussion in react-wg/react-native-releases discussion for both:
- Make final call on release decisions
- Decide when to promote pre-release to stable (in consult with co-pilot and release supporters)
- Decide when to release a patch on stable
- Ensures blocking issues have owners
- Escalate internally if release community is blocked by Meta-owned dependencies (metro, folly, flipper, hermes, etc)
- Coordinate with release co-pilot & supporters on any community library blockers (reanimated, cli, etc.)
- Escalates security alerts
- When a security alert gets raised, communicates it quickly to relevant partners and internally
- If the security fix commit lands and it’s important, coordinates with the copilot on which stable branches should get the releases and produces them
- Can perform release or delegate release steps (as well as release co-pilot/reverse shadow)
- Is informed of the minor release status and current stable status
- Supports release captain
- Fills in for release captain if current release captain is unavailable
- Actions on high-priority tooling, retrospective action items when relevant
- These sub-roles must be filled by a Meta engineer
- 1 or 2 people (we should always have a backup)
- Time commitment - can be more flexible and doesn’t have to align with minor release schedule but we should update the release schedule when needed
- Is informed of the minor release status and current stable status
- attends weekly release meeting
- updates and monitors #releases channel
- updates and monitors discussion in react-wg/react-native-releases discussion for both:
- Ensures blocking issues have owners
- Escalate to Meta releaser when blocked by Meta-owned dependencies (metro, folly, flipper, hermes, etc)
- Find owners, coordinate with Meta releaser for any community library blockers (reanimated, cli, etc.)
- Support release decisions
- Help decide when to promote pre-release to stable
- Help decide when to release a patch on stable
- Can perform release (pre-release/stable)
- merge cherry-picks (as agreed with main releaser)
- creating the changelog & release entry in GH
- trigger the rn-diff-purge script to update upgrade-helper (this should be automated for 0.68 onwards)
- Help release testing via local E2E script
- Deprecate older releases on npm
- This role can be filled by anyone with write access to the necessary repos (react-native)
- Helps surface release issues either on stable or release candidate by:
- Triaging release issues in the react-native repo
- Testing out release candidates against their workflow
- Contributes to CI in the OSS repo to improve the testing infrastructure
- Optionally participates to weekly RN releases syncs
- Anyone interested in supporting releases!
- To start, you can participate in the discussion repo -- testing release candidates, surfacing any release issues you've seen or encountered yourself
- We also have some discussions about improvements here as well as some issues related to improving the release process in this project board
React Native • Contributor Guide • Getting Started • Website
How to Contribute
- How to File an Issue ↗
- Triaging GitHub Issues ↗
- How to Label an Issue ↗
- Managing Pull Requests ↗
- How to Contribute Code ↗
- How to Open a Pull Request ↗
- How to Build from Source ↗
Tests
Releases
More Resources
- Contributor Guide ↗
- Code of Conduct ↗
- Contributor License Agreement ↗
- Discussions and Proposals ↗
- Bots Reference ↗
Documentation