Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Emerging Models for Open Source Contributions

1,379 views

Published on

An overview of historic models used to manage open source projects, where the world might be going, and why it matters.

From a GitHub CodeConf talk in Los Angeles, June 29 2016.

FOOTNOTES
Slide 21: http://www.apache.org/foundation/how-it-works.html
Slide 29: http://gustavopinto.org/lost+found/saner2016.pdf
Slide 37: https://www.joyent.com/blog/broadening-node-js-contributions
Slides 39 and 44: https://medium.com/node-js-javascript/building-a-better-node-community-3f8f45b45cb5#.b2ebksumt
Slide 48: Graph made based on data from https://github.com/rust-lang/rust/graphs/contributors
Slide 49: https://github.com/rust-lang/rfcs/blob/master/text/1068-rust-governance.md
Slide 63: https://jacobian.org/writing/retiring-as-bdfls/
Slide 66: Graph made based on data from https://github.com/clojure/clojure/graphs/contributors

Published in: Software
  • Be the first to comment

Emerging Models for Open Source Contributions

  1. 1. Emerging Models for Open Source Contributions @nayafia for GitHub CodeConf
  2. 2. @nayafia 1980s-late 1990s: BDFL Late 1990s-mid 2010s: Meritocracy Mid 2010s-today: Liberal contribution
  3. 3. @nayafia Different models solve for different “market” needs
  4. 4. @nayafia Market = users + contributors
  5. 5. @nayafia 1980s-late 1990s: BDFL (Linux)
  6. 6. @nayafia Fewer users, fewer contributors
  7. 7. @nayafia The BDFL has benefits:
  8. 8. @nayafia Centralized leadership and governance
  9. 9. @nayafia Centralized roadmap and direction
  10. 10. @nayafia But BDFLs are also by definition less democratic.
  11. 11. @nayafia And BDFLs made companies nervous.
  12. 12. @nayafia Open source needed company buy-in to succeed.
  13. 13. @nayafia Late 1990s-mid 2010s: Meritocracy (Apache)
  14. 14. @nayafia Apache flattened the BDFL model, enabling multiple actors to participate.
  15. 15. @nayafia Anyone (with merit) can contribute
  16. 16. @nayafia Anyone (with merit) can vote on decisions
  17. 17. @nayafia This did wonders for company buy-in
  18. 18. @nayafia (And is partially why open source thrives today)
  19. 19. @nayafia But there was still friction in the form of one little clause:
  20. 20. @nayafia *with merit
  21. 21. @nayafia “When the group felt that the person had "earned" the merit to be part of the development community, they granted direct access to the code repository…. We call this basic principle "meritocracy": literally, government by merit…. The group was happy to have new people coming in and help, they were only filtering the people that they believed committed enough for the task and matched the human attitudes required to work well with others, especially in disagreement.” Apache Software Foundation
  22. 22. @nayafia If you wanted to be part of a meritocracy, you needed to prove yourself.
  23. 23. @nayafia And you prove yourself by spending time on a project.
  24. 24. @nayafia This makes sense in theory (only people who’ve “earned it” get a voice)
  25. 25. @nayafia But in practice, it favored those who could “pay [with time, money] to play”
  26. 26. @nayafia Mid 2010s-now: Liberal contribution (Node.js)
  27. 27. @nayafia More users, more tech talent than ever before
  28. 28. @nayafia Git + GitHub made it easier for anyone to jump in on projects
  29. 29. @nayafia 49% of ppl on top GitHub projects only contributed once
  30. 30. @nayafia More noise from casual contributors
  31. 31. @nayafia Under a meritocracy, this was a bad thing
  32. 32. @nayafia Casual contributors hadn’t “earned” their voice
  33. 33. @nayafia Make them go away!
  34. 34. @nayafia But some people looked at casual contributors and saw an opportunity.
  35. 35. @nayafia Instead of tuning out the noise, Node.js decided to harness and redirect it
  36. 36. @nayafia Dropped their CLA requirement
  37. 37. @nayafia “...while I believe these constructs to be well-intended... Even at their very best, CLAs...seem like asking people to go to the dentist before their pull request can be considered.” Bryan Cantrill, Joyent
  38. 38. @nayafia Adopted a liberal contribution policy
  39. 39. @nayafia “Getting people to contribute is hard, When you distribute ownership people contribute more, And if anyone does something wrong, Git is good at removing things.” Mikeal Rogers, Node.js
  40. 40. @nayafia And some fun things started to happen:
  41. 41. @nayafia Way more contributions* * oh yeah there was a fork
  42. 42. @nayafia Free marketing: contributors became WOM ambassadors
  43. 43. @nayafia Attracted new perspectives, skills, backgrounds
  44. 44. @nayafia “People need to be enabled to do good work. When you make it clear and obvious what they can do, More people will do, And they won’t be people just like you.” Mikeal Rogers, Node.js
  45. 45. @nayafia Awesome!
  46. 46. @nayafia Another example of liberal contribution model: Rust
  47. 47. @nayafia Rust went from BDFL (2010) -> core team (2013) -> federated structure (2015)
  48. 48. @nayafia Rust has 1200+ contributors, many of whom make regular contributions
  49. 49. @nayafia “To the extent practical, we should include a diverse range of perspectives in both design and decision-making, and especially include people who are most directly affected by decisions: users.” Aaron Turon, Rust
  50. 50. @nayafia Some patterns for liberal contribution models:
  51. 51. @nayafia 1/ Floodgates, not bottlenecks
  52. 52. @nayafia 2/ “Consensus seeking” (discuss major concerns) rather than “consensus” (pure vote)
  53. 53. @nayafia 3/ Meet contributors where they are
  54. 54. @nayafia 4/ Default to yes
  55. 55. @nayafia Putting it all together
  56. 56. @nayafia Do BDFLs still matter?
  57. 57. @nayafia Yes!
  58. 58. @nayafia Some centralization is important, especially in early stage
  59. 59. @nayafia BFDLs can help incubate a project, set vision, and reduce noise early on
  60. 60. @nayafia As project matures, liberal contribution models can help with growth
  61. 61. @nayafia Project trajectory might look like this:
  62. 62. @nayafia Rust, Django, Node started with a BDFL, then transitioned out when community got big enough
  63. 63. @nayafia “Kings, presidents, and BDFLs have their place, and there are models of community that are aided by having them. But the longer I observe the Django community, the more I realize that our community doesn’t need them.” Jacob Kaplan-Moss, Django
  64. 64. @nayafia Do BDFLs work as a long-term strategy?
  65. 65. @nayafia Clojure uses a BDFL model
  66. 66. @nayafia Most Clojure contributions made by a few people
  67. 67. @nayafia Clojure is sustainably supported by Cognitect
  68. 68. @nayafia BDFL for the long term still requires “getting lucky”
  69. 69. @nayafia In the absence of a benefactor, the liberal contribution model is a pretty good hack to reduce maintainer burden.
  70. 70. @nayafia Will it work for everyone?
  71. 71. @nayafia Still too early to tell
  72. 72. @nayafia Not every project will fit into this model
  73. 73. @nayafia Highly dependent upon community and culture
  74. 74. @nayafia But liberal contribution models give us a framework for what sustainability could look like
  75. 75. @nayafia Questions? Special thanks to @mikeal for making this talk suck less , as well as @steveklabnik and @puredanger for their valuable perspectives on Rust and Clojure

×