SlideShare a Scribd company logo
1 of 33
Download to read offline
Intro / Preface
● Augustina Ragwitz
– Perl Developer since 2007
– First YAPC in 2012 (Madison)
● Currently at MediaMath in NYC
(we're hiring)
● auggy@cpan.org
irc.perl.org: auggy
freenode irc: mmmpork
twitter: @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
– perl5-porters-subscribe@perl.org
● 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-
auggy@rt.cpan.org
● 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 modules@perl.org
– 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

More Related Content

What's hot

Proxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::StaticperlProxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::Staticperl
nohuhu
 
Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScript
nohuhu
 
Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)
Peter Kofler
 
Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)
Peter Kofler
 

What's hot (20)

Porting 100k Lines of Code to TypeScript
Porting 100k Lines of Code to TypeScriptPorting 100k Lines of Code to TypeScript
Porting 100k Lines of Code to TypeScript
 
Proxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::StaticperlProxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::Staticperl
 
From git to forge
From git to forgeFrom git to forge
From git to forge
 
Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020
Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020
Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020
 
Debugging (Django) application in PyCharm
Debugging (Django) application in PyCharmDebugging (Django) application in PyCharm
Debugging (Django) application in PyCharm
 
Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScript
 
Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)
 
Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)
 
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
 
Integração Contínua com PHPCI
Integração Contínua com PHPCIIntegração Contínua com PHPCI
Integração Contínua com PHPCI
 
Git grep cpan
Git grep cpanGit grep cpan
Git grep cpan
 
Improving your code design using Java
Improving your code design using JavaImproving your code design using Java
Improving your code design using Java
 
Jumping in Jakarta Open Source Project Everything nobody tells you
Jumping in Jakarta Open Source Project  Everything nobody tells youJumping in Jakarta Open Source Project  Everything nobody tells you
Jumping in Jakarta Open Source Project Everything nobody tells you
 
It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020
 
Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)
 
Besut Kode - Workshop 1
Besut Kode - Workshop 1Besut Kode - Workshop 1
Besut Kode - Workshop 1
 
First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016
First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016
First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016
 
Greetings from SlackBuilds.org
Greetings from SlackBuilds.orgGreetings from SlackBuilds.org
Greetings from SlackBuilds.org
 
Release & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual TestingRelease & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual Testing
 
Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)
 

Viewers also liked (18)

Itinerari de la Natura: El Cap de l´Horta
Itinerari de la Natura: El Cap de l´Horta   Itinerari de la Natura: El Cap de l´Horta
Itinerari de la Natura: El Cap de l´Horta
 
Viatge fí de_curs_-_coses_per_a_portar
Viatge fí de_curs_-_coses_per_a_portarViatge fí de_curs_-_coses_per_a_portar
Viatge fí de_curs_-_coses_per_a_portar
 
Principles of management+lecture two
Principles of management+lecture twoPrinciples of management+lecture two
Principles of management+lecture two
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
Test tepsi
Test tepsiTest tepsi
Test tepsi
 
BallrodPICTURES
BallrodPICTURESBallrodPICTURES
BallrodPICTURES
 
John Williams: Miguel Baidal
John Williams: Miguel BaidalJohn Williams: Miguel Baidal
John Williams: Miguel Baidal
 
Instruments electrónics samuel
Instruments electrónics samuelInstruments electrónics samuel
Instruments electrónics samuel
 
Agenda 21 decàleg 2010
Agenda 21 decàleg  2010Agenda 21 decàleg  2010
Agenda 21 decàleg 2010
 
Wedding schedule
Wedding scheduleWedding schedule
Wedding schedule
 
ballrodBOOK
ballrodBOOKballrodBOOK
ballrodBOOK
 
RFID FMI Presentation Ognyan Angelov
RFID FMI Presentation Ognyan AngelovRFID FMI Presentation Ognyan Angelov
RFID FMI Presentation Ognyan Angelov
 
Challenge.me
Challenge.meChallenge.me
Challenge.me
 
NPMG Databases Presentation
NPMG Databases PresentationNPMG Databases Presentation
NPMG Databases Presentation
 
Mvc training
Mvc trainingMvc training
Mvc training
 
Natura. Adrea H. Ceip Voramar
Natura. Adrea H. Ceip VoramarNatura. Adrea H. Ceip Voramar
Natura. Adrea H. Ceip Voramar
 
