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