Open Source Software is Free!
● But there is a cost...
Open Source Software is like
● Ok, more like Public Access TV...
Pay your dues!
● Or just do it cuz it's fun
● GOAL: Get familiar with the patching
● Small code patches
● Unit Tests
● Working in a new code base requires
● Don't be intimidated!
Talk to the Community!
● A lot of communication happens on IRC
● If you're not familiar with IRC →
● Server is irc.perl.org
● Check documentation for irc channel info
● Or ask in #perl-help or #p5p
Where can I contribute to Perl?
● Any module on CPAN is fair game –
● Perl core is managed through P5P (Perl 5
Perl Core (Perl 5 Porters)
● p5p mailing list
● irc channel: #p5p on irc.perl.org
Get your name in it!
● Pumpkings – a rotating group of individuals
responsible for cobbling together changes
nd releasing new Perl versions
● Patches go into new versions of Perl
● Submit a patch and get immortalized!
– Your name goes into the release doc
Wow that sounds cool!
Sooo, now what?
● Look for things that are easy to contribute!
● Easy = small fixes for learning the patching
● Perl Core != C programming
● Patch supporting scripts
● Improve unit test coverage
● Some bugs are tagged in RT
● Check the todo list:
How to contribute to Perl Core
● Pretty well documented here -
● Perlbug + tips
● And here's a short walkthrough
● The Comprehensive Perl Archive Network
● AKA the place where modules live
● Basically, an index that maps a module
name to a file archive location
● http://www.metacpan.org - provides
additional metadata not found in cpan.org
● Perl Authors Upload Server
● Where the file archives live (that CPAN
● Anyone can get an account
– Only really need one to upload an archive
● Goal: Test CPAN modules with as many
versions and configurations of Perl as
possible on as many platforms as possible
What should I contribute to CPAN?
● File a bug
● Improve documentation on a module you
struggled to use
– Especially if you got help from the author!
● If you had to make local changes to make it
work, submit the patch!
Alright, that sounds good!
How do I get started?
● All processes demonstrated here are my
– TIMTOWTDI FTW!
● Module maintainers will have their own
● Check with the maintainer before following
these steps to submit a patch.
Submit a Patch to CPAN
● You need the following:
– The location of the source code repository
– Where the author wants patches submitted
Find the Repo
● Some modules on Metacpan have
● Check Module documentation
● Download the source tarball (last resort)
Where to Submit the Patch
● GitHub, BitBucket, SourceForge... if the
author has specified the bugtracker
● Otherwise, use RT
● Send email to bug-acme-
● Use RT if:
– The author says to, or
– You can't find any bugtracker info in the
● You can attach your patch to the RT!
● Pull request is probably sufficient for
submitting your patch
● Optional: Create an RT ticket
How do I write a patch that's likely
to get merged?
● Don't submit a large complex patch
● Each issue should be its own commit
● Each commit should have a clear commit
● Be consistent, stick to the author's style
● Update documentation when appropriate
● Write tests to support your changes
● Include a changelog entry
OK so how do I submit my patch!?
● Download the source code
● Make your changes
● Submit the code
What happens when I submit a
● If the author accepts your change, they
merge it into their repository and release
● If your change is rejected, the author will
comment on the pull request or the RT
– Don't give up!!
– Talk it out with the author
– Use the feedback to fix your patch
How do I know my patch was
● RT responds with an email
– If you don't get an email, wait a couple of
days and resubmit
● GitHub shows your pull request
– If you don't hear anything, submit an RT
What if the author doesn't respond,
● Send email to firstname.lastname@example.org
– Use this resource after several attempts to
contact the author
– State a log of your attempts to contact the
– If the author is unresponsive, you could
end up being the maintainer
– This is Open Source after all...
Collaboration is fun!
● Fun to work on interesting things!
● Get others excited about your ideas... or
get excited about someone else's!
● Good feeling to help out others
● Learn new things about programming!
● Even people who aren't using Perl at work
contribute because it's FUN!