-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Inflight Branch Process
Matthew Leibowitz edited this page May 31, 2025
·
7 revisions
To ensure a smooth development process, .NET MAUI follows a structured branching strategy with two active branches at all times:
- Current – The ongoing development branch where new features and fixes are continuously merged.
-
Candidate – The stabilization branch that prepares for merging into
main
.
This system improves testing reliability and prevents unstable changes from affecting the main branch prematurely.
-
Sync inflight/current with main
- Regularly rebase inflight/current on main to keep it up to date.
-
Create inflight/candidate from inflight/current
- When
candidate
is needed for stabilization, it is branched fromcurrent
.
- When
-
Continue merging PRs into inflight/current
- While
candidate
stabilizes, ongoing development continues incurrent
.
- While
-
Merge inflight/candidate into main
- Once
candidate
is stable, it gets merged intomain
.
- Once
-
Delete inflight/candidate
- After merging, the
candidate
branch is removed.
- After merging, the
-
Rebase inflight/current on main
- Ensures
current
reflects all changes frommain
.
- Ensures
-
Create new inflight/candidate from inflight/current
- The cycle repeats for the next set of releases.
Many PRs get lost while waiting for CI, delaying testing and validation. This workflow shifts the review process to the beginning, ensuring that:
- PRs are tested earlier in development.
- The main branch remains stable until inflight branches are fully validated.
- PRs move through the pipeline more efficiently with proper CI checks.
-
Most PRs should target
main
, and the team will handle retargeting toinflight/current
if necessary. -
PRs addressing candidate stability should target
inflight/candidate
until it is stable and ready to merge intomain
. -
Syncfusion manages much of the monitoring and stabilization efforts for
candidate
.
- Every PR is reviewed by a core team member before merging.
- Approved PRs are retargeted to
inflight/current
, where CI testing runs. - Only stabilization-related PRs are merged into
inflight/candidate
.
- The nightly feed depends on
main
andinflight/current
, so fixing build errors here is critical. - If
inflight/candidate
doesn't require immediate fixes, prioritize stabilizingcurrent
by addressing failing tests.
- If a PR breaks
candidate
and takes too long to fix, revert it and resolve the issue separately. - When fixing a flakey test, check how it behaves in
main
. If mergingcandidate
intomain
doesn't change behavior, defer the fix tocurrent
.
-
All PRs are reviewed by a .NET MAUI engineer before merging into
inflight/current
. - Merged PRs undergo CI testing alongside other PRs and internal validation.
-
After one week,
inflight/current
transitions intoinflight/candidate
, where only stabilization PRs are accepted. -
Once
candidate
passes internal testing and CI, it merges intomain
, ensuring a stable release.