Skip to content

Inflight Branch Process

Matthew Leibowitz edited this page May 31, 2025 · 7 revisions

Overview

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.

Branching Workflow

  1. Sync inflight/current with main

    • Regularly rebase inflight/current on main to keep it up to date.
  2. Create inflight/candidate from inflight/current

    • When candidate is needed for stabilization, it is branched from current.
  3. Continue merging PRs into inflight/current

    • While candidate stabilizes, ongoing development continues in current.
  4. Merge inflight/candidate into main

    • Once candidate is stable, it gets merged into main.
  5. Delete inflight/candidate

    • After merging, the candidate branch is removed.
  6. Rebase inflight/current on main

    • Ensures current reflects all changes from main.
  7. Create new inflight/candidate from inflight/current

    • The cycle repeats for the next set of releases.

Why Use This Process?

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.

PR Targeting

  • Most PRs should target main, and the team will handle retargeting to inflight/current if necessary.
  • PRs addressing candidate stability should target inflight/candidate until it is stable and ready to merge into main.
  • Syncfusion manages much of the monitoring and stabilization efforts for candidate.

PR Review Process

  1. Every PR is reviewed by a core team member before merging.
  2. Approved PRs are retargeted to inflight/current, where CI testing runs.
  3. Only stabilization-related PRs are merged into inflight/candidate.

Handling Broken or Flakey Tests

Fixing inflight/current

  • The nightly feed depends on main and inflight/current, so fixing build errors here is critical.
  • If inflight/candidate doesn't require immediate fixes, prioritize stabilizing current by addressing failing tests.

Fixing inflight/candidate

  • 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 merging candidate into main doesn't change behavior, defer the fix to current.

Development Workflow Summary

  1. All PRs are reviewed by a .NET MAUI engineer before merging into inflight/current.
  2. Merged PRs undergo CI testing alongside other PRs and internal validation.
  3. After one week, inflight/current transitions into inflight/candidate, where only stabilization PRs are accepted.
  4. Once candidate passes internal testing and CI, it merges into main, ensuring a stable release.
Clone this wiki locally