SlideShare a Scribd company logo
Contributing to 
Open Source 
Daniel Stenberg, October 16th 2014
Agenda 
About FOSS 
How FOSS works 
Two examples 
The first patch
Please ask! 
Feel free to interrupt and ask at any time!
Daniel Stenberg 
Email: daniel@haxx.se 
Twitter: @bagder 
Web: daniel.haxx.se 
Blog: daniel.haxx.se/blog
FOSS history of Daniel 
• 1991 - Discovered Unix (AIX), working for IBM 
• Wow, there's a lot of source code given away free by cool people! 
• 1994 – an IRC bot called Dancer was my first “own” project 
• ... 
• 2014 – I'm employed to work entirely on open source software
What is Open Source?
I'll skip 
•history 
•how Open Source conquers the world 
•why people participate
Definition 
Open source software is software that can be freely 
used, changed, and shared (in modified or 
unmodified form) by anyone. 
“Free software” means software that 
respects users' freedom and 
community. Roughly, it means that 
the users have the freedom to run, 
copy, distribute, study, change and 
improve the software.
Not defined 
•Which license – 100s to pick from 
• Collaboration – if at all or how 
• How to get the code 
• How to figure out how things work 
• How to contribute changes 
• How to get binaries or packages built from 
the code 
• How to behave and accepted behavior 
•Which (human) language to use 
• ...
Common practices 
• A “project” develops one or more “products” 
• Anyone can join an open source project 
• A limited set of core people can “accept” changes 
•Meritocracies – those who do and can things get more to do and say 
• A project usually has a web site explaining the project or the 
product(s) 
• Some projects work under “Umbrella organizations” 
•Most projects are small teams with volunteers 
• Some projects are run and cared for by commercial entities 
• Development and communications are done “in the open”
How to contribute
License and copyright 
•Each project is released under an Open 
Source License 
•Which? 
• Are you OK with that? 
• Can you use another? 
•All contributions are owned by a 
copyright owner 
• “hand it over” 
• license it 
• you own it
Communicate 
• Use English 
• Follow the mailing list / forum a while before you post 
• Don't be afraid of email, delete what you don't need to 
keep! 
• Absorb the tone and listen in on “how stuff works” 
• Think of the project as “we”, not “you” 
•When posting: be polite and stick to the subject 
• Before asking: try to figure out the answer yourself 
• But also: it is much better to ask before wasting a lot of 
time 
• Always discuss before posting changes/improvements 
• Respect that it may take time to get a reply
Communities 
• white, male, western, middle-class, christian 
• Everyone is not like you, others may think differently 
• Flame wars, trolls and spam will occur 
• People have invested time, sweat and tears 
• Participants are usually around by choice and interest
Work 
• There's usually a TODO somewhere 
• There's usually a bug tracker or list of known problems or bugs 
• Dig in and help out where you think you can, it is needed or where you 
think is most fun 
•More than code counts: 
• Repeat bugs 
• Test bug fixes 
• Answer questions 
• Translations 
• Art work / graphics 
• Documentation 
• Web site / admin
Send contributions 
•Adhere to license and copyright rules 
•Use the correct tools (version control, diff tools, editors, mail 
etc) 
•Base it on the right version, branch or source tree 
•Send contributions using the right format 
•Follow code standards 
•Assume reviews to point out (several) faults 
•Prepare to make several iterations before okayed 
• If no response, send reminder after a grace period 
•Argue for your way and for your changes.
Two projects in the real world
curl 
•Most copyrights belong to Daniel 
• One release every 8 weeks 
• < 100,000 lines of code 
• 100 commits per month 
• 40 authors per release 
• 5-7 core people, one maintainer 
• All volunteers 
•MIT licensed 
• 1400 bugs in the bug tracker 
• An IRC channel
Contributing to curl 
•Join the mailing list 
•Read the TODO / bug tracker 
•Ask around or grab something you 
feel like
Firefox 
• Driven by Mozilla 
• Hundreds of paid developers 
• Hundreds of daily commits 
• Hundreds of daily new bug reports 
• > 1,000,000 bug reports filed 
• Very distributed responsibilities 
• A hundred(?) mailing lists? 
• A hundred(?) IRC channels 
•Most committers are paid staff 
• > 12 million lines of code
Contributing to Firefox 
•http://whatcanidoformozilla.org/ 
•http://www.joshmatthews.net/bugsahoy/ 
•https://developer.mozilla.org/en-US/docs/Introduction 
•http://codefirefox.com/
Making your first contribution
What? 
Which project owns what you want to do? 
Join mailing list/forum 
Or start your own!
Source 
Where's the canonical source?
License 
Are we good?
Tests 
Are there tests we can run to verify our changes?
Change it! 
•Correct branch 
•Right tool 
•Use tool correctly 
•Change only what you need to 
•Add tests and documentation 
•Make a good commit message or description
Send it off 
•Send your contribution 
•Wait for review 
•Update your work 
•Send new version
Simple enough, huh? 
Now, let's try this for real!
Learn more!
Doing good is part of our code

