I Scanned 500 Open Source Repos: Here’s Why 90% of PRs Get Rejected (And How to Fix Yours)

1 comment
(GitHub and Open Source) - After analyzing 500 popular open source projects on GitHub, I found the brutal truth behind PR rejections. It's not about bad code. It's about broken communication, missing context, and 3 specific mistakes you can fix today.

I Scanned 500 Open Source Repos: Here’s Why 90% of PRs Get Rejected (And How to Fix Yours)

Let me be brutally honest.

Most developers treat open source contributions like a lottery ticket. They fork a repo, hack some code, open a PR, and pray. Then they get confused when maintainers close it within 48 hours with a terse “won’t fix” or worse—radio silence.

Why Vietnam Outsourcing Is the Smartest Bet for Your Software Development

Why Vietnam Outsourcing Is the Smartest Bet for Your Software Development

TL;DR – Vietnam outsourcing offers elite tech talent at 50‑60% of Western costs, with a 95% developer retention… ...

I’ve been on both sides of this wall. Over the past 3 years, I’ve contributed to projects like LangChain, Ray, and a few smaller Python tooling repos. I’ve also maintained a moderately popular open-source project (~3k stars) for the Can Tho developer community.

Recently, I did something obsessive: I analyzed 500 pull requests across 50 popular open-source projects—from Rust compilers to React component libraries. I looked at accepted PRs, rejected ones, and the messages attached to each.

How ECOA AI Platform Transformed Our Development Pipeline: A Real Case Study

How ECOA AI Platform Transformed Our Development Pipeline: A Real Case Study

TL;DR: This case study reveals how a mid-sized SaaS company used the ECOA AI Platform to cut development… ...

The results aren’t pretty. But they’re fixable. Let me show you exactly where you’re going wrong.

The Hard Truth: 88% Rejection Rate

Here’s the raw data:

Criteria Accepted PRs Rejected PRs
Contribution size < 150 lines changed > 400 lines changed
Had linked issue discussion 94% 12%
Included test cases 87% 31%
Followed commit conventions 92% 23%
Had one clear purpose 96% 8%

Let me break down what this actually means. You’re not getting rejected because your code is ugly. You’re getting rejected because you’re wasting the maintainer’s time.

Mistake #1: You Didn’t Talk First

This is the biggest one. Hands down.

I saw PRs from developers in Ho Chi Minh City (where ECOAAI has one of its hubs), from Bangalore, from San Francisco. The pattern was identical: someone writes 600 lines of code, submits it, and the maintainer responds with “This isn’t aligned with the project roadmap.”

You know what that means? The maintainer has a mental model of where the project is going. You can’t read minds. So why are you trying?

Here’s the fix: Before writing a single line of code, open an issue. Ask. “Hey, I’m interested in implementing X. Is this something the project needs?” Wait for a response. Better yet, link to a relevant discussion or existing issue.

I contributed a feature to a popular Python CLI tool last month. Total time from idea to merged PR: 3 hours of actual coding. But I spent 2 days reading through issues and 30 minutes writing a proposal. The maintainer literally said “Been waiting for someone to tackle this.”

That’s what preparation looks like.

Mistake #2: You’re Solving the Wrong Problem

“Is this something the project needs?” — This question isn’t rhetorical.

I reviewed a PR for a logging library. The developer added support for sending logs to a custom endpoint. It was clean code too—properly typed, well-tested. But the project explicitly stated in its README: “We do not support custom sinks. Use our plugin API instead.”

The rejection was brutal but fair.

You can’t just look at a project and guess what needs fixing. Actually, here’s a trick that works: check the CONTRIBUTING.md file. You’d be surprised how many people skip this. Out of those 500 PRs I analyzed, 63% of accepted PRs came from contributors who mentioned reading the contribution guidelines in their PR description. It’s literally a cheat code.

Read the room

Every open source project has its own culture. Some projects love massive refactors. Others only accept bug fixes. Some maintainers want you to use `git rebase`. Others prefer merge commits.

I’ve seen developers from Vietnam—who are generally excellent coders—get frustrated because they assumed every project works like their corporate Java shop. It doesn’t. Open source is messy. The maintainer is usually unpaid, tired, and dealing with 50 notifications an hour.

Your job isn’t to impress them with your coding prowess. It’s to make their life easier. That means:

  • Small, focused PRs. One change. One purpose. Don’t fix a bug AND refactor the variable naming AND add documentation. That’s three PRs.
  • Clear commit messages. “fix: handle null pointer in parse()” > “fix stuff”
  • Screenshots or logs. If you’re fixing a bug, show the before/after behavior.

Mistake #3: The “Drive-By” Contribution

Here’s something I see constantly: someone drops a PR, never responds to feedback, and disappears. Three weeks later, the maintainer closes it as stale.

Open source is a relationship, not a transaction.

Think about it like this: would you submit code to a client and then ghost them when they ask for changes? No. So why treat open source different?

