Paul Miller avatar

I make projects which help developers to build awesome things. Partner at web consultancy called Hell Yeah and security firm Sakurity. Sometimes I write essays on anarcho-capitalism as I love freedom and stuff.

You can ping me on twitter or send me an email.

Your pull request won’t be accepted

As a frequent contributor to open-source projects, I’m curious about probability of acceptance of my contribution. Of course, it largely depends on whether a patch fits the project or not, but still some projects are less likely to accept your pull. And in some popular projects, there are a lot of low-quality pull request that should not be accepted.

So I’ve made this summary and mined GitHub data for some popular projects.

The data is open-sourced and you may add your project any time at github.com/paulmillr/github-pull-req-stats.

Some projects accept much more pull requests (as a percentage of total) than others. Let’s look at a few popular ones:

Current: none

(graphs d3.js source code)

Lets then start with Jashkenas’ projects.

CoffeeScript

215 merged (56.58%) from 380

My favourite is CoffeeScript. A little language on top of javascript gets every second pull request accepted.

  • Coffee’s fork — LiveScript has less pulls (40), but bigger chance of merge (32 pulls got merged, that’s 80%)

Backbone

477 merged (44.25%) from 1078

The most popular MVC / MVP library for client-side javascript accepts slightly less pull requests. Still almost 1/2.

What about Backbone-based frameworks?

  • Chaplin has 204 merged pulls (79.69%) from 256
  • Marionette got 151 merged pulls (58.7%) from 257
  • Aura only has 80 merged pulls (73%) from 109

As for non-backbone JS frameworks:

  • Angular.js got 164 merged (15.34%) from 1069. Google project. Only 15%. Many angular PRs are pulled manually.
  • Ember has 925 merged pulls (73%) from 1265

Underscore

178 merged (36.55%) from 487

Underscore, a little functional programming helper for JS projects, merges 1/3 of all pulls.

  • John-David Dalton created Lodash as he was displeased with underscore. Interestingly, the stats don’t differ much. During my fast look at these pulls, seems that @jdalton was closing many pulls (18 merged pulls (37.5%) from 48) and adding pull changes manually.

Grunt

27 merged (12.98%) from 208

Famous task watcher. Only every 8th pull gets accepted.

Brunch

71 merged (62.83%) from 113

Another build tool for HTML5 applications. Accepts 6 times more pulls than grunt.

jQuery

189 merged (15.12%) from 1250

The most popular JS lib accepts only few pulls.

Scala

1808 merged (74.46%) from 2428

Scala community is very cohesive and maintainers accept 3 of 4 pulls. Situation with scala frameworks akka and scalatra is very same.

Rails

4039 merged (64.88%) from 6225

Rails guys take 13 pulls from every 20. Pretty good result as compared to other web frameworks:

Stylus

125 merged (70%) from 178

Arguably the best result from stylesheet languages. The result is also similar to other @tjholowaychuk projects, like mocha, jade or express.

  • Sass has 45 merged pulls (38%) from 118
  • LESS got 64 merged pulls (21%) from 295

Backbone-fundamentals

239 merged (87.23%) from 274

@addyosmani’s new book on Backbone. Pretty nice, by the way.

Book pull requests usually include only really relevant stuff and typo fixes, which means this project has the best pull request merge results overall.

Databases

Redis wins in this category without doubt.

  • Elasticsearch has 44 merged pulls (11.1%) from 395
  • Redis has 106 merged pulls (43.8%) from 242
  • MongoDB has 93 merged pulls (30%) from 303

Node.js

112 merged (6.07%) from 1845

The worst result. Node suffers from its popularity too. There are many low-quality pulls that don’t get accepted.

Also node guys pick many pulls manually and merge them by hand so that pull request metrics don’t show much. Somehow related to legal stuff probably. AFAIK they want all contributors to sign Contributor License Agreement. CLAs bureucracy always reduced my desire to contribute to an open-source project. For some companies it is a legal requirement because of shitty laws, but i’m glad there are still big projects without CLAs, like Rails.

Winners

Taking into account only projects with 250+ pulls, Akka and backbone-fundamentals with 87% are winners and receive GitHub top pulls #1 award I drew in MS Paint.