Why should you join CPAN-PRC?

The CPAN Pull Request Challenge (PRC) aims to improve the quality of code on CPAN, the online archive of Perl modules, by having participants submit pull requests to CPAN module authors.

Every month participants are assigned a new module to improve, and submit pull requests to the module repo on GitHub. Participants are not competing with each other, rather the “challenge” is to keep up with your monthly assignments.

How to sign up

You can join as an individual or as a team. A team could be your company, you and a few friends, or your local Perl Mongers group.

Simply email Neil Bowers (“neil at bowers dot com”) your GitHub username and PAUSE ID if you have one, or if joining as a group, your GitHub organization name. Tell him you want to join the challenge, and you are in!

How it works

Once per month, you will receive an email noting your assigned distribution:

You can fix a failing test, fix an issue, correct a typo, any kind of improvement. If you’re not sure where to start, there are services on top of CPAN that can help identify issues:

CPAN Testers is a Continuous Integration service that often identifies issues with failing tests and/or platform specific bugs

Request Tracker is the default bug tracker for CPAN modules (issues may also be listed on GitHub)

CPAN Cover reports on code coverage for tests

CPANTS is a “kwalitee” assessment tool

A good place to start is metacpan, a CPAN search engine which links to all of the above services. Scan through the module documentation and related information, to try and find things that need fixing or enhancing.

Once you’ve identified the changes you’d like to make, fork the module on GitHub, commit your changes and open a pull request with the new changes. Then reply to your assignment email saying “It’s done!”, and link to your pull requests on GitHub:

Although it’s better to do your assignments every month, you may not be willing to commit to it, and that is fine! If something comes up, you can skip a month. If you need more time for a module, you can stick to your assignment for longer. There’s a solution as long as you want to keep participating.

Why join?

One reason is that this year might be your last chance! It may evolve, but this will most likely be the last year you can get a CPAN module assignment.

I joined this challenge in 2015 when I was still at college. It motivated me to read other people’s code, even though I had a hard time understanding it. It also taught me a lot about the Open Source ecosystem. I did 4 assignments in 2015, another 4 in 2016, and doubled to 8 in 2017. I am also part of Team-ZipRecruiter, which has been participating since April 2017. It really is fun!

If you are looking for more reasons, here are few:

It’s a great way to study “production ready” code and communicate with fellow programmers

You can contribute to open source code, support Perl and build your resume

Assignments introduce you to code on CPAN that you otherwise might have missed

If you’re part of a group it could be a fun team-building event

Sounds interesting? Then send an email to Neil (“neil at bowers dot com”) with your GitHub username!