More details on the CPAN Pull Request Challenge

The CPAN Pull Request challenge has had way more signups than I was expecting: 343 so far! Some are very experienced Perl programmers and CPAN contributors; some are long-term Perl programmers using this as a way to "give back"; a few are new to everything.

I wouldn't have predicted 300 pull requests in the entire year. Now we might get that in January alone! I know some people are concerned of the effect that this wave of locusts enthusiastic contributors might have, particularly if authors have to start dealing with pull requests that don't really add much value.

As a result I think it's probably helpful to give some more details on the challenge, give CPAN authors a chance to comment, and even to opt out.


When I started this, I expected a dozen or so people to take part, and the goal was "help improve CPAN and have fun". With so many people taking part, and such a range of experience, there are more opportunities here. So now, I think the goals are:

  • Help improve CPAN, by fixing bugs, improving documentation, updating code and distributions to best practices and current conventions.
  • Help people become contributors to CPAN and the Perl community. When signing up, a lot of people have said they've been programming Perl for a good while and wanted to "give something back", but didn't know how to start. This might involve learning about Perl, the CPAN toolchain and related ecosystem, and git and github.
  • Evolve and tune tools, best practices, and documentation.
  • Have fun while learning from and helping each other.
  • Make a bit of noise about Perl, CPAN, and the awesome community.

We have a mailing list and IRC channel. I've been very happily surprised at how helpful everyone is being to each other. It's a very positive group, at least for now — wait until they get some of my early CPAN dists!

This is not about one group of people teaching another group: we'll all learn things from each other. I've certainly learned a lot already, improving my git usage.

How it works

  • At the start of each month a script will select a distribution for each participant, and email them their 'assignment'. If there are known things that can usefully be done for the distribution, these will be pointed out in the email. I expect the list of these things to grow and evolve through the year.
  • Candidate dists for assignment must (a) have a github repo, and (b) have the repo listed in the dist's metadata.
  • Dists are scored according to how likely it is that there's something helpful to be done (bugs, CPAN Testers fails, CPANTS flags, etc). I assign the dists with higher scores first.
  • You won't get your own dists assigned to you (if you let me know your PAUSE id).
  • By default each CPAN author only has one of their distributions assigned per month, to "spread the load". You can sign up for more: see below.
  • Everyone has a month to do at least one pull request.
  • I'll be publishing a list of assignments, but just github username and assigned dist. Participants can opt out of being in the list. Please respect their decision and don't go scraping github to work out the list.

Calling all CPAN Authors

  • Please be patient if you're contacted by someone who wants to do a pull request for one of your distributions.
  • They might suggest things for which you think "it's quicker for me to just do that myself". Sure it is, but you'll help grow our community if you let (nay help) them send you a pull request.
  • If you're happy to have more than one of your dists assigned per month, email me the number!
  • If you want your dists considered, they have to be on github, and the dist's metadata must list the repo.
  • If you have particular dists with things you'd like done, either email me the dist names and I'll +1 them, or add NEEDHELP as co-maint. The sucker participant who gets your dist will (hopefully) then get in touch to discuss it with you.
  • If you have certain dists that you want excluded, just let me know. I can also black-list you entirely, if you want. There's plenty to go round, so don't feel bad about asking for this.
  • If you're not happy with how someone interacts with you, and you need to blow off steam, feel free to to email me or /msg me (neilb) on Remember though that everyone has joined this wanting to contribute to CPAN.

Calling all (prospective) participants

  • You can still sign up if you want to. Email me (neil at bowers dot com) your github username and your PAUSE id if you have one. Let me know if you're happy to be included in the published list each month.
  • Please be polite, and treat the author, and your assigned dist, with respect. Just as this might be your first pull request, it might be their first CPAN dist, or their first experience of receiving a pull request.
  • If you really don't like the dist you get, you can ask for a new one.
  • Some months you might be assigned a dist where the only useful thing you can do is improve the documentation. That is still a valuable contribution, so please don't ask for a new dist, but improve the doc and hope for a different challenge next month!
  • Once you've done your PR for the month, you could still contribute by helping others looking for ideas on what to do with their assignment.
  • This is meant to be fun. A little bit of deadline pressure is fine, but please don't let this stress you. It's fine to drop out. You can drop back in again later.
  • Please be patient: we're working this out as we go along. If you ask a question on IRC or email, you might not get a response right away. If you don't hear back from me in a day or two, feel free to ping me again.

Leave a comment

About Neil Bowers

user-pic Perl hacker since 1992.