Let's Talk About It:

Evaluating Contributions Through Discussion in GitHub

(download paper)
This page is an addendum to the paper that lists the pull requests used in the work.

Abstract:

Open source software projects often rely on code contributions from a wide variety of developers to extend the capabilities of their software. Project members evaluate these contributions and often engage in extended discussions to decide whether to integrate changes. These discussions have important implications for project management regarding new contributors and evolution of project requirements and direction. We present a study of how developers in open work environments evaluate and discuss pull requests, a primary method of contribution in GitHub, analyzing a sample of extended discussions around pull requests and interviews with GitHub developers. We found that developers raised issues around contributions over both the appropriateness of the problem that the submitter attempted to solve and the correctness of the implemented solution. Both core project members and third-party stakeholders discussed and sometimes implemented alternative solutions to address these issues. Different stakeholders also influenced the outcome of the evaluation by eliciting support from different communities such as dependent projects or even companies. We also found that evaluation outcomes may be more complex than simply acceptance or rejection. In some cases, although a submitter's contribution was rejected, the core team fulfilled the submitter's technical goals by implementing an alternative solution. We found that the level of a submitter's prior interaction on a project changed how politely developers discussed the contribution and the nature of proposed alternative solutions.

Pull requests used in work:

  1. https://github.com/jruby/activerecord-jdbc-adapter/pull/233
  2. https://github.com/guard/guard/pull/156
  3. https://github.com/symfony/symfony/pull/5248
  4. https://github.com/emberjs/ember.js/pull/365
  5. https://github.com/gitlabhq/gitlabhq/pull/3351
  6. https://github.com/tastejs/todomvc/pull/120
  7. https://github.com/laravel/framework/pull/720
  8. https://github.com/Quicksilver/quicksilver/pull/219
  9. https://github.com/playframework/playframework/pull/469
  10. https://github.com/OpenImageIO/oiio/pull/82
  11. https://github.com/linuxmint/Cinnamon/pull/1003
  12. https://github.com/owncloud/apps/pull/1
  13. https://github.com/jashkenas/backbone/pull/697
  14. https://github.com/numpy/numpy/pull/3306
  15. https://github.com/appium/appium/pull/793
  16. https://github.com/gregbell/active_admin/pull/1952
  17. https://github.com/drothlis/stb-tester/pull/9
  18. http://github.com/xapi-project/xen-api/pull/957
  19. https://github.com/cfengine/design-center/pull/14
  20. http://github.com/mxcl/homebrew/pull/3403