apache/airflow - Open Source PR Review Scorecard

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows

C-Rank Grade: A (Welcoming) - 63/100

External PR Merge Rate: 69%

Response Time: 22h

First Timer Success: 49%

Frequently Asked Questions

Is apache/airflow welcoming to first-time open-source contributors?

apache/airflow has a recorded first-timer success rate of 48.7%. Repositories ranked A typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in apache/airflow respond to incoming external pull requests in approximately 22.4 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 63.3 C-Rank™ score (A Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 63.3 places apache/airflow in the A tier.

What is the external contributor pull request merge rate for apache/airflow?

The external contributor pull request merge rate for apache/airflow is 68.6%, based on public PR activity from non-core contributors.

Are there Good First Issues available in apache/airflow?

apache/airflow currently has 33 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

apache
apache/airflowAWelcoming46.6k
GitHub
Back to Explorer
apache

apache/airflow

46,647
AWelcoming(63/100)Python

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows

Compare
Jump to:
Response Velocity
22 hours
Standard maintainer review cycle

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
68.6%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
48.7%
Accepts new contributor PRs

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
215 core
Highly collaborative maintainer core
Diagnostic Health HUD
68.6%
Merge Gauge
48.7%
1st-Timer
Community Vibe55/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for apache/airflow
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/apache/airflow)](https://getmerged.abhishekco.de/apache/airflow?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

Under which category would you file this issue? Airflow Core Apache Airflow version 3.2.2 What happened and how to reproduce it? When running GCSToGCSOperator with move_object=True, if a task fails after the file has been successfully copied and deleted from the source bucket (e.g., not acknowledge due to network issue), a task retry will attempt to delete the source object again. Because the object was already deleted in the previous run, the hook.delete() call raises a google.api_core.exceptions.NotFound (404) error, causing the task retry to fail completely rather than succeeding idempotently. Logs of error: [2026-08-28 19:07:45] INFO - Object application/interface/myfile.xml in bucket professional-bucket-europe-west1-in rewritten to object ... [2026-08-28 19:07:45] INFO - Blob application/interface/myfile.xml deleted. [2026-08-28 19:07:45] INFO - Executing copy of ... ... [2026-08-28 19:07:55] WARNING - Blob application/interface/myfile.xml in bucket professional-bucket-europe-west

📅 Opened Aug 29, 2026💬 2 comments
Quality: 90/100Contribute

Apache Airflow version 3.0.6 If "Other Airflow 2 version" selected, which one? No response What happened? Running DatabricksRunNowOperator(deferrable=True) (and this likely applies to DatabricksSubmitRunOperator too, since both share the same trigger/hook code) submits the Databricks job successfully and the task defers correctly (worker slot released). But the triggerer then crashes while polling job status, before the run ever reaches a terminal state: ERROR - Trigger failed: Traceback (most recent call last): File ".../airflow/jobs/triggerer_job_runner.py", line 963, in cleanup_finished_triggers result = details["task"].result() File ".../airflow/jobs/triggerer_job_runner.py", line 1072, in run_trigger async for event in trigger.run(): File ".../airflow/providers/databricks/triggers/databricks.py", line 90, in run run_state = await self.hook.a_get_run_state(self.run_id) File ".../airflow/providers/databricks/hooks/databricks.py", line 514, in a_get_run_state

📅 Opened Aug 13, 2026💬 8 comments
Quality: 50/100Contribute

GlueJobOperator._find_job_run_id_by_task_uuid (the task-UUID scan fallback, used when neither task_state_store nor a cached XCom id has a prior run) has a few pre-existing quality issues, carried over verbatim from main, that are worth cleaning up: Unbounded pagination. It's a while True over get_job_runs(MaxResults=50) with no page cap and no age cutoff. The no-match case — the prior attempt died before it ever called StartJobRun, which is the common retry shape — is exactly the one that walks the job's entire run history before giving up. Failure is silently swallowed. The two except Exception blocks around this scan (and the XCom lookup before it) log at warning level and return None, after which the operator submits fresh — straight into ConcurrentRunsExceededException against a run that's still alive. There's no error-level signal telling anyone why. The except Exception is broader than it needs to be. It should be narrowed to except ClientError, so a real bug in the surrou

📅 Opened Aug 12, 2026💬 5 comments
Quality: 50/100Contribute

ReDoS in _mask_cmd() via User-Controlled application_args Summary The apache-airflow-providers-apache-spark package contains a Regular Expression Denial of Service (ReDoS) vulnerability in the SparkSubmitHook._mask_cmd() method. User-controlled values injected through the Airflow REST API DAG trigger conf parameter are incorporated into a shell command string that is processed by a regex with catastrophic backtracking characteristics, enabling a remote DoS attack. Affected Package Package: apache-airflow-providers-apache-spark PyPI: https://pypi.org/project/apache-airflow-providers-apache-spark/ Tested version: 4.10.0 CVSS v3.1: 7.5 Severity: High Vulnerability Details In airflow/providers/apache/spark/hooks/spark_submit.py at lines 508–530, the _mask_cmd() method applies the following regex to ' '.join(connection_cmd): re.sub( r'(\S*?(?:secret|password)\S*?(?:=|\s+)([\'"]?))(?:(?!\2\s).)*', r'\1********', ' '.join(connection_cmd) ) connection_cmd includes self._applica

📅 Opened Jul 29, 2026💬 6 comments
Quality: 65/100Contribute

Background Template fields are rendered after an operator's constructor runs. Any logic applied to a template-field parameter's value inside __init__ — validation, type checks, transformation, string interpolation — therefore operates on the un-rendered Jinja expression, not the real value. This is documented in Creating a custom Operator and contributing-docs/05_pull_requests.rst, and it causes real bugs: #69813 (SSHRemoteJobOperator validated a templated remote_base_dir in __init__, so cleanup validation failed for any custom base) is a recent example. ImportantChecks that only ask whether an argument was passed are the exception and belong in __init__. Read False positives below before fixing an entry. The validate-operators-init prek hook previously only verified that template fields are assigned verbatim at the top level of __init__; it could not see validation calls, conditionals, or transformations (and it did not cover sensors, AwsBaseOperator[...] subclasses, or aws_templ

📅 Opened Jul 23, 2026💬 30 comments
Quality: 65/100Contribute
Looking for more Python beginner tasks?Explore Python GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for apache/airflow

When evaluating whether to contribute to apache/airflow, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of apache/airflow acknowledge new external contributions in approximately 22 hours. Out of all submitted pull requests from non-core authors in the last 180-day window, 68.6% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to apache/airflow

01

Is apache/airflow welcoming to first-time open-source contributors?

apache/airflow has a recorded first-timer success rate of 48.7%. Repositories ranked Welcoming typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~22 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 63.3 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 63.3 places apache/airflow in the Welcoming tier.

04

What is the external contributor pull request merge rate for apache/airflow?

The external pull request merge rate is 68.6%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in apache/airflow?

Yes, apache/airflow currently has 33 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for apache/airflow are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.