Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Start Contributing to Perl, It's Easy!

Start Contributing to Perl, It's Easy!

The Perl community wants YOU to contribute! Whether you can barely write a line of code or have been hacking for years, you can make meaningful contributions! This year I made my first contributions to modules on CPAN and to the Perl core. It was pretty easy and painless. This session offers a high level tour of the CPAN and Perl core contribution process as well as a short tutorial for potential contributors on how to get started with patching CPAN modules and making Perl core contributions.

Augustina Ragwitz

June 06, 2013
Tweet

More Decks by Augustina Ragwitz

Other Decks in Technology

Transcript

  1. Intro / Preface • Augustina Ragwitz – Perl Developer since

    2007 – First YAPC in 2012 (Madison) • Currently at MediaMath in NYC (we're hiring) • [email protected] irc.perl.org: auggy freenode irc: mmmpork twitter: @mmmpork
  2. Why Am I Giving This Talk? • I just made

    my first contributions • Share what I've learned • Encourage y'all to contribute!
  3. Start Small • GOAL: Get familiar with the patching process

    first! • Small code patches • Documentation • Unit Tests
  4. 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
  5. 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)
  6. 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
  7. Wow that sounds cool! Sooo, now what? • Look for

    things that are easy to contribute! • Easy = small fixes for learning the patching process
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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!
  14. 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.
  15. Submit a Patch to CPAN • You need the following:

    – The location of the source code repository – Where the author wants patches submitted
  16. Find the Repo • Some modules on Metacpan have repository

    info • Check Module documentation • Git::CPAN::Patch • Download the source tarball (last resort)
  17. Where to Submit the Patch • GitHub, BitBucket, SourceForge... if

    the author has specified the bugtracker • Otherwise, use RT
  18. 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!
  19. GitHub • http://github.com • Pull request is probably sufficient for

    submitting your patch • Optional: Create an RT ticket
  20. 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
  21. OK so how do I submit my patch!? • Download

    the source code • Make your changes • Submit the code
  22. 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
  23. 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
  24. 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...
  25. 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!
  26. Q&A