Ah copied **a bit** too much.

On Mon, Mar 30, 2026 at 12:20 PM Jarek Potiuk <[email protected]> wrote:

> Similarly to the Airflow 3 dev process update I also refreshed 2.11
> chapter - because there were questions:
>
> https://github.com/apache/airflow/pull/64463
>
> Pull Request Toolbar
> Open
> Add detailed 2.11.x PR instructions and FAB provider exception
> #64463
> potiuk
> wants to merge 1 commit into
> apache:main
> from
> potiuk:add-2.11-pr-instructions
> 0 / 1 viewed
> Filter files…
> File tree
> dev
> README_AIRFLOW3_DEV.md
> ‎dev/README_AIRFLOW3_DEV.md‎
> +94
> -6
> Lines changed: 94 additions & 6 deletions
>
>
> Original file line number     Original file line      Diff line number        
> Diff line change
>   - [Backporting during pre-release period (before 3.2.0 
> GA)](#backporting-during-pre-release-period-before-320-ga)
>   - [How to backport PR with GitHub 
> Actions](#how-to-backport-pr-with-github-actions)
>   - [How to backport PR with `cherry-picker` 
> CLI](#how-to-backport-pr-with-cherry-picker-cli)
>   - [Merging PRs for Airflow 2.11.x](#merging-prs-for-airflow-211x)
>   - [Merging PRs for Airflow 3](#merging-prs-for-airflow-3)
> - [Milestones for PR](#milestones-for-pr)
>   - [Set 2.11.x milestone](#set-211x-milestone)
>   - [Set 3.2.x milestone](#set-32x-milestone)
>   - [Set 3.3 milestone](#set-33-milestone)
>
>
> ## Developing for Airflow 2.11.x
>
> > [!IMPORTANT]
> > Airflow 2.11 is intended as a bridge release for Airflow 3 and reaches 
> > **end-of-life on April 22,
> > 2026**. There will likely be just one last **2.11.3** release before EOL — 
> > there are already some
> > bug fixes targeting 2.11 and one final update of dependencies will be done 
> > before we reach EOL.
> > We focus only on critical bug fixes and security fixes in this maintenance 
> > period.
>
> ### Core and FAB provider changes
>
> The `v2-11-test` branch has diverged significantly from `main` (Airflow 3.x) 
> — both for core
> Airflow and for the FAB provider. Cherry-picks rarely apply cleanly, so **if 
> an issue affects both
> Airflow 2.11 and Airflow 3, you need to create two separate PRs** — one 
> targeting `main` and one
> targeting `v2-11-test`:
> 1. **If the bug is reproducible on both `main` and 2.11:** fix it on `main` 
> first, then create a
>    separate PR targeting `v2-11-test` with the equivalent fix.
> 2. **If the bug is only reproducible on 2.11.x (not on `main`):** create a PR 
> targeting `v2-11-test`
>    directly.
> 3. **If a cherry-pick happens to apply cleanly:** you may target `main` and 
> add the
>    `backport-to-v2-11-test` label to automate the backport, but this is rare 
> for core changes.
> **Special exception — FAB provider (apache-airflow-providers-fab 1.5.x):**
> The FAB provider is a special case. The FAB provider version on `main` (2.x+) 
> has
> `min-airflow-version` of Airflow 3 and uses FastAPI, while the older FAB 
> provider 1.5.x for
> Airflow 2.11 still uses Connexion — the code is heavily different between the 
> two versions.
> The FAB provider 1.5.x is maintained directly in the `v2-11-test` branch, 
> which makes it easier
> to test any changes for the Airflow 2.11 + FAB 1.5 combination together.
> If your fix is for the FAB provider and affects both Airflow 2.11 and Airflow 
> 3:
> 1. Create a PR targeting `main` for the FAB provider 2.x+ (Airflow 3).
> 2. Create a separate PR against `v2-11-test` for the FAB provider 1.5.x 
> (Airflow 2.11).
> 3. If the fix is only relevant to Airflow 2.11 (not reproducible on `main`), 
> target
>    `v2-11-test` directly.
>
> ### Testing changes for Airflow 2.11.x
>
> To test your changes locally, check out the `v2-11-test` branch. Breeze on 
> Airflow 3 (`main`) is
> not compatible with Airflow 2.11, so you need to reinstall it manually:
> ```bash
> git checkout v2-11-test
> uv tool install --force -e ./dev/breeze
> ```
>
> After that, you can work as usual — including running `breeze start-airflow` 
> to spin up a local
> Airflow 2.11 environment for testing.
> > [!WARNING]
> > When you switch back to working on Airflow 3 (`main`), don't forget to 
> > reinstall Breeze from
> > the `main` branch, as the Airflow 2.11 version of Breeze is not compatible 
> > with Airflow 3:
> >
> > ```bash
> > git checkout main
> > uv tool install --force -e ./dev/breeze
> > ```
>
> ### Other provider changes
> Providers (other than FAB) are released from `main` and are generally 
> decoupled from the core
> Airflow version. Most provider fixes should target `main` — they will be 
> validated against
> Airflow 2.11 by the 2.11 compatibility tests in CI.
>
>
>
> and:
>
> ## Merging PRs for Airflow 2.11.x
>
> > [!NOTE]
> > Airflow 2.11 reaches end-of-life on April 22, 2026. There will likely be 
> > one last 2.11.3 release
> > before EOL.
>
> Since the `v2-11-test` branch has diverged significantly from `main`, 
> committers should be aware that:
>
> * Most core and FAB provider bug fixes require **two separate PRs** — one for 
> `main` and one for
>   `v2-11-test` — because cherry-picks rarely apply cleanly.
> * The committer merging a bug fix to `main` should verify whether it also 
> affects 2.11.x and, if so,
>   ensure a corresponding PR is created against `v2-11-test` (either by the 
> original author or by the
>   committer).
> * Other provider PRs (non-FAB) should generally only go to `main`.
>
> ### FAB provider 1.5.x (Airflow 2.11 only)
>
> The FAB provider on `main` (2.x+) requires Airflow 3 and uses FastAPI, while 
> the 1.5.x line uses
> Connexion — the code is heavily different. The FAB provider 1.5.x is 
> maintained directly in the
> `v2-11-test` branch, so FAB fixes for Airflow 2.11 should target `v2-11-test`.
>
>
>
> and:
>
> ## Set 2.11.x milestone
>
> Set for bug fixes and security fixes targeting Airflow 2.11.x (until 
> end-of-life on April 22, 2026).
>
> 1. PR targeting `v2-11-test` directly — milestone will be on that PR.
> 2. PR targeting `main` with a corresponding PR targeting `v2-11-test` — 
> milestone will be on the
>    PR targeting `main`.
>
>

Reply via email to