SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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 TypeScriptTiny
 
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::Staticperlnohuhu
 
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 2020César Hernández
 
Debugging (Django) application in PyCharm
Debugging (Django) application in PyCharmDebugging (Django) application in PyCharm
Debugging (Django) application in PyCharmpavelkoci
 
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 JavaScriptnohuhu
 
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 PHPCIThiago Paes
 
Git grep cpan
Git grep cpanGit grep cpan
Git grep cpancPanel
 
Improving your code design using Java
Improving your code design using JavaImproving your code design using Java
Improving your code design using JavaRoan 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 youRoan 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 2020Cé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
 
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 2016ManageIQ
 
Greetings from SlackBuilds.org
Greetings from SlackBuilds.orgGreetings from SlackBuilds.org
Greetings from SlackBuilds.org55020
 
Release & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual TestingRelease & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual TestingDrew Hannay
 
Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Peter Kofler
 

Was ist angesagt? (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)
 

Andere mochten auch

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 twoazzatahaalamin
 
BallrodPICTURES
BallrodPICTURESBallrodPICTURES
BallrodPICTURESballrod
 
John Williams: Miguel Baidal
John Williams: Miguel BaidalJohn Williams: Miguel Baidal
John Williams: Miguel BaidalPaquivoramar
 
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 scheduleKhun Ben
 
ballrodBOOK
ballrodBOOKballrodBOOK
ballrodBOOKballrod
 
RFID FMI Presentation Ognyan Angelov
RFID FMI Presentation Ognyan AngelovRFID FMI Presentation Ognyan Angelov
RFID FMI Presentation Ognyan AngelovOgnyan Angelov
 
NPMG Databases Presentation
NPMG Databases PresentationNPMG Databases Presentation
NPMG Databases PresentationOgnyan 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
 

Andere mochten auch (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
 

Ähnlich wie 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 BeyondDatabricks
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101Linaro
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache SparkHolden 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 perlDean Hamstead
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101Linaro
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013Linaro
 
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 IntroductionSage Sharp
 
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 DevelopmentPuppet
 
20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-paris20140408 tdd puppetcamp-paris
20140408 tdd puppetcamp-parisJohan De Wit
 
Writing clean scientific software Murphy cleancoding
Writing clean scientific software Murphy cleancodingWriting clean scientific software Murphy cleancoding
Writing clean scientific software Murphy cleancodingsaber tabatabaee
 
Puppetizing Your Organization
Puppetizing Your OrganizationPuppetizing Your Organization
Puppetizing Your OrganizationRobert 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 SourceAll Things Open
 
30 days gcp info session final
30 days gcp info session final30 days gcp info session final
30 days gcp info session finalDomendra Sahu
 
Python fundamental course curriculum
Python fundamental course curriculumPython fundamental course curriculum
Python fundamental course curriculumEngiGyan .
 
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-20140402Johan De Wit
 

Ähnlich wie 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
 

Kürzlich hochgeladen

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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 WorkerThousandEyes
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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 Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

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