Skip to content

Commit 588bebd

Browse files
committed
Added The Contributor Curse
1 parent 4c597fa commit 588bebd

5 files changed

+590
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
<!DOCTYPE html>
2+
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
3+
<head>
4+
<meta charset="utf-8" />
5+
<meta name="generator" content="pandoc" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
7+
<title>The Contributor Competition</title>
8+
</head>
9+
<body>
10+
<h1 id="the-contributor-competition">The Contributor Competition</h1>
11+
<p><br></p>
12+
<div style="text-align: center;">
13+
<p><img src="images/ruin_sword.jpg" /></p>
14+
</div>
15+
<h4
16+
id="open-source-projects-compete-for-contributors.-how-can-you-win">Open
17+
source projects compete for contributors. How can you win?</h4>
18+
<hr>
19+
<h2 id="a-case-study.">A case study.</h2>
20+
<hr>
21+
<p>    Python and Julia are programming languages that fill a very
22+
similar niche. They're both dynamic scripting languages popular in the
23+
scientific computing space. People use them to replace Matlab and R. Why
24+
is Julia languishing, while Python is flourishing?</p>
25+
<br>
26+
<div style="text-align: center;">
27+
<p><img src="images/Python_vs_Julia.png" /></p>
28+
</div>
29+
<p><br></p>
30+
<p>    Julia has been relatively successful at attracting users. Most CS
31+
students that I went to college with learned Julia. But very few have
32+
been convinced to become contributors. I was curious, so I looked at the
33+
recent PRs. I was looking for a PR from someone not in the Julia
34+
programming language organization. I found one. It was the 63rd PR I
35+
looked at. A prolific contributor who wasn't technically in the
36+
organization, but had contributed all over the Julia package ecosystem.
37+
I scrolled through a few more pages, but couldn't find a name that I
38+
didn't recognize. The Julia community is very tight-knit and
39+
insular.</p>
40+
<p>    I did the same for Python. The fourth PR from the top was a first
41+
time contributor. The Julia organization on Github has 187 members.
42+
Python has by far more users, but only 129 members. Anyway, this is
43+
circumstantial evidence that doesn't prove anything. But something is
44+
going on here.</p>
45+
<p>    No language is "better" than another. Usually these comparisons
46+
are an excercise in tribalism. But bear with me here. Let's look at only
47+
the technology. In a vaccum, Julia just seems "better" than Python.</p>
48+
<p>    It's faster. It automatically deduces types, then uses them to
49+
jit compile using LLVM ORC. You can compile a function and read the
50+
assembly. It has perhaps (tied with ipython) the best REPL in the world,
51+
built into the base language. It solves the <a
52+
href="https://en.wikipedia.org/wiki/Expression_problem">expression
53+
problem</a>, which python cannot. It has a more principled package
54+
manager. You can run Julia code on the GPU. The compiler is extensible.
55+
Very fancy. It's a complex and incredible marvel of engineering. It has
56+
everything going for it, from a technical perspective.</p>
57+
<p>    Why, then, does Julia not attract contributors? Surely all of
58+
that should make people want to work on it, right?</p>
59+
<h2 id="the-problem">The problem</h2>
60+
<hr>
61+
<p>    Yeah, no. here's the problem. None of that matters. Nobody
62+
cares.</p>
63+
<p>    Fundamentally, what contributors want is to solve their own
64+
problems and optimize their own experience. They are selfish. They think
65+
about how to use the project to accomplish their own goals. They don't
66+
care about the maintainer's problems as much as the maintainer may hope.
67+
Especially if they cannot at a glance understand those problems. Julia
68+
is too complicated to contribute to without sacrifice. I know, because I
69+
have sacrificed.</p>
70+
<p>    Potential contributors may support your mission, but they won't
71+
sacrifice anything for it. They have a very short attention span. They
72+
want to contribute so that they can avoid pain, not take on more pain.
73+
If they can't immediately solve their problem, they will leave. They'll
74+
find a workaround without upstreaming a fix, or they will just find some
75+
other project. The only way to get someone to sacrifice for your cause
76+
is to pay them, or offer some other incentive. Nobody wants to clean up
77+
your mess for you.</p>
78+
<p>    I consider Julia to be a cautionary tale. I've had multiple
79+
conversations with the maintainers to the effect of "We have a long list
80+
of good first issues, why is nobody picking them up? We have like three
81+
hundred of them! Fix our type inference bugs! Debug our segfaults! Why
82+
are there no new contributors?" They forget that nobody wants to do
83+
that. People have their own problems to deal with.</p>
84+
<h2 id="the-solution">The Solution</h2>
85+
<hr>
86+
<p>    The solution is to drastically lower the barrier to entry while
87+
making the project as useful as possible. That way, useful contributions
88+
to your project will not require much sacrifice. The risk (wasted time)
89+
vs reward (features merged) calculation becomes more favorable. Then
90+
maybe some of those short term contributors will keep using your project
91+
and turn into long term contributors and maintainers. People that you
92+
can design new features with, who can review your code and point out
93+
conceptual issues.</p>
94+
<p>    It's actually not enough to lower the barrier to entry. You need
95+
to make sure that people know that it's low. This is more important than
96+
it actually being low. Frequent communication is key. If people know
97+
that they can go on discord for help implementing a feature and expect
98+
that it will be approved and merged within a day, then who wouldn't want
99+
to contribute? But if you need to find someone willing to review your PR
100+
and you haven't already befriended a maintainer, and you're not sure if
101+
you can even understand the code in the first place, then maybe not.</p>
102+
<h1 id="actionable-advice.">Actionable advice.</h1>
103+
<hr>
104+
<p><br></p>
105+
<div style="text-align: center;">
106+
<p><img src="images/Haruhi_Thumbs_Up.jpg" /></p>
107+
</div>
108+
</body>
109+
</html>

0 commit comments

Comments
 (0)