More Related Content

Viewers also liked

HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks Stockholm
Daniel Stenberg
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
Daniel Stenberg
 
Internet all the things - curl everywhere!
Internet all the things - curl everywhere!Internet all the things - curl everywhere!
Internet all the things - curl everywhere!
Daniel Stenberg
 
Everybody runs this code all the time
Everybody runs this code all the timeEverybody runs this code all the time
Everybody runs this code all the time
Daniel Stenberg
 
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016
Daniel Stenberg
 
Http2
Http2Http2

Viewers also liked (6)

HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks Stockholm
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
 
Internet all the things - curl everywhere!
Internet all the things - curl everywhere!Internet all the things - curl everywhere!
Internet all the things - curl everywhere!
 
Everybody runs this code all the time
Everybody runs this code all the timeEverybody runs this code all the time
Everybody runs this code all the time
 
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016
 
Http2
Http2Http2
Http2
 

Similar to Contributing to Open Source

What every successful open source project needs
What every successful open source project needsWhat every successful open source project needs
What every successful open source project needs
Steven Francia
 
How to get started in Open Source!
How to get started in Open Source!How to get started in Open Source!
How to get started in Open Source!
Pradeep Singh
 
Introduction to Open Source, Apache and Apache Way
Introduction to Open Source, Apache and Apache WayIntroduction to Open Source, Apache and Apache Way
Introduction to Open Source, Apache and Apache Way
Srinath Perera
 
But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?
gagravarr
 
Apache: Code, Community and Open Source
Apache: Code, Community and Open SourceApache: Code, Community and Open Source
Apache: Code, Community and Open Source
OPNFV
 
Management de communaute
Management de communauteManagement de communaute
Contributing to Open Source Software
Contributing to Open Source SoftwareContributing to Open Source Software
Contributing to Open Source Software
Mike Lively
 
Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?
Stefane Fermigier
 
The Apache Way
The Apache WayThe Apache Way
The Apache Way
gagravarr
 
Open Source: What is It?
Open Source: What is It?Open Source: What is It?
Open Source: What is It?
DuraSpace
 
Moodle Help! How do I turn it off and on again?
Moodle Help! How do I turn it off and on again?Moodle Help! How do I turn it off and on again?
Moodle Help! How do I turn it off and on again?Andrew Nicols
 
Andrew Nicols - Help!! How do I turn it off and on again?
Andrew Nicols - Help!! How do I turn it off and on again?Andrew Nicols - Help!! How do I turn it off and on again?
Andrew Nicols - Help!! How do I turn it off and on again?
MoodlemootAU2014
 
Write a better FM
Write a better FMWrite a better FM
Write a better FM
Rich Bowen
 
What is open source?
What is open source?What is open source?
What is open source?
Ahmet Bulut
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
Amol A. Sale
 
Guide to open source
Guide to open source Guide to open source
Guide to open source
Javier Perez
 
Introduction To Fedora
Introduction To FedoraIntroduction To Fedora
Introduction To FedoraArindam Ghosh
 
Opening up Open Source
Opening up Open SourceOpening up Open Source
Opening up Open Source
Derek Buitenhuis
 
LCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS TrainingLCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS Training
Linaro
 
Community Marketing
Community MarketingCommunity Marketing
Community Marketing
Julien Barbier
 

Similar to Contributing to Open Source (20)

What every successful open source project needs
What every successful open source project needsWhat every successful open source project needs
What every successful open source project needs
 
How to get started in Open Source!
How to get started in Open Source!How to get started in Open Source!
How to get started in Open Source!
 
Introduction to Open Source, Apache and Apache Way
Introduction to Open Source, Apache and Apache WayIntroduction to Open Source, Apache and Apache Way
Introduction to Open Source, Apache and Apache Way
 
But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?
 
Apache: Code, Community and Open Source
Apache: Code, Community and Open SourceApache: Code, Community and Open Source
Apache: Code, Community and Open Source
 
Management de communaute
Management de communauteManagement de communaute
Management de communaute
 
Contributing to Open Source Software
Contributing to Open Source SoftwareContributing to Open Source Software
Contributing to Open Source Software
 
Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?
 
