SlideShare a Scribd company logo
Contributing to an Open
Source project on GitHub
Andy Waite
June 2012
Why contribute?
Learn a technology outside of your day job
Scratch an itch
Remove a blocker
Learn by peer review
Collaborate and share knowlege
Promote yourself and get noticed
Your portfolio is your CV
Coderwall
What to contribute?
Fix a bug for a problem you’ve discovered
Add behaviour for a new feature you want
Resolve an issue reported by someone else
Improve the documentation (what confused you?)
Expand the test coverage
Provide a example
The old way
Mailing lists, FTP servers
diff oldFile newFile > mods.diff
patch < mods.diff
SourceForge
The new way
GitHub - founded in 2008
Now over 1.7 million users, 3 million repos
Code, issues, wiki, hosting, stats, social, API
Major projects: Node, Rails, jQuery, Backbone, Linux
Kernel, PHP, Zend 2, Symfony, Underscore, Git,
Wordpress, Drupal
Big companies: Google, Microsoft, Apple
All free for public projects
Getting started
Create a GitHub account
Setup Git
Identify the original project (beware of forks)
Check for signs of life
Fork the original project
One click to fork into your account
andyw8/WidgetMagic → samfrench/WidgetMagic
Clones the full history, branches, tags
Clone your fork locally
git clone git@github.com:samfrench/WidgetMagic.git
cd WidgetMagic
Run the test suite
Install the dependencies
Run the test suite
Common language conventions:
Ruby: rake
Java: mvn
Create a topic branch
Use one branch per topic (bug, feature, etc.)
git checkout -b allow-duplicate-widgets
Display the current branch in your shell prompt
Commit your change
git add WidgetMagic.rb
git commit -m "Allow duplicate widgets"
Push to your remote repo
git push origin allow-duplicate-widgets
Create a pull request
Pull Request button appears on your repo
A pull request starts a conversation
It might not be accepted right away
Improve it and push the new commits
Merging the pull request
Project maintainer merges your commits and closes
the pull request
GitHub sends you an notification
Your contribution shows in the commit log
Stay up-to-date
A few months later you want to contribute again
But changes to the original project don’t propogate
automatically so your fork becomes out-of-date
git remote add upstream git://
github.com/andyw8/WidgetMagic.git
git fetch upstream
get merge upstream master
Social coding
Promote your contribution
Maintainers - thank your contributors
In summary
Start with the smallest contribution you can find, e.g.
fixing a typo
Share half-formed ideas. Code is better than words.
Start your own project!

More Related Content

Similar to Contributing to Open Source via GitHub (20)

PPTX
Basics of Open Source Contribution - WWCodeMobile
Vui Nguyen
 
PDF
Contributing to github is for everyone
Matt Heusser
 
PDF
O'Leary - Using GitHub for Enterprise and Open Source Documentation
LavaCon
 
PDF
git and github
Darren Oakley
 
PDF
Git, GitHub and Open Source
Lorna Mitchell
 
PDF
GitHub Workflows for Technical Communication
STC-Philadelphia Metro Chapter
 
PPTX
Extra bit with git
Himanshu Agrawal
 
PPTX
Get your Git on GitHub
Runcy Oommen
 
PPTX
Introduction to Git and GitHub Part 1
Omar Fathy
 
PDF
Advance workshop on git
Himanshu Agrawal
 
PPTX
3DC Intro to Git Workshop
BeckhamWee
 
PPTX
Hacktoberfest 2020 - Open source for beginners
DeepikaRana30
 
PPT
Git101
Jason Noble
 
PDF
16 Git
Hadley Wickham
 
PPTX
Git and GitHub Workshop of GDG on Campus UNSTPB
AmaraCostachiu
 
PDF
Git sourcecontrolpreso
ColdFusionConference
 
PPTX
Git and GitHub workshop of GDG on Campus UNSTPB
AmaraCostachiu
 
PDF
A Tutorial for GitHub.pdf
badrfathallah2
 
