Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Airflow 3.0 #39593

Open
1 of 10 tasks
kaxil opened this issue May 13, 2024 · 26 comments
Open
1 of 10 tasks

Release Airflow 3.0 #39593

kaxil opened this issue May 13, 2024 · 26 comments
Labels
kind:meta High-level information important to the community
Milestone

Comments

@kaxil
Copy link
Member

kaxil commented May 13, 2024

Hello all,

Creating a meta-issue to track all the projects related to Airflow 3 and pointers on how contributors can help in this effort.

The Home Page for Airflow 3 discussions is: https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+3.0

Workstreams: https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+3+Workstreams

How to participate & help?

Check this doc and find items without an owner; this is the workstream that needs someone in the community to lead. Comment & tag me if you are interested in any of the workstreams.

The following items need an owner:

... and open issues tagged with airflow3.0:candidate with no assignees. There are other great ideas for features that don't need an AIP for Airflow 3.1 in this doc, so if someone has time to do it for 3.0, please add a comment.

Timeline

Date Milestone
9 August 2024 The main branch becomes Airflow 3 as soon as Airflow 2.10 is released
Dec 2024 Dev complete on breaking changes for Upgrade Utilities work
Jan 2025 Alpha releases
Feb 2025 Beta releases
March 2025 Airflow 3 release
@kaxil kaxil added the kind:meta High-level information important to the community label May 13, 2024
@kaxil kaxil added this to the Airflow 3.0.0 milestone May 13, 2024
@kaxil kaxil changed the title Release Airflow 3 [DRAFT] Release Airflow 3 May 13, 2024
@kaxil kaxil changed the title [DRAFT] Release Airflow 3 [WIP] Release Airflow 3 May 13, 2024
@jscheffl
Copy link
Contributor

Why not adding a "Project" --> https://github.com/apache/airflow/projects ?

@JossWhittle
Copy link

Is there any planned follow up to AIP-48 to expose a Dataset api to custom providers and give a mechanism for polling for Dataset changes using deferrable triggerers?

Since AIP-48's responsibilities were shrunk so it could be merged there has not been any visible discussion about a follow up AIP or any progress towards the remainder of it's goals on the 3.x roadmap.

@kaxil
Copy link
Member Author

kaxil commented Jun 18, 2024

Why not adding a "Project" --> https://github.com/apache/airflow/projects ?

Because we will have multiple "Projects"

@kaxil
Copy link
Member Author

kaxil commented Jun 18, 2024

Is there any planned follow up to AIP-48 to expose a Dataset api to custom providers and give a mechanism for polling for Dataset changes using deferrable triggerers?

Since AIP-48's responsibilities were shrunk so it could be merged there has not been any visible discussion about a follow up AIP or any progress towards the remainder of it's goals on the 3.x roadmap.

Not yet, but Airflow 2.9 included the support for Dataset event updates which could act as a proxy for a "push-based" mechanism until we have a poll-based mechanism

@JossWhittle
Copy link

JossWhittle commented Jun 19, 2024

@kaxil I found the internal api call to create a DatasetEvent the other day but I'm much of a muchness over whether I want to abuse it to solve my problem.