The Apache Way
The Apache WayThe Apache Way
The Apache Way
 
Open Source: What is It?
Open Source: What is It?Open Source: What is It?
Open Source: What is It?
 
Moodle Help! How do I turn it off and on again?
Moodle Help! How do I turn it off and on again?Moodle Help! How do I turn it off and on again?
Moodle Help! How do I turn it off and on again?
 
Andrew Nicols - Help!! How do I turn it off and on again?
Andrew Nicols - Help!! How do I turn it off and on again?Andrew Nicols - Help!! How do I turn it off and on again?
Andrew Nicols - Help!! How do I turn it off and on again?
 
Write a better FM
Write a better FMWrite a better FM
Write a better FM
 
What is open source?
What is open source?What is open source?
What is open source?
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
 
Guide to open source
Guide to open source Guide to open source
Guide to open source
 
Introduction To Fedora
Introduction To FedoraIntroduction To Fedora
Introduction To Fedora
 
Opening up Open Source
Opening up Open SourceOpening up Open Source
Opening up Open Source
 
LCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS TrainingLCA14: LCA14-110: FLOSS Training
LCA14: LCA14-110: FLOSS Training
 
Community Marketing
Community MarketingCommunity Marketing
Community Marketing
 

More from Daniel Stenberg

curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024
Daniel Stenberg
 
trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
mastering libcurl part 2
mastering libcurl part 2mastering libcurl part 2
mastering libcurl part 2
Daniel Stenberg
 
mastering libcurl part 1
mastering libcurl part 1mastering libcurl part 1
mastering libcurl part 1
Daniel Stenberg
 
curl - openfourm europe.pdf
curl - openfourm europe.pdfcurl - openfourm europe.pdf
curl - openfourm europe.pdf
Daniel Stenberg
 
curl experiments - curl up 2022
curl experiments - curl up 2022curl experiments - curl up 2022
curl experiments - curl up 2022
Daniel Stenberg
 
curl security - curl up 2022
curl security - curl up 2022curl security - curl up 2022
curl security - curl up 2022
Daniel Stenberg
 
HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022
Daniel Stenberg
 
The state of curl 2022
The state of curl 2022The state of curl 2022
The state of curl 2022
Daniel Stenberg
 
Let me tell you about curl
Let me tell you about curlLet me tell you about curl
Let me tell you about curl
Daniel Stenberg
 
Curl with rust
Curl with rustCurl with rust
Curl with rust
Daniel Stenberg
 
Getting started with libcurl
Getting started with libcurlGetting started with libcurl
Getting started with libcurl
Daniel Stenberg
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
Daniel Stenberg
 
Landing code in curl
Landing code in curlLanding code in curl
Landing code in curl
Daniel Stenberg
 
Testing curl for security
Testing curl for securityTesting curl for security
Testing curl for security
Daniel Stenberg
 
common mistakes when using libcurl
common mistakes when using libcurlcommon mistakes when using libcurl
common mistakes when using libcurl
Daniel Stenberg
 
HTTP/3 in curl 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
Daniel Stenberg
 

More from Daniel Stenberg (20)

curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024
 
rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024
 
trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024
 
curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024
 
The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024
 
mastering libcurl part 2
mastering libcurl part 2mastering libcurl part 2
mastering libcurl part 2
 
mastering libcurl part 1
mastering libcurl part 1mastering libcurl part 1
mastering libcurl part 1
 
curl - openfourm europe.pdf
curl - openfourm europe.pdfcurl - openfourm europe.pdf
curl - openfourm europe.pdf
 
curl experiments - curl up 2022
curl experiments - curl up 2022curl experiments - curl up 2022
curl experiments - curl up 2022
 
curl security - curl up 2022
curl security - curl up 2022curl security - curl up 2022
curl security - curl up 2022
 
HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022
 
The state of curl 2022
The state of curl 2022The state of curl 2022
The state of curl 2022
 
Let me tell you about curl
Let me tell you about curlLet me tell you about curl
Let me tell you about curl
 
Curl with rust
Curl with rustCurl with rust
Curl with rust
 
Getting started with libcurl
Getting started with libcurlGetting started with libcurl
Getting started with libcurl
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
 
Landing code in curl
Landing code in curlLanding code in curl
Landing code in curl
 
Testing curl for security
Testing curl for securityTesting curl for security
Testing curl for security
 
common mistakes when using libcurl
common mistakes when using libcurlcommon mistakes when using libcurl
common mistakes when using libcurl
 
HTTP/3 in curl 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
 

Recently uploaded

A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 