PDF
A Tutorial for GitHub.pdf
Amarnadh36
 
Basics of Open Source Contribution - WWCodeMobile
Vui Nguyen
 
Contributing to github is for everyone
Matt Heusser
 
O'Leary - Using GitHub for Enterprise and Open Source Documentation
LavaCon
 
git and github
Darren Oakley
 
Git, GitHub and Open Source
Lorna Mitchell
 
GitHub Workflows for Technical Communication
STC-Philadelphia Metro Chapter
 
Extra bit with git
Himanshu Agrawal
 
Get your Git on GitHub
Runcy Oommen
 
Introduction to Git and GitHub Part 1
Omar Fathy
 
Advance workshop on git
Himanshu Agrawal
 
3DC Intro to Git Workshop
BeckhamWee
 
Hacktoberfest 2020 - Open source for beginners
DeepikaRana30
 
Git101
Jason Noble
 
Git and GitHub Workshop of GDG on Campus UNSTPB
AmaraCostachiu
 
Git sourcecontrolpreso
ColdFusionConference
 
Git and GitHub workshop of GDG on Campus UNSTPB
AmaraCostachiu
 
A Tutorial for GitHub.pdf
badrfathallah2
 
A Tutorial for GitHub.pdf
Amarnadh36
 

Recently uploaded (20)

PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Import Data Form Excel to Tally Services
Tally xperts
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Ad

Contributing to Open Source via GitHub

  • 1. Contributing to an Open Source project on GitHub Andy Waite June 2012
  • 2. Why contribute? Learn a technology outside of your day job Scratch an itch Remove a blocker Learn by peer review Collaborate and share knowlege Promote yourself and get noticed Your portfolio is your CV Coderwall
  • 3. What to contribute? Fix a bug for a problem you’ve discovered Add behaviour for a new feature you want Resolve an issue reported by someone else Improve the documentation (what confused you?) Expand the test coverage Provide a example
  • 4. The old way Mailing lists, FTP servers diff oldFile newFile > mods.diff patch < mods.diff SourceForge
  • 5. The new way GitHub - founded in 2008 Now over 1.7 million users, 3 million repos Code, issues, wiki, hosting, stats, social, API Major projects: Node, Rails, jQuery, Backbone, Linux Kernel, PHP, Zend 2, Symfony, Underscore, Git, Wordpress, Drupal Big companies: Google, Microsoft, Apple All free for public projects
  • 6. Getting started Create a GitHub account Setup Git Identify the original project (beware of forks) Check for signs of life
  • 7. Fork the original project One click to fork into your account andyw8/WidgetMagic → samfrench/WidgetMagic Clones the full history, branches, tags
  • 8. Clone your fork locally git clone [email protected]:samfrench/WidgetMagic.git cd WidgetMagic
  • 9. Run the test suite Install the dependencies Run the test suite Common language conventions: Ruby: rake Java: mvn
  • 10. Create a topic branch Use one branch per topic (bug, feature, etc.) git checkout -b allow-duplicate-widgets Display the current branch in your shell prompt
  • 11. Commit your change git add WidgetMagic.rb git commit -m "Allow duplicate widgets"
  • 12. Push to your remote repo git push origin allow-duplicate-widgets
  • 13. Create a pull request Pull Request button appears on your repo A pull request starts a conversation It might not be accepted right away Improve it and push the new commits
  • 14. Merging the pull request Project maintainer merges your commits and closes the pull request GitHub sends you an notification Your contribution shows in the commit log
  • 15. Stay up-to-date A few months later you want to contribute again But changes to the original project don’t propogate automatically so your fork becomes out-of-date git remote add upstream git:// github.com/andyw8/WidgetMagic.git git fetch upstream get merge upstream master
  • 16. Social coding Promote your contribution Maintainers - thank your contributors
  • 17. In summary Start with the smallest contribution you can find, e.g. fixing a typo Share half-formed ideas. Code is better than words. Start your own project!