Manual eedp
Manual eedpManual eedp
Manual eedp
 
Academic vocabulary in use- Cambridge
Academic vocabulary in use- CambridgeAcademic vocabulary in use- Cambridge
Academic vocabulary in use- Cambridge
 

Similar to Perl wants you

Similar to Perl wants you (20)

Getting Started Contributing to Apache Spark – From PR, CR, JIRA, and Beyond
Getting Started Contributing to Apache Spark – From PR, CR, JIRA, and BeyondGetting Started Contributing to Apache Spark – From PR, CR, JIRA, and Beyond
Getting Started Contributing to Apache Spark – From PR, CR, JIRA, and Beyond
 
Me&g@home
Me&g@home Me&g@home
Me&g@home
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
 
Contributing to Apache Airflow | Journey to becoming Airflow's leading contri...
Contributing to Apache Airflow | Journey to becoming Airflow's leading contri...Contributing to Apache Airflow | Journey to becoming Airflow's leading contri...
Contributing to Apache Airflow | Journey to becoming Airflow's leading contri...
 
Getting big without getting fat, in perl
Getting big without getting fat, in perlGetting big without getting fat, in perl
Getting big without getting fat, in perl
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
 
Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
 
Puppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven DevelopmentPuppet Camp Paris 2014: Test Driven Development
Puppet Camp Paris 2014: Test Driven Development
 
20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris
 
Writing clean scientific software Murphy cleancoding
Writing clean scientific software Murphy cleancodingWriting clean scientific software Murphy cleancoding
Writing clean scientific software Murphy cleancoding
 
PostgreSQL Development Today: 9.0
PostgreSQL Development Today: 9.0PostgreSQL Development Today: 9.0
PostgreSQL Development Today: 9.0
 
Puppetizing Your Organization
Puppetizing Your OrganizationPuppetizing Your Organization
Puppetizing Your Organization
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open Source
 
30 days gcp info session final
30 days gcp info session final30 days gcp info session final
30 days gcp info session final
 
Python fundamental course curriculum
Python fundamental course curriculumPython fundamental course curriculum
Python fundamental course curriculum
 
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Perl wants you

  • 1. Intro / Preface ● Augustina Ragwitz – Perl Developer since 2007 – First YAPC in 2012 (Madison) ● Currently at MediaMath in NYC (we're hiring) ● auggy@cpan.org 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!
  • 4. Open Source Software is Free! ● But there is a cost...
  • 5. Open Source Software is like Public Radio ● Ok, more like Public Access TV...
  • 6. Pay your dues! Contribute! ● Or just do it cuz it's fun
  • 7. Start Small ● GOAL: Get familiar with the patching process first! ● Small code patches ● Documentation ● Unit Tests
  • 8. Remember... ● Working in a new code base requires context! ● Don't be intimidated!
  • 9. 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
  • 10. 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)
  • 11. Perl Core (Perl 5 Porters) ● http://dev.perl.org ● p5p mailing list – perl5-porters-subscribe@perl.org ● irc channel: #p5p on irc.perl.org
  • 12. 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
  • 13. Wow that sounds cool! Sooo, now what? ● Look for things that are easy to contribute! ● Easy = small fixes for learning the patching process
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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!
  • 20. Alright, that sounds good! How do I get started?
  • 21. 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.
  • 22. Submit a Patch to CPAN ● You need the following: – The location of the source code repository – Where the author wants patches submitted
  • 23. Find the Repo ● Some modules on Metacpan have repository info ● Check Module documentation ● Git::CPAN::Patch ● Download the source tarball (last resort)
  • 24. Where to Submit the Patch ● GitHub, BitBucket, SourceForge... if the author has specified the bugtracker ● Otherwise, use RT
  • 25. RT ● http://rt.cpan.org ● Send email to bug-acme- auggy@rt.cpan.org ● 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!
  • 26. GitHub ● http://github.com ● Pull request is probably sufficient for submitting your patch ● Optional: Create an RT ticket
  • 27. 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
  • 28. OK so how do I submit my patch!? ● Download the source code ● Make your changes ● Submit the code
  • 29. 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
  • 30. 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
  • 31. What if the author doesn't respond, at all? ● Send email to modules@perl.org – 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...
  • 32. 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!
  • 33. Q&A