BTW. Another example of an exception would be a security fix. We **migh** find a security issue that will require a breaking change. But then again - the breaking change might **only** cover that security fix - we do not have to remove all the deprecations in this case (but we could if we decide so - very much depending on nature of those deprecations)
On Thu, Feb 29, 2024 at 12:36 PM Jarek Potiuk <ja...@potiuk.com> wrote: > I think it's a good idea to codify the rules, indeed what Elad mentioned, > we **mostly** follow a very similar approach, but it's not written > anywhere. > > > Re: points of Elad: > > 1. I am ok with 6 months, but I agree here we should not have "strict" > limits. It's fine to have some default (i.e. accumulate deprecating changes > for some time - max. 6 months) - but I think the policy should have an > option to apply exceptions - for example when we have a major change in > many libraries and we need to make some breaking changes (ads case) we > shall do it (but in this case we don't have to immediately remove all > deprecations - they can wait for the regular (say 6 months) breaking change > that will be coming. The users can - if needed - even in new versions of > Airflow - downgrade to previous provider versions in case they have problem > with it. > > I like the idea of having some time (6 months) where we can very safely > say "OK, enough is enough, lets remove deprecations" - and this proposal > addresses it nicely. Currently it's purely subjective judgment. One small > thing here to clarify for "accumulating" deprecations - I think we should > make sure the deprecation is present in already released minor/patchlevel > version to be able to remove it (so even if it is deprecated 2 months ago > but we had release with the deprecation, it's ok to remove it in the next > breaking change. > > 2. Agree (and again here "strict" is not good I think). I'd treat that 6 > months as a baseline. Before that - we should have very good reason to make > a breaking change (and we might decide to do it partially only) - after - > we are free to remove things that have been already announced as deprecated > and we should consider making breaking change whenever we release a new > version for whatever reason (but again - not mandatory). I's just an > indication that tells us "Last breaking release was 6 months ago, it's now > OK to remove all the deprecations without having an extremely good reason". > > Very much agree with 3. -> this should be the same as for other providers. > We should adopt the same rule for all of them. And if we apply > the adjustments above - we should - I think - be ok to apply it to any > provider I think. > > J > > > > On Thu, Feb 29, 2024 at 12:20 PM Elad Kalif <elad...@apache.org> wrote: > >> This is not too much different than what we already do. >> We deprecate then we remove. We almost never create breaking change >> without >> deprecating first. >> >> I'd like to raise a few notes: >> >> 1. Major releases can happen frequently. I see no problem with it. This is >> more a question of what are the changes. If google has 3 major releases >> one >> with breaking change to ads, another to leveldb and 3rd to cloud these are >> not related one to another and unlikely that there is 1 user that uses all >> of these together. We create major releases when needed and we keep a >> close >> eye and challenge why a change must be a breaking change. If possible we >> will always prefer to be backward compatible. >> 2. Time based deprecations are not a good approach. Some changes require >> much more time to be acted upon and others may be trivial. >> As a rule we almost never cut a breaking change release just to remove >> deprecations. >> 3. Setting a policy per provider is not the right way to go. We have a >> shared governance model for provider handling and I as release manager >> will >> do what I can to accommodate requests from companies who participate in >> managing the provider. Which means that if Google wants to remove >> deprecations and ask for a breaking change release most likely we will >> accommodate their request. My point of view is that the company knows what >> is best for their own users. I don't think that what is right for Google >> must bind AWS or Microsoft. 1 policy goes against the shared >> governance idea. >> >> >> >> On Thu, Feb 29, 2024 at 11:04 AM Eugen Kosteev <eu...@kosteev.com> wrote: >> >> > 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 >> > >> >