Hello everyone,

I have two important topics to discuss regarding Provider <> Airflow
version support rules.

*1) What is the "min Airflow version" support while we are transitioning to
Airflow 3? *

So far we had the [1] rule:

> The default support timespan for the minimum version of Airflow (there
could be justified exceptions) is that we increase the minimum Airflow
version to the next MINOR release, when 12 months passed since the first
release for the MINOR version of Airflow.

> For example this means that by default we upgrade the minimum version of
Airflow supported by providers to 2.8.0 in the first Provider's release
after 18th of December 2024. 18th of December 2023 is the date when the
first PATCHLEVEL of 2.8 (2.8.0) has been released.

The next cutoff time (2.9.0 + 12 months) will be in April 2025, And the
next one - 2.10.0 - assuming we release 2.10.0 in August - for min airflow
version = 2.10.0 will be in August 2025. If we have "bridge" 2.11.0 release
(very likely) - say in December, then min_version = 2.11.0 will be in
December 2025.

Assuming that we release Airflow 3.0.0 in March 2025, if we follow this
rule, we will be able to drop Airflow 2 support in providers in March 2026
- so we give about a year to Airflow 2 users to migrate to Airflow 3  - if
they will want new features and bug-fixes from new providers. Also it means
that we have 1.5 year of supporting both Airflow 2 and Airflow 3 in
providers (that for example includes the old Templated Field
back-compatibility support assuming that we will want to go ahead with the
change)

That provides (as was the original idea of this rolling min-version
support) additional incentive for users to migrate (want new features from
providers - migrate to latest Airflow). With Airflow 3 that will be a more
difficult decision to migrate, so I wonder if this rule should be somewhat
adapted.

*2) Should we introduce a rule for a "rolling" min version Provider's
support in Airflow 3?*

In Airflow 2 we never had a rule describing "how old" providers are still
supported in newer versions of Airflow. For example we never said you need
to have at least "2.10.0" version of a google provider. This was never a
huge problem, because vast majority of users were upgrading providers with
Airflow and only occasionally downgraded providers or kept them with old
versions because of some breaking changes.That had never caused a big
problem as far as I know and remember - and we can safely assume that
"really old" providers might  not work with "new" airflow even if we had no
formal rule for it.

However that required some back-compatibility code sometimes - like this
code removal that started breaking our main after removing old "imports"
[2]. This means that some very old SB providers will not work with the new
common.sql provider when released (and they also will not work with Airflow
3). I think it will never cause a "real" serious issue - but would be great
to formalize it to be able to set expectations of our users and have some
ways to respond to potential issues they might raise.

Should we formalize it somehow? For example add a rule that providers will
be guaranteed to support Airflow versions released up to 12 months after
the provider was released? We could potentially add tests to check it in
the future (though it would be rather complex and time consuming). But I
think we should start with the rule first.

Example to illustrate it (hypothetical):

* Google provider 11.0.4 is released in December 2024 - just before
Airflow 2.11.0
* Airflow 3.0 - 3.4 are released between December 2024 and December 2025 -
all of them support google provider 2.11.0 (and if not - this is a bug that
needs to be fixed)
* Airflow 3.5 is released in January 2026 - and if someone wants to install
Airflow 3.5 and use Google provider 11.0.4 or below - they might, or might
not work. But if they don't we do not treat it as a bug and we recommend
the users to upgrade to a newer Google provider version.

I think we should not make "intentional" changes to break those providers,
unless we have good reasons, and it's mostly about some weird edge cases,
where people have new Airflow and old providers, but I think it's worth
introducing and documenting some rules about it.


Let me know what you think on both accounts.

J.

[1]
https://github.com/apache/airflow/blob/main/PROVIDERS.rst#upgrading-minimum-supported-version-of-airflow
[2] https://github.com/apache/airflow/pull/41461

Reply via email to