Recently uploaded (20)

A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 

Contributing to Open Source

  • 1. Contributing to Open Source Daniel Stenberg, October 16th 2014
  • 2. Agenda About FOSS How FOSS works Two examples The first patch
  • 3. Please ask! Feel free to interrupt and ask at any time!
  • 4. Daniel Stenberg Email: daniel@haxx.se Twitter: @bagder Web: daniel.haxx.se Blog: daniel.haxx.se/blog
  • 5. FOSS history of Daniel • 1991 - Discovered Unix (AIX), working for IBM • Wow, there's a lot of source code given away free by cool people! • 1994 – an IRC bot called Dancer was my first “own” project • ... • 2014 – I'm employed to work entirely on open source software
  • 6. What is Open Source?
  • 7. I'll skip •history •how Open Source conquers the world •why people participate
  • 8. Definition Open source software is software that can be freely used, changed, and shared (in modified or unmodified form) by anyone. “Free software” means software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software.
  • 9. Not defined •Which license – 100s to pick from • Collaboration – if at all or how • How to get the code • How to figure out how things work • How to contribute changes • How to get binaries or packages built from the code • How to behave and accepted behavior •Which (human) language to use • ...
  • 10. Common practices • A “project” develops one or more “products” • Anyone can join an open source project • A limited set of core people can “accept” changes •Meritocracies – those who do and can things get more to do and say • A project usually has a web site explaining the project or the product(s) • Some projects work under “Umbrella organizations” •Most projects are small teams with volunteers • Some projects are run and cared for by commercial entities • Development and communications are done “in the open”
  • 12. License and copyright •Each project is released under an Open Source License •Which? • Are you OK with that? • Can you use another? •All contributions are owned by a copyright owner • “hand it over” • license it • you own it
  • 13. Communicate • Use English • Follow the mailing list / forum a while before you post • Don't be afraid of email, delete what you don't need to keep! • Absorb the tone and listen in on “how stuff works” • Think of the project as “we”, not “you” •When posting: be polite and stick to the subject • Before asking: try to figure out the answer yourself • But also: it is much better to ask before wasting a lot of time • Always discuss before posting changes/improvements • Respect that it may take time to get a reply
  • 14. Communities • white, male, western, middle-class, christian • Everyone is not like you, others may think differently • Flame wars, trolls and spam will occur • People have invested time, sweat and tears • Participants are usually around by choice and interest
  • 15. Work • There's usually a TODO somewhere • There's usually a bug tracker or list of known problems or bugs • Dig in and help out where you think you can, it is needed or where you think is most fun •More than code counts: • Repeat bugs • Test bug fixes • Answer questions • Translations • Art work / graphics • Documentation • Web site / admin
  • 16. Send contributions •Adhere to license and copyright rules •Use the correct tools (version control, diff tools, editors, mail etc) •Base it on the right version, branch or source tree •Send contributions using the right format •Follow code standards •Assume reviews to point out (several) faults •Prepare to make several iterations before okayed • If no response, send reminder after a grace period •Argue for your way and for your changes.
  • 17. Two projects in the real world
  • 18. curl •Most copyrights belong to Daniel • One release every 8 weeks • < 100,000 lines of code • 100 commits per month • 40 authors per release • 5-7 core people, one maintainer • All volunteers •MIT licensed • 1400 bugs in the bug tracker • An IRC channel
  • 19. Contributing to curl •Join the mailing list •Read the TODO / bug tracker •Ask around or grab something you feel like
  • 20. Firefox • Driven by Mozilla • Hundreds of paid developers • Hundreds of daily commits • Hundreds of daily new bug reports • > 1,000,000 bug reports filed • Very distributed responsibilities • A hundred(?) mailing lists? • A hundred(?) IRC channels •Most committers are paid staff • > 12 million lines of code
  • 21. Contributing to Firefox •http://whatcanidoformozilla.org/ •http://www.joshmatthews.net/bugsahoy/ •https://developer.mozilla.org/en-US/docs/Introduction •http://codefirefox.com/
  • 22. Making your first contribution
  • 23. What? Which project owns what you want to do? Join mailing list/forum Or start your own!
  • 24. Source Where's the canonical source?
  • 25. License Are we good?
  • 26. Tests Are there tests we can run to verify our changes?
  • 27. Change it! •Correct branch •Right tool •Use tool correctly •Change only what you need to •Add tests and documentation •Make a good commit message or description
  • 28. Send it off •Send your contribution •Wait for review •Update your work •Send new version
  • 29. Simple enough, huh? Now, let's try this for real!
  • 31. Doing good is part of our code