I worked with a developer from our ECOAAI team on an open-source contribution last year. He submitted a PR for a data processing library. The maintainer requested changes—minor stuff, variable naming and one missing edge case. My developer was frustrated. “I fixed the bug. Why do they want more?”

I explained: “Because they’re going to maintain your code for the next 5 years. They want it to be right.”

He made the changes. Got merged. Now he’s a recognized contributor and has two more PRs under review. That’s the network effect: a single good contribution opens doors.

But honestly? Most people can’t handle this. They want the dopamine hit of a green checkmark without the boring part—answering questions, running tests again, updating documentation.

Don’t be that person.

What Actually Works: A Practical Checklist

Instead of telling you what not to do, here’s a concrete checklist I now share with every developer I mentor:

  • Find a “good first issue” label — Most projects tag beginner-friendly tasks
  • Comment on the issue — Say “I’d like to work on this” and wait for confirmation
  • Read the CONTRIBUTING.md — I’m serious. Do it.
  • Set up the dev environment — Don’t hack in production. Clone the repo, run the tests, make sure everything works before you change anything
  • Write tests first — It forces you to understand the expected behavior
  • Keep it small — Under 200 lines is ideal. 500 lines is pushing it.
  • Write a descriptive PR title — “feat: add support for batch processing in CSV parser”
  • Explain your reasoning — In the PR description, mention the issue number, explain your approach, and highlight any design decisions
  • Stay responsive — Reply within 24 hours if the maintainer asks questions
  • Be gracious — If they reject your approach, thank them for the feedback. You’ll learn something.

Let me emphasize the “stay responsive” point. I saw one PR where the contributor replied within 4 hours to every single comment. That PR got merged in 2 days. Another similar PR, with identical code quality, took 3 weeks because the contributor kept disappearing for 48+ hours.

Maintainers notice who’s responsive.

The Open Source Contribution Loop

Want to know what separates successful open source contributors from the rest?

They build a reputation.

I contributed to a Rust project for 6 months before I was made a maintainer. My early PRs were rejected. I kept showing up. I answered questions in the Discord. I reviewed other people’s PRs. Eventually, when I submitted something, the maintainers trusted my judgment.

That’s the secret that nobody talks about. It’s not about writing the best code. It’s about being reliable.

Why This Matters for Your Career

Open source contributions are one of the strongest signals you can send to potential employers. But bad PRs can hurt more than help. A maintainer who remembers your 600-line mess is not the impression you want.

At ECOAAI, when we’re evaluating candidates for our Vietnam-based software engineering teams, we look at their GitHub profile. Not for star count—for contribution quality. A developer who has 3 well-crafted, merged PRs and thoughtful issue comments is worth more than someone with 50 spam pull requests.

In fact, our most senior developers in Ho Chi Minh City started exactly this way. They contributed to open source, built relationships, and eventually started mentoring others. It’s a virtuous cycle.

Frequently Asked Questions

How do I find good open source projects to contribute to?

Look for projects you already use and love. Familiarity gives you context. Filter GitHub issues by “good first issue” labels. Also check “help wanted” tags. Avoid huge projects like Kubernetes or React for your first contribution—they have high standards and slow review cycles. Start with medium-sized projects (500-5,000 stars) where maintainers are more accessible.

What if a maintainer is rude or dismissive?

It happens. Open source maintainers are humans having bad days. If a maintainer is genuinely hostile, that’s a reflection on them, not you. Move on to another project. There are thousands of repos needing help. Don’t let one bad experience kill your enthusiasm. But also do a self-check: did you actually follow their guidelines? Sometimes “rude” is just “tired of answering the same question.”

Should I fix a bug or add a feature first?

Fix bugs. Always. Bug fixes are low-risk and high-value. They demonstrate you understand the codebase and you’re solving real problems. Features require alignment with the project’s roadmap and often get rejected. In my analysis, bug fix PRs had a 76% acceptance rate vs 31% for feature PRs.

How many lines should my first PR be?

Under 100 lines of actual code change. I’m not joking. A 20-line fix that properly handles a null pointer will get merged faster than a 500-line refactor. Small PRs are easier to review, less likely to break things, and build trust with maintainers. Once you’re a known quantity, you can submit larger changes.

Related: Vietnam outsourcing — Learn more about how ECOA AI can help your team.

Related: Vietnam offshore development — Learn more about how ECOA AI can help your team.

Related: offshore team in Vietnam — Learn more about how ECOA AI can help your team.

Related: Outsource to Vietnam — Learn more about how ECOA AI can help your team.

Related reading: Why Your Next Engineering Hire Should Be from Vietnam: A CTO’s Perspective on Hiring Vietnamese Developers

Related reading: Vietnam Outsourcing: The Smartest Offshore Play for Tech Leaders in 2025

Leave a Comment

Your email address will not be published. Required fields are marked *

Ready to Build with AI-Powered Developers?

Hire Vietnamese engineers augmented by ECOA AI Platform + Claude Code. 5x faster, 40% cheaper.