def register_dataset_change(

"/api/v1/datasets/events", json=event_payload, environ_overrides={"REMOTE_USER": "test"}

I want to be able to have a custom Dataset class listening to a message queue. Currently this is achieved using a separate continuously scheduled DAG with a deferable operator that consumes messages and triggers a DAG run of the actual processing DAG.

This could be changed to create DatasetEvent embedding the message(s) from the queue into the extra field, and have the processing DAG schedule on that Dataset. Would this be inherently dangerous to do?

Using an external DAG for polling in either case at least gets all the fault tolerance and deferability of a DAG, and means status and history is shown in the UI.

A downside I am seeing though is that when my DAGs finish and I write to a message queue, this is entirely decoupled from being able to declare that outgoing queue as a Dataset outlet.

In fact, outlets can't really be used at all here because we want to trigger on the message being pulled from the queue by another polling DAG, not by the current DAG simply succeeding which won't have passed the message(s) into the extra field.

This means the graph of inter-dag dependencies is always broken up which is unfortunate.

Perhaps in the meantime Dataset could get a constructor argument to prevent triggering a DatasetEvent when used as an outlet. This would allow outlets to be used to mark up inter-dag dependencies.


I think in a world where there is a polling mechanism, Dataset outlets on succeeding tasks should only hint to Airflow that poll-ers should poll, but shouldn't create a DatasetEvent directly. Poll-ers should be deferable and fault tolerant, so an outlet Dataset firing really just means waking the poller immediately if it is deferred. Otherwise it will pick it up on it's own.

@kaxil kaxil changed the title [WIP] Release Airflow 3 Release Airflow 3.0 Jun 24, 2024
@kaxil kaxil pinned this issue Jun 24, 2024
@gopidesupavan
Copy link
Member

Hi @kaxil , Would like to take part of this Airflow 3 Journey , happy to contribute here. I can take look into this Improvements to Sensors.

@amoghrajesh
Copy link
Contributor

@kaxil for items such as "Airflow Standalone Improvements" and "Improve Debugging Story" - I think we need more than just the heading because these are pretty open ended and I'd love to contribute to them and also "Remove deprecated code" :)

@gyli
Copy link
Contributor

gyli commented Jul 20, 2024

Hi @kaxil, I would love to take Consolidate "Serialization" code, could you please create an issue for this one?

@gopidesupavan
Copy link
Member

gopidesupavan commented Jul 23, 2024

Hi @kaxil

Over the past few days, I've thoroughly examined the core codebase and now have a strong grasp of the sensor component. I've also been contributing to Airflow for several months.

I would like to further explore the core areas. I feel like this is a great opportunity at this point.

Could you please throw some light on what the expectation on this Change sensors to use async by default?

In confluence it is mentioned. https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+3+Workstreams
Sensor Improvements about sensor modes.

Remove poke/reschedule mode from sensors

But here in above it mentioned remove poke mode.

Is it removing both modes and keeping completely default always with async?

Appreciate your help 😄 ..

And not sure if anyone else is already working on this. am happy to contribute other areas also 😄

@raphaelauv
Copy link
Contributor

for airflow 3 let's rename Dataset -> DagEvent or TriggerEvent

@kaxil
Copy link
Member Author

kaxil commented Jul 23, 2024

@raphaelauv -- @vincbeck is owning "Poll external Datasets to have event-based DAG scheduling." which has adding the concept of "Events" as mentioned in https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+3+Workstreams#Airflow3Workstreams-Othercandidates . That ideally should have DatasetUpdateEvent, TaskCompletionEvent, DagCompletionEvent etc. I am waiting to see an AIP but would like to see that apart from External polling

@kaxil
Copy link
Member Author

kaxil commented Jul 23, 2024

@gopidesupavan Yes, ideally we use the best possible way to run a sensor, which should be async implementation on Triggerer. If triggerer isn't available, it can fallback to poke or reschedule on the worker but at least it should default to most efficient usage without users having to mention it. But feel free to create your proposal on what you think is the best option

Hi @kaxil

Over the past few days, I've thoroughly examined the core codebase and now have a strong grasp of the sensor component. I've also been contributing to Airflow for several months.

I would like to further explore the core areas. I feel like this is a great opportunity at this point.

Could you please throw some light on what the expectation on this Change sensors to use async by default?

In confluence it is mentioned. https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+3+Workstreams Sensor Improvements about sensor modes.

Remove poke/reschedule mode from sensors

But here in above it mentioned remove poke mode.

Is it removing both modes and keeping completely default always with async?

Appreciate your help 😄 ..

And not sure if anyone else is already working on this. am happy to contribute other areas also 😄

@gopidesupavan
Copy link
Member

@gopidesupavan Yes, ideally we use the best possible way to run a sensor, which should be async implementation on Triggerer. If triggerer isn't available, it can fallback to poke or reschedule on the worker but at least it should default to most efficient usage without users having to mention it. But feel free to create your proposal on what you think is the best option

Hi @kaxil
Over the past few days, I've thoroughly examined the core codebase and now have a strong grasp of the sensor component. I've also been contributing to Airflow for several months.
I would like to further explore the core areas. I feel like this is a great opportunity at this point.
Could you please throw some light on what the expectation on this Change sensors to use async by default?
In confluence it is mentioned. https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+3+Workstreams Sensor Improvements about sensor modes.
Remove poke/reschedule mode from sensors
But here in above it mentioned remove poke mode.
Is it removing both modes and keeping completely default always with async?
Appreciate your help 😄 ..
And not sure if anyone else is already working on this. am happy to contribute other areas also 😄

Thank you @kaxil, Sure have couple of things i am thinking , will draft my proposal and send it for review soon.

@kaxil kaxil added airflow3.0:candidate Potential candidates for Airflow 3.0 and removed airflow3.0:candidate Potential candidates for Airflow 3.0 labels Jul 31, 2024
@gopidesupavan
Copy link
Member

@kaxil Wanted to give you an update on this. I've been exploring various options to run the sensors entirely in trigger mode and tried POC'S, found a way to do so. I conducted a proof of concept, and the results look promising. Additionally, I identified some possibilities to remove the poke and reschedule processes. However, there are definitely some downsides, and I'm struggling to fully assess them. I could really use your expertise on this :) Will send out draft in this week.

@gopidesupavan
Copy link
Member

Hi @kaxil I have sent out draft, tried my best to put my thought and poc :). Appreciate your feedback and suggestions. :)

