substrait-io/substrait - Open Source PR Review Scorecard

A cross platform way to express data transformation, relational algebra, standardized record expression and plans.

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

External PR Merge Rate: 64%

Response Time: 13h

First Timer Success: 67%

Frequently Asked Questions

Is substrait-io/substrait welcoming to first-time open-source contributors?

substrait-io/substrait has a recorded first-timer success rate of 66.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 substrait-io/substrait respond to incoming external pull requests in approximately 12.6 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 64.1 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 64.1 places substrait-io/substrait in the A tier.

What is the external contributor pull request merge rate for substrait-io/substrait?

The external contributor pull request merge rate for substrait-io/substrait is 63.5%, based on public PR activity from non-core contributors.

Are there Good First Issues available in substrait-io/substrait?

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

substrait-io
substrait-io/substraitA•Welcoming1.6k
GitHub
Back to Explorer
substrait-io

substrait-io/substrait

1,552
Active (30d)A•Welcoming(64/100)Python

A cross platform way to express data transformation, relational algebra, standardized record expression and plans.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Welcoming Community Builder

Warmth Score
8.5/10
Patience Score
8.6/10
Nitpick Rate
30%

Highly welcoming maintainers in substrait-io/substrait. Prompt code reviews with positive guidance for new contributors.

Top PR Submission Do's

  • •Ensure code complies with the project coding style
  • •Keep PRs scoped to a single concern
  • •Include context and link to the related issue

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit PRs without linking an issue
  • •Do not break existing tests without fixing them
  • •Do not mix unrelated refactors in a single PR
Response Velocity
12 hours
Standard maintainer review cycle

Average Response Latency

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

Merge Efficiency
63.5%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
66.7%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
17 core
Highly collaborative maintainer core
Diagnostic Health HUD
63.5%
Merge Gauge
66.7%
1st-Timer
Community Vibe66/100

Embed C-Rank Badge

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

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

Active Good First Issues (4)

View on GitHub

Follow-up to this review thread on #1148, filed with @benbellick's agreement to handle it separately rather than growing that fix. Two test modules independently discover and walk the checked-in extension YAML files. The duplication predates #1148 but that PR made it more visible. Updated 2026-08-05 after merging #953 into #1148 — see the comment below. find_extension_files no longer filters on the functions_ prefix, so the two discovery helpers are now closer than originally described and design question 2 has largely answered itself. 1. File discovery find_extension_files(dir_path) extension_yaml_files() location tests/coverage/extensions.py tests/type/test_type_grammar.py scope every .yaml under the given root every extensions/*.yaml, plus site/examples/**/*.yaml walk os.walk, recursive, caller-supplied root Path.glob, repo root derived from __file__ returns sorted list[str] sorted generator of Path consumers read_substrait_extensions(), validate_nullability_mark

📅 Opened Aug 3, 2026💬 1 comment
Quality: 80/100Contribute

Summary add and subtract in extensions/functions_datetime.yaml each carry a single function-level description that is applied to six or seven impls whose semantics differ materially. Several of those differences are not recoverable from the signature alone. Since impls[].description is already supported by the schema, these should be documented per impl. The schema already allows this description is a permitted property on each entry of impls for scalar, aggregate and window functions (text/simple_extensions_schema.yaml, in the impls.items.properties blocks). There is existing precedent in count (functions_aggregate_generic.yaml#L5-L26), which uses the function-level description as an umbrella and impl-level descriptions to disambiguate: - name: "count" description: Count the number of values or records. impls: - description: Count the non-null values in a set of values. ... - description: Count the number of records (not field-referenced). ... Wha

📅 Opened Jul 31, 2026💬 0 comments
Quality: 90/100Contribute

Split out of #771 (item 3 of that issue's "Desired State" list); the other items there are now resolved. Current behaviour Extension test coverage is enforced by assertions inside a pytest test, test_substrait_extension_coverage in tests/test_extensions.py: coverage.num_tests_with_no_matching_function == 0 Baseline.validate_against (tests/baseline.py) compares the computed numbers against the checked-in tests/baseline.json as a one-directional ratchet: the registry / test / covered-variant counts may only increase, and the number of function variants without coverage may only decrease. That test runs in CI via pixi run test (the python-style job in .github/workflows/pr.yml) and via the check-substrait-extensions_coverage pre-commit hook, so a coverage regression blocks both commits and merges. At the current baseline, 245 of 498 function variants have test coverage — 253 variants have none. What was asked for From #771: CI should block on test failures, but not on coverage changes

📅 Opened Jul 31, 2026💬 0 comments
Quality: 80/100Contribute

The simple extensions docs say that a dependency alias can be used: This alias can then be used as a .-separated namespace prefix wherever a type class or type variation name is expected. The "or type variation name" part of that sentence has no place where it can be applied. A type variation name is only ever written in two places: As a declaration, in type_variations[].name of the extension YAML that defines it. An alias prefix is meaningless there. As a reference from a plan, via extension URN + name in SimpleExtensionDeclaration, which does not use YAML dependency aliases at all. There is no production in grammar/SubstraitType.g4 that names a type variation, so an alias-prefixed variation name cannot appear in any type expression either. The only cross-extension reference a type variation can make is its parent, and that is a type class reference, which the sentence already covers. Suggested fix Narrow the sentence to type classes, e.g.: A YAML file can also reference type cla

📅 Opened Jul 31, 2026💬 0 comments
Quality: 90/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 substrait-io/substrait

When evaluating whether to contribute to substrait-io/substrait, 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 substrait-io/substrait acknowledge new external contributions in approximately 12 hours. Out of all submitted pull requests from non-core authors in the last 180-day window, 63.5% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to substrait-io/substrait

01

Is substrait-io/substrait welcoming to first-time open-source contributors?

substrait-io/substrait has a recorded first-timer success rate of 66.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 ~12 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 64.1 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 64.1 places substrait-io/substrait in the Welcoming tier.

04

What is the external contributor pull request merge rate for substrait-io/substrait?

The external pull request merge rate is 63.5%. 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 substrait-io/substrait?

Yes, substrait-io/substrait currently has 3 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 substrait-io/substrait 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.