Hi. I would like to discuss/propose a deprecation policy for apache-airflow-providers-google package, mostly for deprecating Airflow operators (but not limited to it).
*Some background:* Airflow google provider package (as most of other provider packages in Airflow) has a tendency to constantly evolve. There are cases when its features or operators/hooks have to be deprecated. The typical example of such a case is “refactoring” which leads to the renaming of operators, parameters or public methods. Such refactorings maybe consequence of: - using a new dependent library (that causes some methods to be deprecated) - using a new version of API (that causes some parameters to be deprecated) - restructuring/migration of the operators (that causes some operators to be deprecated) Given the need of a “deprecation” procedure, it looks essential to establish policy around it to have users of Airflow google provider package clearly understand when and how to adapt their DAGs. *Preambula (versioning of the package):* As mentioned in “Airflow’s release process and version policy” ( https://airflow.apache.org/docs/apache-airflow/stable/release-process.html#airflow-s-release-process-and-version-policy) google provider package (and others) should follow SemVer, meaning that any breaking changes should be released together with bumping major version of the package. The change is considered to be a breaking (in the context of google providers package) if a DAG that was working before, stops to work after the change. *My proposal (for discussion):* The entire procedure of deprecating (either method, parameter or operator) consists of two steps: - Emission of the deprecation warning message Example of the message: “”” The “given” parameter is deprecated and will be removed after dd.mm.yyyy. Please use “this” parameter instead. “”” - Once the date of the deprecated method/parameter/operator is passed, it can be removed (together with bumping major version of the package) The format of the warning message may vary, but it has to contain: - What should be used instead - The date after which the method/parameter/operator will be removed *Additional considerations:* - Bumping a major version of the Airflow google provider package shouldn’t happen very frequently (presumably not more frequently than 6 months), therefore when it happens it may accumulate removals of something that was communicated to be removed even a couple of months ago. (related discussion https://github.com/apache/airflow/blob/main/PROVIDERS.rst) Example: if today is 2025-12-20 and we are releasing new major version of the package, we can/should remove all deprecated methods/parameters/operators which have date prior to 2025-12-20 - it can be November 2025, October 2025 or even earlier, since previous bump of major version happened e.g. in summer of 2025. - By default all deprecations should allow a 6 months time period until they will be removed and not available. This period will give Airflow users enough time and flexibility to update their DAGs before actual removal happens. On a case by case basis this period can be adjusted given specific circumstances (e.g. in case deprecation is because of underlying API sunset which can happen earlier than in 6 months). Apart from deprecation warning messages that will be printed as logs, this information will be put as well in: - Airflow documentation - Release notes of Airflow google provider package Please, let me know what you think about this. -- Eugene