A clear undercurrent pervades all discussion of potential contributions
to the open source projects I have been involved with. Everyone involved,
contributors and maintainers both, assumes that open source projects should
be glad of all the contributions they receive, that contributors are in
short supply, and that every effort should be made to accommodate those
willing to donate their time.
To some extent, this is true, to be sure, but I think the case is
frequently overstated. One should be friendly to contributors, and honor
their contributions, but a contribution to a running project is not a
one-sided transaction. In fact, open source projects offer a precious
commodity: maintenance in perpetuity, at least for the project's lifetime.
In larger organizations, this sort of maintenance is quite often the subject
of multi-million dollar "support" contracts, and is in fact the bedrock upon
which the towering edifice of the software-support industry is built.
It has been gradually dawning on me, mostly since the institution of
UQDS on
Twisted, that this is not the only benefit a contributor receives from a
good project. The careful feedback that an experienced peer reviewer can
give to a contributor is valuable professional development tool. This is
true even if the reviewer isn't particularly more experienced as a
programmer or as a reviewer: simply getting a different set of eyes, and a
fresh perspective on your code can show you problems with it that would
never have occurred to you on your own.
Perhaps more importantly, it is actually prestigious to contribute
to certain projects, and not in the cutesy-happy way that terms like "gift
culture" imply. "Rank" in a merit-based hierarchy such as the Apache project
can clearly
contribute to one's employment prospects, as much as any other
professional qualification.
I often wrestle with the problem of "recruiting" for projects which
cannot pay their contributors, and has apparently very little to offer. As
these notions occurred to me, I noticed a similarity in these sorts of
benefits to another sort of contribution to a community: academia.
Recruiting for an open-source project is sometimes laughed off by
potential contributors. "Yeah, right, like I'd spend my time writing code
for free." Personally, I've always found the best of any field like what
they do enough to do it for free, but still... this objection seems
reasonable. It is ridiculous to give your time away when you could be
getting paid for it, right?
Let's examine the average college student at a prestigious technical
university - let's say CalTech or MIT - for a moment. They (or their
parents) pay substantial sums of money for the privilege of attending the
school. They are forced to do rote work - often in excess of 60 hours per
week. At the end of four years of this gauntlet, they are presented with a
piece of paper. As the son of one MIT alum and the fiancé of another, I can
vouch for the fact that this is no cake-walk.
Of course, presented like this it doesn't sound so glamorous. As a
dropout
myself, I have an incentive to make it sound bad; but in our high-tech
society the value of education is well-understood. I don't think I need to
explain to any likely reader of this blog why that piece of paper might be
worth something to a few of those students one day. Although many students
might receive some form of scholarship or free tuition, nobody in their
right mind would suggest that these schools should compensate their
students, or frantically beg students to enhance their academic community by
giving them whatever research they feel they have time for...
So, let's look at the Twisted project from this perspective. Community
dedicated to technical excellence? Check. Continuous, harsh abuse of its
participants self-esteem? Check.
Years of incredibly tedious drudge-work to complete? Check.
We don't have a piece of paper, though.
This is actually very important, and I think can explain a lot of
difficulty in recruiting. Often, contributing to an open source project such
as Twisted is described as a happy, fun exercise, in the hopes that it will
attract contributors. It can be fun, of course, but on the whole that is not
the real motivator, and so this is generally recognized as false by
potential participants and they move on. As we have moved further towards
honesty about that fact - for example, instituting an unapologetic review
process that rejects a substantial number of contributions - we have
paradoxically gotten more activity, not less. Contributors actively
engaged in the project have noticed an improvement in their own skills and
are excited about that fact.
Still, it's an uncommon skill to be able to recognize that you're
improving and be happy with that alone. I think that some public form of
recognition could go a long way towards getting more people involved. I've
been pondering different ways that we might honor contributors, from a
branded USB drive, to some kind of offical certificate proclaiming a "rank",
all the way to something like a "class ring" for contributors above a
certain level.
That's probably not all it takes to get people excited about
contribution, though. Institutions like MIT have centuries of cultural
context associated with them. You can see this in movies: when a hacker
character is being introduced in movie which prominently features the tubes, the whispers
in the background often talk about the hacker in question's academic history
at a selective university. I have been trying to imagine what the world
would be like if, in the dramatic scene where Extreme Hacking Prodigy #2 is
being introduced, the muted voices in the foreground of the scene were
instead exchanging knowing mutters about his near-impossible record of
over one hundred patches accepted to Twisted - in less than a
year!
More importantly than what that would would be like - how do we get there
from here?