Not Everyone Needs To Be A Rockstar

Getting started in open-source software is intimidating. I know, I’ve been
there: it’s always a little scary to have someone you’ve never met before
critique your code, particularly if it’s someone whose work you respect and
admire. More than that, though, I suspect that at least part of the fear most
people (myself included) feel about getting into open-source boils down to one
simple question.

What If I’m Not Good Enough?

The huge proportion of the news we hear about open-source software is related
to or contextualised by discussion about the individuals who maintain these
software projects. Think of Linus Torvalds
and Linux/Git, think of Guido van Rossum
and Python; hell, think of Kenneth Reitz
and Python Requests. These people are all lauded, quite rightly, for both the
quality of their code and the skill they showed in writing it. The maintainers
of significant and notable open-source software projects are in many ways the
rockstars of the programming world.

Hearing so much about these individuals causes programmers to draw comparisons
with themselves, and the reality of the situation is that for most programmers
these comparisons will inevitably turn out negatively. This is not our fault:
we are individuals trying to do the best we can in an industry where the very
best amongst us are more than 10 times more productive
than the average. We should not be surprised that, if we’re honest with
ourselves, we don’t measure up.

It is easy, therefore, to conclude that we have nothing to give to the
open-source world. After all, if the Python open-source community has already
got Kenneth Reitz, and Zed Shaw, and
Armin Rigo, what the hell can I bring to the table?

Open Source Has Enough Rockstars

One of the major unifying characteristics of these open-source rockstars is
that they’re large-scale thinkers. When I say this I don’t meant that they
can’t or don’t solve small-scale problems: they do that every moment of every
day. What I mean is that they tend to think more of the cohesive whole of their
project than of the minutiae of it. When they consider making changes to their
codebases they tend to be thinking in terms of large-scale refactorings or
significant feature changes.

This is brilliant, and there’s no-one better suited for it. Python Requests is
undergoing just such a refactoring right now, and I can say, hat in hand, that
Kenneth will do a much better job of adding the new functionality than I ever
would. Without people who can think and design on this kind of scale, and then
execute, open source software would be significantly less impressive.

However, while this is going on, people are raising issues. They’re filing bug
reports, and finding mistakes in documentation, and finding that the software
library you’re using doesn’t function with a specific version on a specific
platform. And all of these little tasks are sitting there, preventing the
rockstars from doing what they’re good at and what they want to: thinking big
picture.

In many ways, then, what these rockstars need is not some other rockstar who
can come in and add some snazzy new feature and a whole battery of tests for it
in two hours. What they need is someone to come in and take it upon themselves
to answer bug reports, and fix and write documentation, and make the changes it
takes to get the library to function properly on 15 different types of machine,
and make the small fixes that don’t take much conceptual effort for the
rockstar but do take a precious hour and a context switch away from their real
focus.

Every open-source project of a certain size has these people, and in many ways
these people keep the project moving forward. They aren’t indispensable: for
each rockstar there are quite a few developers who are simply ‘good enough’;
but they are important. Much like a good project manager,
these people act like a force multiplier: if each hour the rockstar puts in is
worth ten of theirs, then putting in two hours to give the rockstar one is
actually giving the project 5 times more resource than you put in.

So You Aren’t A Rockstar? Own It.

In the end, open source needs people to do the less-glamorous work that none of the rockstars wants to do. And that’s really ok. You’re just as valuable doing
that as anyone else, and you’re a lot more valuable doing that than nothing at
all.

I work on the Requests project a lot, and that project has some great guys
contribute to it. Quite aside from Kenneth himself, some very competent people
have contributed code to it, doing things that are quite probably beyond me.

But a year of contribution adds up: I’ve got the third largest number of
commits to the repository, the sixth highest number of deletions and the fourth
highest number of additions. None of my changes are glamorous: most are small
and a large number are documentation-related.

But the time I spend plugging these leaks is time that others get to make the
changes I’m not smart enough or talented enough to do. And that makes my
contribution valuable. It’s not glamorous, but it’s important, and that suits
me fine.