Skip to content

Upstream Project Repo Interaction Model

Steve Bohlen edited this page Oct 13, 2021 · 2 revisions
Step Repository Action Notes Intents/Objectives Gating Criteria
1 Upstream Source Create/Open new issue - brief / light-weight
- the start of a conversation, not the end of it
- focus more on problem definition and less on proposed solution (high-level only)
- think: ideation, not solution
- Achieve collective general agreement on the concepts (problem, approach) before more detailed work/effort is pursued/invested - Buy-in from community as to problem definition and high-level approach to solution
2 Downstream Fork Create/Open new issue - Same as above
- Include LINK to correlated issue in source repo for reference/tracking
- Add "upstream issue exists" label
- MSFT-managed work item allowing lifecycle independent from correlated issue in source repo - n/a
3 Upstream Source Refine existing issue - In-depth discussion of approach/design intent - Achieve agreement on more detailed design approach/implementation before more detailed engineering efforts are pursued - Buy-in from community as to detailed approach to engineering solution
4 Downstream Fork Create branch for new issue - Named related to issue # in fork per branch naming conventions - Provide an isolated workspace for engineering activity related to the issue - n/a
5 Downstream Fork [OPTIONAL]
Make a draft PR to the repo
- This is accomplished as soon as the engineering reaches the point where internal (MSFT) input is considered useful/valuable
- This PR is from the issue branch on the fork and targeting the main trunk of the fork
- This PR (draft or otherwise) will never be completed/merged to the main trunk and is only opened to facilitate early internal (MSFT) discussion/review
- Provide context for internal (MSFT) discussion as to content/progress of issue-related branch - Internal (MSFT) comments/feedback solicited and resolved
6 Upstream Source [OPTIONAL]
Make draft PR to the repo
- This is accomplished as soon as the engineering reaches the point where community input is considered useful/valuable- This PR is from the issue branch on the fork targeting the main trunk of the source repo
- This PR will eventually be completed/merged to the main trunk of the source repo and the related issue in the source repo closed/resolved
- Provide context for community discussion as to content of issue-related branch - Community comments/feedback solicited and resolved
7 Downstream Fork Make the final PR to the repo - This PR is from the issue branch on the fork targeting the main trunk of the fork
- This PR will never be completed/merged to the main trunk and is only opened to facilitate internal (MSFT) discussion/review
- This PR will be canceled/abandoned after discussion completed and approvals rec'd and never merged into the main trunk directly
- Proposed completed unit of work related to the correlated issue in the fork for MSFT acceptance - Standard MSFT PR approval policy (2+ approve votes received, build passing, all comments resolved)
8 Upstream Source Make final PR to the repo - This PR is from the issue branch on the fork targeting the main trunk of the source repo
If the optional draft PR to the source repo was pursued (above step), this action will be an update to that existing draft PR, retaining all of its discussion history
- Proposed completed unit of work related to the correlated issue in the source repo for community acceptance - Existing PR-approval criteria in source repo satisfied
9 Upstream Source Close related issue in repo - Likely automated by the acceptance/merge of the correlated PR
10 Downstream Fork Close related issue in repo
11 Downstream Fork Abandon PR - Content of the PR has already been accepted in source repo upstream from fork, so no need for any further progression of this fork-only PR
- Consider: retain the branch for historical reasons (?)
12 Downstream Fork Refresh main trunk in fork from upstream source repo - Upstream source repo now contains updates needed in fork
13 Downstream Fork Refresh any still in-flight issue branches with updated history from main trunk - Any currently-active branches (other issues) in fork need to be refreshed with the updates from main trunk so that eventual PRs reconcile those updates
Clone this wiki locally