@kaxil
Copy link
Member Author

kaxil commented Aug 12, 2024

Thanks @gopidesupavan I will check it out this week

@andrii-korotkov-verkada

Is Airflow 3.0 planned to support running in FIPS environments and/or be Govcloud/Fedramp-compliant? If not yet, what would be missing pieces to close this gap?

@potiuk
Copy link
Member

potiuk commented Nov 28, 2024

Is Airflow 3.0 planned to support running in FIPS environments and/or be Govcloud/Fedramp-compliant? If not yet, what would be missing pieces to close this gap?

No plans to have formal support unless some organizationt that needs it would like to support it and wills to spend their engineering time and effort to verify it. If you are interested, we invite you and your company to make such assessment and let us know what is missing.

@andrii-korotkov-verkada

Sure, I'll explore this and Verkada and/or AWS might help here. There's a chance I'd contribute too, but still sorting out details, legal permissions etc.

@andrii-korotkov-verkada
Copy link

Would there be no dependency on Flask Application Builder in v3.0? This seems important for the gov compliance, since that one uses an old version of Flask with sha1.

@kaxil
Copy link
Member Author

kaxil commented Dec 2, 2024

Would there be no dependency on Flask Application Builder in v3.0? This seems important for the gov compliance, since that one uses an old version of Flask with sha1.

Correct, at least not mandatory -- it would become an optional dependency

@potiuk
Copy link
Member

potiuk commented Dec 3, 2024

Would there be no dependency on Flask Application Builder in v3.0? This seems important for the gov compliance, since that one uses an old version of Flask with sha1.

Just to make it clear - we are now Python 3.9+ and all usages of none FIPS compliant ciphers/algorithms (in airflow) have "usedforsecurity=False" - which is feature added in Python 3.9 precisely to make sure that even if old algorithms are marked as not used for security (and that makes Airflow itself FIPS compliant from this perspective).

But if you think there are things that are not, I think a good idea @andrii-korotkov-verkada is to open an issue for them and ask them to do the same. Is it possible that you do it?

@andrii-korotkov-verkada
Copy link

Would there be no dependency on Flask Application Builder in v3.0? This seems important for the gov compliance, since that one uses an old version of Flask with sha1.

Just to make it clear - we are now Python 3.9+ and all usages of none FIPS compliant ciphers/algorithms (in airflow) have "usedforsecurity=False" - which is feature added in Python 3.9 precisely to make sure that even if old algorithms are marked as not used for security (and that makes Airflow itself FIPS compliant from this perspective).

But if you think there are things that are not, I think a good idea @andrii-korotkov-verkada is to open an issue for them and ask them to do the same. Is it possible that you do it?

I'm confirming with Fed people on my team about whether it's okay.

@potiuk
Copy link
Member

potiuk commented Dec 3, 2024

I'm confirming with Fed people on my team about whether it's okay.

If it's not ok. We welcome any contribution from Fed people or your team (apparently commercial users) to make it OK. This is the best way to contribute back by your team to the community as return for the absolutely free software you get.

Looking forward to your contributions.

@andrii-korotkov-verkada
Copy link

I'm confirming with Fed people on my team about whether it's okay.

If it's not ok. We welcome any contribution from Fed people or your team (apparently commercial users) to make it OK. This is the best way to contribute back by your team to the community as return for the absolutely free software you get.

Looking forward to your contributions.

Makes sense. I'm sorting out paperwork and planning and there's a decent chance I'd contribute something.

@andrii-korotkov-verkada

@potiuk, I'd be starting contributions soon, probably taking on #45140.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind:meta High-level information important to the community
Projects
None yet
Development

No branches or pull requests

10 participants