SlideShare a Scribd company logo
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

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
Tiny
 
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
 
From git to forge
From git to forgeFrom git to forge
From git to forge
Nicolas Corrarello
 
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
César Hernández
 
Debugging (Django) application in PyCharm
Debugging (Django) application in PyCharmDebugging (Django) application in PyCharm
Debugging (Django) application in PyCharm
pavelkoci
 
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
 
Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)
Peter Kofler
 
Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)
Peter Kofler
 
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...
Geshan Manandhar
 
Integração Contínua com PHPCI
Integração Contínua com PHPCIIntegração Contínua com PHPCI
Integração Contínua com PHPCI
Thiago Paes
 
Git grep cpan
Git grep cpanGit grep cpan
Git grep cpan
cPanel
 
Improving your code design using Java
Improving your code design using JavaImproving your code design using Java
Improving your code design using Java
Roan Brasil Monteiro
 
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
Roan Brasil Monteiro
 
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
César Hernández
 
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)
Peter Kofler
 
Besut Kode - Workshop 1
Besut Kode - Workshop 1Besut Kode - Workshop 1
Besut Kode - Workshop 1
John Vandenberg
 
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
ManageIQ
 
Greetings from SlackBuilds.org
Greetings from SlackBuilds.orgGreetings from SlackBuilds.org
Greetings from SlackBuilds.org
55020
 
Release & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual TestingRelease & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual Testing
Drew Hannay
 
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

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
Paquivoramar
 
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_portarPaquivoramar
 
Principles of management+lecture two
Principles of management+lecture twoPrinciples of management+lecture two
Principles of management+lecture two
azzatahaalamin
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
azzatahaalamin
 
Test tepsi
Test tepsiTest tepsi
Test tepsi
aleprincs
 
BallrodPICTURES
BallrodPICTURESBallrodPICTURES
BallrodPICTURESballrod
 
John Williams: Miguel Baidal
John Williams: Miguel BaidalJohn Williams: Miguel Baidal
John Williams: Miguel Baidal
Paquivoramar
 
Instruments electrónics samuel
Instruments electrónics samuelInstruments electrónics samuel
Instruments electrónics samuelPaquivoramar
 
Agenda 21 decàleg 2010
Agenda 21 decàleg  2010Agenda 21 decàleg  2010
Agenda 21 decàleg 2010Paquivoramar
 
Wedding schedule
Wedding scheduleWedding schedule
Wedding schedule
Khun Ben
 
ballrodBOOK
ballrodBOOKballrodBOOK
ballrodBOOK
ballrod
 
RFID FMI Presentation Ognyan Angelov
RFID FMI Presentation Ognyan AngelovRFID FMI Presentation Ognyan Angelov
RFID FMI Presentation Ognyan AngelovOgnyan Angelov
 
Challenge.me
Challenge.meChallenge.me
Challenge.me
Ognyan Angelov
 
NPMG Databases Presentation
NPMG Databases PresentationNPMG Databases Presentation
NPMG Databases Presentation
Ognyan Angelov
 
Mvc training
Mvc trainingMvc training
Mvc trainingxioxu
 
Natura. Adrea H. Ceip Voramar
Natura. Adrea H. Ceip VoramarNatura. Adrea H. Ceip Voramar
Natura. Adrea H. Ceip VoramarPaquivoramar
 
Manual eedp
Manual eedpManual eedp
Manual eedp
aleprincs
 
Academic vocabulary in use- Cambridge
Academic vocabulary in use- CambridgeAcademic vocabulary in use- Cambridge
Academic vocabulary in use- Cambridge
Miriam María Serrano Pertierra
 

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

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
Databricks
 
Me&g@home
Me&g@home Me&g@home
Me&g@home
Vytautas Dauksa
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
Linaro
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
Holden Karau
 
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...
Kaxil Naik
 
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
Dean Hamstead
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
Linaro
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
Linaro
 
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)
Lorna Mitchell
 
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...
Aurélien Pupier
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
Sage Sharp
 
20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris
Johan De Wit
 
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
Puppet
 
Writing clean scientific software Murphy cleancoding
Writing clean scientific software Murphy cleancodingWriting clean scientific software Murphy cleancoding
Writing clean scientific software Murphy cleancoding
saber tabatabaee
 
PostgreSQL Development Today: 9.0
PostgreSQL Development Today: 9.0PostgreSQL Development Today: 9.0
PostgreSQL Development Today: 9.0
PostgreSQL Experts, Inc.
 
Puppetizing Your Organization
Puppetizing Your OrganizationPuppetizing Your Organization
Puppetizing Your Organization
Robert Nelson
 
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
All Things Open
 
30 days gcp info session final
30 days gcp info session final30 days gcp info session final
30 days gcp info session final
Domendra Sahu
 
Python fundamental course curriculum
Python fundamental course curriculumPython fundamental course curriculum
Python fundamental course curriculum
EngiGyan .
 
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
Johan De Wit
 

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
 
20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris
 
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
 
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

Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 

Recently uploaded (20)

Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 

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