perl wants you
TRANSCRIPT
Intro / Preface
● Augustina Ragwitz– Perl Developer since 2007
– First YAPC in 2012 (Madison)
● Currently at MediaMath in NYC (we're hiring)
● [email protected]: auggyfreenode irc: mmmporktwitter: @mmmpork
Why Am I Giving This Talk?
● I just made my first contributions● Share what I've learned● Encourage y'all to contribute!
Perl Wants You!
Open Source Software is Free!
● But there is a cost...
Open Source Software is like Public Radio
● Ok, more like Public Access TV...
Pay your dues! Contribute!
● Or just do it cuz it's fun
Start Small
● GOAL: Get familiar with the patching process first!
● Small code patches● Documentation● Unit Tests
Remember...
● Working in a new code base requires context!
● 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 – http://www.metacpan.org
● Perl core is managed through P5P (Perl 5 Porters)
Perl Core (Perl 5 Porters)
● http://dev.perl.org● 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
process
Easy Contributions
● Perl Core != C programming● Documentation● Patch supporting scripts ● Improve unit test coverage● Some bugs are tagged in RT
https://rt.perl.org/rt3/Public/Bug/Display.html?id=116469
● Check the todo list: http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod
How to contribute to Perl Core
● Pretty well documented here -– http://perldoc.perl.org/perlhack.html
● Perlbug + tips– http://perldoc.perl.org/perlbug.html
● And here's a short walkthrough
CPAN
● 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
PAUSE
● Perl Authors Upload Server● Where the file archives live (that CPAN
points to)● Anyone can get an account
– Only really need one to upload an archive
● http://pause.perl.org
CPAN Testers
● Goal: Test CPAN modules with as many versions and configurations of Perl as possible on as many platforms as possible
● http://www.cpantesters.org● http://stats.cpantesters.org
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?
Disclaimer
● All processes demonstrated here are my preference
– TIMTOWTDI FTW!
● Module maintainers will have their own preferences.
● 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 repository info
● Check Module documentation● Git::CPAN::Patch● Download the source tarball (last resort)
Where to Submit the Patch
● GitHub, BitBucket, SourceForge... if the author has specified the bugtracker
● Otherwise, use RT
RT
● http://rt.cpan.org● Send email to bug-acme-
[email protected]● Use RT if:
– The author says to, or
– You can't find any bugtracker info in the module
● You can attach your patch to the RT!
GitHub
● http://github.com● 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
message● 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 patch?
● If the author accepts your change, they merge it into their repository and release the code!
● If your change is rejected, the author will comment on the pull request or the RT ticket
– Don't give up!!
– Talk it out with the author
– Use the feedback to fix your patch
How do I know my patch was submitted?
● 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
ticket
What if the author doesn't respond, at all?
● Send email to [email protected]– Use this resource after several attempts to
contact the author
– State a log of your attempts to contact the author
– If the author is unresponsive, you could end up being the maintainer
● Fork!– 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!
Q&A