I'll just +1 that IMO a UI reminder is a great option.

2.3.0 added an alert when robots.txt was being scanned, which was great,
because I ignored it for a while, but eventually caved and looked into it.
This I would see as more of the same. I currently get loads of warnings
about things in my config file that have moved; but typically only if I
have to do a `airflow db upgrade` or `airflow dags backfill`. I see the
alert, think "I must fix those", and then the Homer effect kicks in, and
something else takes up the space in my brain. Having them as a banner in
the GUI would 100% get me to sort it sooner or later.

On Thu, Aug 4, 2022 at 9:32 PM Vikram Koka <vik...@astronomer.io.invalid>
wrote:

> Hi Daniel,
>
> I completely agree with wanting to consolidate, but I am very concerned
> about people needing to change their existing code.
> As Ping and Felix also said, I worry that people ignore deprecation
> warnings, especially since the original code authors don't really look at
> logs or other pipeline artifacts unless something is broken.
>
> With respect to the options you outlined, I am personally leaning towards
> (4) i.e. "don't deprecate timetable, but remove schedule_on (AIP-48 has
> added it in main) and take List[Dataset] in `schedule_interval`". I could
> be convinced with (3), since I think that "timetable" is relatively recent
> and have not seen as much usage for this invocation yet. I am definitely
> curious about other perspectives on this as well.
>
> I have a hard time with option (1) of deprecating "schedule interval",
> because of the historical nature of it and the code changes that people may
> have to make to deal with it.
>
> Thanks for raising this topic and the discussion,
>
> Vikram
>
>
> On Thu, Aug 4, 2022 at 10:24 AM Daniel Standish
> <daniel.stand...@astronomer.io.invalid> wrote:
>
>> I agree with those (including myself) who have suggested that it would be
>> great to have a deprecation fix tool.
>>
>> I also think that UI notifications would be valuable.  Another option
>> would be to provide a less intrusive indicator somewhere (like when chrome
>> lets you know you need to update), and then you click on it and it takes
>> you to a page that lists out all the deprecation warnings.
>>
>>
>> On Thu, Aug 4, 2022 at 1:03 AM Jarek Potiuk <ja...@potiuk.com> wrote:
>>
>>> I know we are distracting a bit from the main subject, but I think it's
>>> worth it.
>>>
>>> I think this is a fact of life that people don't remove deprecations.
>>> But we have a choice of "not doing anything about it" and complaining. Or
>>> doing something that might improve it.
>>>
>>> I usually err on the side of "doing something" when I see a problem. I
>>> am a doer :).
>>>
>>> And I have a possibly controversial proposal. I got the inspiration from
>>> node.js old versions. Whenever an old version of Node is being used, you
>>> have a 20 seconds delay artificially added and information that in order to
>>> remove those 20 seconds you need to upgrade.
>>>
>>> Why don't we do that for some really old/serious deprecations ? Maybe
>>> not 20 seconds. Maybe adding an unremovable RED warning in the UI if you
>>> have any deprecation unhandled. Something that is annoying enough that
>>> will cause people to make an action but not intrusive enough to break
>>> things.
>>>
>>> I think this is a very basic psychological trait:
>>>
>>> If it does not cost the user anything to leave the deprecations, there
>>> will be a big number of people who will do that.
>>> We need to make sure that deprecations are costing our users "a little"
>>> and that they are aware that they can remove the cost (and know how - this
>>> is super important that we only show such a message with clear instructions
>>> on what to do).
>>>
>>> Such a message might be annoying in many ways:
>>>
>>> * it can obstruct significant part of the screen
>>> * It can be flashy and had very annoying colours (think bold pink fonts
>>> on flash-green background for example)
>>> * It can not allow to do anything before the user closes it with a
>>> REALLY small 'x' that it is difficult to point at (think cookie banners).
>>> And when they click they can be greeted with "You know - you can actually
>>> remove this warning by doing THIS".
>>> * and we have probably more options - our UX specialists might have some
>>> good ideas here
>>>
>>> For anyone who complains about "people do not act on deprecation." -
>>> yeah this is true.
>>> But one universal truth there is that if we won't act, this will change
>>> nothing in the behaviour of our users - this is 100% certain.
>>>
>>> If we do something - it might improve it. We will not get a 100% success
>>> for sure, but we can at least do something to improve it.
>>>
>>> WDYT?
>>>
>>> J.
>>>
>>>
>>> On Thu, Aug 4, 2022 at 6:52 AM Felix Uellendall <felue...@pm.me.invalid>
>>> wrote:
>>>
>>>> Hi Ping,
>>>>
>>>> I had this idea about auto-fixing deprecation warnings too when I
>>>> started the airflint project.
>>>> I totally agree with what you said that often people ignore these
>>>> warnings and therefore a cli tool would come in very handy. It could look
>>>> similar to the airflint project and also be based on the python refactor
>>>> package, but I would keep it out of this discussion for now.
>>>>
>>>> Regarding the schedule arg, I don’t have a strong opinion there but
>>>> also tend to having one schedule arg, because of simplicity for the
>>>> dag author.
>>>>
>>>> Best,
>>>> Felix
>>>>
>>>>
>>>>
>>>> Sent from Proton Mail for iOS
>>>>
>>>>
>>>> On Thu, Aug 4, 2022 at 00:23, Ping Zhang <pin...@umich.edu> wrote:
>>>>
>>>> Hi Daniel,
>>>>
>>>> +1 for ‘schedule' and thanks for bringing this up.
>>>>
>>>> I agree with Vikram, we should be very careful about deprecating
>>>> existing params even if we have warnings around it. Not sure if this is a
>>>> general case, but I notice that people ignore warnings all the time until
>>>> it starts to break. Thus I am thinking if airflow can have a cli tool to
>>>> help users to batch update these deprecating params just like python's
>>>> futurize tool. This can greatly ease the burden of upgrading the airflow
>>>> version.
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> Ping
>>>>
>>>>
>>>> On Wed, Aug 3, 2022 at 3:13 PM Daniel Standish
>>>> <daniel.stand...@astronomer.io.invalid> wrote:
>>>>
>>>>> In case you forgot about us @Vikram, gentle nudge
>>>>>
>>>>> On Mon, Aug 1, 2022 at 8:40 AM Daniel Standish <
>>>>> daniel.stand...@astronomer.io> wrote:
>>>>>
>>>>>> Well, this is a discussion thread, so let's discuss!
>>>>>>
>>>>>> Vikram, what kind of implications are you thinking of? Maybe you
>>>>>> could provide a little more detail about your concerns?
>>>>>>
>>>>>> There are certainly alternatives, and of course each of them has
>>>>>> tradeoffs.
>>>>>>
>>>>>> Here are the options I see:
>>>>>>
>>>>>> 1. consolidate to schedule (deprecate schedule_interval and
>>>>>> timetable; the proposal under discussion in this thread)
>>>>>> 2. do nothing (keep 3 different scheduling params)
>>>>>> 3. consolidate to schedule_interval (deprecate timetable)
>>>>>> 4. don't deprecate timetable, but remove schedule_on (AIP-48 has
>>>>>> added it in main) and take List[Dataset] in `schedule_interval`
>>>>>>
>>>>>> Which would you propose we go with?
>>>>>>
>>>>>> If we have a veto against 1 (and again, we're in hypothetical
>>>>>> territory since this is still a discussion thread), my vote would
>>>>>> definitely be to go with 3.
>>>>>>
>>>>>> The param `schedule_interval` as catch all is not *sooo *bad, but
>>>>>> `schedule` definitely seems better. From a new user's perspective, having
>>>>>> misleading names is confusing, and can be a negative when looking at
>>>>>> adoption. And for a tenured user, it can nag at you. And dealing with
>>>>>> deprecations as an Airflow user, well it's sort of part of the job, 
>>>>>> though
>>>>>> it can be bothersome, certainly.
>>>>>>
>>>>>> Just to look at / compare feasibility.
>>>>>>
>>>>>> Deprecating schedule_interval, it would be more prominent than some
>>>>>> other deprecations because it's a DAG param. That said, I think it's 
>>>>>> pretty
>>>>>> straightforward to handle. For one, it's at the cardinality of DAG and 
>>>>>> not
>>>>>> *task*, so there is less to change with than some other
>>>>>> deprecations. And being kwargs-only, it's an easy find and replace that
>>>>>> could be automated with an `upgrade-check` script. It's very easy to
>>>>>> detect, either to warn about, or ultimately, after upgrade, to fail the 
>>>>>> DAG
>>>>>> parse (which forces user to fix). Perhaps we could even experiment with a
>>>>>> deprecation fix tool, so that users could get help fixing deprecations, 
>>>>>> not
>>>>>> necessarily in the context of an upgrade, since we're not looking at 3.0
>>>>>> any time soon.
>>>>>>
>>>>>> We could compare with execution_date, if execution_date is to be
>>>>>> removed in 3.0. I think the deprecation of execution_date will be a more
>>>>>> difficult thing for users to handle. For one, potentially higher
>>>>>> cardinality, since it is used in tasks. But also, the use of 
>>>>>> execution_date
>>>>>> can be harder to detect, since it can be in templates and elsewhere in
>>>>>> custom operators. *(With schedule_interval, since it's a top-level
>>>>>> dag kwarg, it will be easier.)* And execution_date was replaced with
>>>>>> `logical_date` for similar reasons -- avoiding user confusion.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Jul 29, 2022 at 2:42 PM Vikram Koka
>>>>>> <vik...@astronomer.io.invalid> wrote:
>>>>>>
>>>>>>> -1 from me.
>>>>>>>
>>>>>>> Though I agree in principle with the idea of consolidation, I don't
>>>>>>> think we should be doing this yet until we understand the implications
>>>>>>> completely.
>>>>>>> I am really not in favor of deprecation of the existing params,
>>>>>>> unless there is really no alternative.
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Jul 29, 2022 at 2:37 PM Daniel Standish
>>>>>>> <daniel.stand...@astronomer.io.invalid> wrote:
>>>>>>>
>>>>>>>> So far, seems all in favor.
>>>>>>>>
>>>>>>>> I will just highlight, in case it's not clear.... when we release
>>>>>>>> this (presumably 2.4), basically every single dag in existence will 
>>>>>>>> start
>>>>>>>> emitting deprecation warnings, and prior to 3.0, basically every dag in
>>>>>>>> existence will need to be updated.
>>>>>>>>
>>>>>>>> Thankfully, for most people, this should be an easy update since
>>>>>>>> DAG is kwargs only, IIRC.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Jul 29, 2022, 2:27 PM Brent Bovenzi
>>>>>>>> <br...@astronomer.io.invalid> wrote:
>>>>>>>>
>>>>>>>>> +1 to consolidating and "schedule".
>>>>>>>>>
>>>>>>>>> On Fri, Jul 29, 2022, 10:12 PM Drew Hubl
>>>>>>>>> <drew.h...@astronomer.io.invalid> wrote:
>>>>>>>>>
>>>>>>>>>> +1 for ‘schedule', and another +1 to the importance of
>>>>>>>>>> consolidating to one being more important than the name of that one
>>>>>>>>>>
>>>>>>>>>> On Jul 29, 2022, at 1:58 PM, Josh Fell <
>>>>>>>>>> josh.d.f...@astronomer.io.INVALID> wrote:
>>>>>>>>>>
>>>>>>>>>> Consolidating to a single scheduling parameter is a big +1 from
>>>>>>>>>> me. `schedule` seems like a nice catch-all.
>>>>>>>>>>
>>>>>>>>>> On Fri, Jul 29, 2022 at 9:10 AM Jed Cunningham <
>>>>>>>>>> jedcunning...@apache.org> wrote:
>>>>>>>>>>
>>>>>>>>>>> +1 on moving to a single `schedule` param.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>

Reply via email to