75
Emerging Models for Open Source Contributions @nayafia for GitHub CodeConf

Emerging Models for Open Source Contributions

Embed Size (px)

Citation preview

Emerging Models for Open Source Contributions

@nayafia for GitHub CodeConf

@nayafia

1980s-late 1990s: BDFLLate 1990s-mid 2010s: Meritocracy

Mid 2010s-today: Liberal contribution

@nayafia

Different models solve for different “market” needs

@nayafia

Market = users + contributors

@nayafia

1980s-late 1990s: BDFL(Linux)

@nayafia

Fewer users, fewer contributors

@nayafia

The BDFL has benefits:

@nayafia

Centralized leadership and governance

@nayafia

Centralized roadmap and direction

@nayafia

But BDFLs are also by definition less democratic.

@nayafia

And BDFLs made companies nervous.

@nayafia

Open source needed company buy-in to

succeed.

@nayafia

Late 1990s-mid 2010s: Meritocracy(Apache)

@nayafia

Apache flattened the BDFL model, enabling multiple actors

to participate.

@nayafia

Anyone (with merit) can contribute

@nayafia

Anyone (with merit) can vote on decisions

@nayafia

This did wonders for company buy-in

@nayafia

(And is partially why open source thrives today)

@nayafia

But there was still friction in the form of one little

clause:

@nayafia

*with merit

@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

@nayafia

If you wanted to be part of a meritocracy, you needed

to prove yourself.

@nayafia

And you prove yourself by spending time on a project.

@nayafia

This makes sense in theory (only people who’ve

“earned it” get a voice)

@nayafia

But in practice, it favored those who could “pay [with

time, money] to play”

@nayafia

Mid 2010s-now: Liberal contribution(Node.js)

@nayafia

More users, more tech talent than ever before

@nayafia

Git + GitHub made it easier for anyone to jump in on projects

@nayafia

49% of ppl on top GitHub projects only contributed once

@nayafia

More noise from casual contributors

@nayafia

Under a meritocracy, this was a bad thing

@nayafia

Casual contributors hadn’t “earned” their voice

@nayafia

Make them go away!

@nayafia

But some people looked at casual contributors and saw

an opportunity.

@nayafia

Instead of tuning out the noise, Node.js decided to harness and

redirect it

@nayafia

Dropped their CLA requirement

@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

@nayafia

Adopted a liberal contribution policy

@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

@nayafia

And some fun things started to happen:

@nayafia

Way more contributions*

* oh yeah there was a fork

@nayafia

Free marketing: contributors

became WOM ambassadors

@nayafia

Attracted new perspectives, skills, backgrounds

@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

@nayafia

Awesome!

@nayafia

Another example of liberal contribution

model: Rust

@nayafia

Rust went from BDFL (2010) -> core team (2013) -> federated

structure (2015)

@nayafia

Rust has 1200+ contributors, many of whom make regular contributions

@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

@nayafia

Some patterns for liberal contribution models:

@nayafia

1/ Floodgates, not bottlenecks

@nayafia

2/ “Consensus seeking” (discuss major

concerns) rather than “consensus” (pure vote)

@nayafia

3/ Meet contributors where they are

@nayafia

4/ Default to yes

@nayafia

Putting it all together

@nayafia

Do BDFLs still matter?

@nayafia

Yes!

@nayafia

Some centralization is important, especially in early stage

@nayafia

BFDLs can help incubate a project, set vision, and reduce

noise early on

@nayafia

As project matures, liberal contribution models can help

with growth

@nayafia

Project trajectory might look like this:

@nayafia

Rust, Django, Node started with a BDFL, then transitioned out when

community got big enough

@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

@nayafia

Do BDFLs work as a long-term strategy?

@nayafia

Clojure uses a BDFL model

@nayafia

Most Clojure contributions made by a few people

@nayafia

Clojure is sustainably supported by Cognitect

@nayafia

BDFL for the long term still requires “getting lucky”

@nayafia

In the absence of a benefactor, the liberal contribution model is a

pretty good hack to reduce maintainer burden.

@nayafia

Will it work for everyone?

@nayafia

Still too early to tell

@nayafia

Not every project will fit into this model

@nayafia

Highly dependent upon community and culture

@nayafia

But liberal contribution models give us a framework for what sustainability could look like

@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