SlideShare a Scribd company logo
1 of 38
Being an Open Source
Contributor
Mike Lively
Mike Lively
• PHPUnit Database Extension
• Phake - PHP Mocking
Framework
• Lots of other small OSS
contributions
• Manager of Software
Architecture @ slickdeals.net
Why are you here?
• I contribute already, just curious how others do it
• I don’t contribute yet and want to know how to get
started
• Not sure if I want to contribute ever, but still
interested in how it all works
Why are you here?
• I’m just waiting for your talk to
finish up so I can hear about
PHP 7
Contributing to OSS
• Why contribute to OSS?
• Contribute vs. Create
• How to Contribute
• How to Create
• The cool tools
Why should I Contribute?
• Give back a great idea
• Learn something new
• Get better at what you know
• Improve your resume
Why should I Contribute?
• Phase 1: Start an open source project
• Phase 2: ???
• Phase 3: Profit ($$$)
Contribute or Create?
Create a new project when…
• You have a new idea
• You have a new take on an existing idea
• You have lots of time to spare
Contribute to an existing
project when…
• you are looking to learn something new
• you are looking to improve your resume
• want to be involved in OSS but don’t have any
ideas
• Because you are a nice person
Contributing to Projects
Do it because
How to Contribute to Projects
• Submit Pull Requests, not issues
• Be a team player, follow their style
• Be brave, large popular projects need help too
• Get involved with a community
• Check your ego at the door
Creating an OSS Project
A successful open source project at its core will offer the same
thing most successful businesses offer: value to a community
that to that point has not had that value available.
Defining Project Success
For the purposes of this talk, success is providing a
project to the community that is able to outlast your
own contributions.
How to Create a Successful
Project
• Make your project unique
• License appropriately
• Document Well
• Provide an environment that encourages
community
Make your Project Unique
• A new and novel idea
• Already exists, but outside of a particular
community
• Already exists inside the community but unique
value is provided
Picking a License
Pick the right license
• Dictates who will use your project
• Increasingly important for larger companies
• Provides protection for yourself
Pick the right license
• GPL - A copyleft license. Limits corporate adoption
• MIT - grants free, unrestricted use
• BSD - Similar to MIT + disallows use of your name
What to look for
• Clear rights granted for copy, modification,
distribution, etc.
• Requirements are attached to those rights
• Clear “provided as-is” terms
• Non-endorsement clauses (if desired)
What to look for
Just use a common, well understood
license
http://opensource.org/licenses
CLA
• Contributor License Agreement
• Helps ensure you either have copyright or
granted right
• Highly recommended if you have future plans to
profit from the project
CLA
• Grants the project owner rights to the contribution
• Easiest to just be granted the copyright
• Otherwise get as broad of a range of rights
• To sign over rights, the contributor must be the
owner of the rights
CCLA
• Corporate Contributor License Agreement
• Used to gain authorization from a contributor’s
employer
• Same principles apply
CLA/CCLA
http://oss-watch.ac.uk/resources/cla
Document Well
• Focus documentation
efforts towards your goal
• Adoption?
Document usage
• Contributions?
Document code and
architecture
Document Well
• More than just Manuals
• Articles, Tutorials, and more
• Don’t stop documenting
Document Well
• Keep manuals close to code
• Keep articles, tutorials, blog posts well linked
• Create a site for your project
Document Well
A horrible library with great
documentation will get more use than a
great library with no documentation.
Encourage Community
–Linus Torvalds
“In open source, we feel strongly that to really
do something well, you have to get a lot of
people involved.”
Encourage Community
• You are the community in the beginning
• Write articles, blog posts, tutorials whenever
possible
• Provide guidelines for code contributions
• Get others involved quickly
Encourage Community
• Address issues, pull requests, etc.
• Make people feel appreciated for contributions
• Strengthening the community trumps “integrity” of
the code
–Rasmus Lerdorf
“If you want to build an open source project,
you can't let your ego stand in the way. You
can't rewrite everybody's patches, you can't
second-guess everybody, and you have to
give people equal control.”
Project Success Revisited
For the purposes of this talk, success is providing a
project to the community that is able to outlast your
own contributions.
Encourage Community
• Look for your replacement
• If your community begins forming strong opinions,
you are set.
Tools I use
• Revision Control: https://github.com/
• Release Distribution: https://packagist.org/
• Documentation: https://readthedocs.org/
• Continuous Testing: https://travis-ci.org/
• Code Quality: https://scrutinizer-ci.com/
• Code Quality 2: https://codeclimate.com/
• Dependency Management: https://www.versioneye.com/
Thanks
• Buy my book ————->
http://goo.gl/zVe3oP
• Go to my website:
http://digitalsandwich.com
• Slides are posted:
http://www.slideshare.net/mjlivelyjr

More Related Content

What's hot

OSGeo Incubation 2014
OSGeo Incubation 2014OSGeo Incubation 2014
OSGeo Incubation 2014Jody Garnett
 
Managing a large open source community - OSCON 2016
Managing a large open source community - OSCON 2016Managing a large open source community - OSCON 2016
Managing a large open source community - OSCON 2016{code}
 
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
 
WE16 - Navigating the Seas of Open Source Projects
WE16 - Navigating the Seas of Open Source ProjectsWE16 - Navigating the Seas of Open Source Projects
WE16 - Navigating the Seas of Open Source ProjectsSociety of Women Engineers
 
Treating Open Source as Pro Bono Work
Treating Open Source as Pro Bono WorkTreating Open Source as Pro Bono Work
Treating Open Source as Pro Bono WorkAll Things Open
 
Osgeo incubation-2014
Osgeo incubation-2014Osgeo incubation-2014
Osgeo incubation-2014Jody Garnett
 
Better Statements with Experience API (xAPI) Profiles
Better Statements with Experience API (xAPI) ProfilesBetter Statements with Experience API (xAPI) Profiles
Better Statements with Experience API (xAPI) ProfilesRussell Duhon
 
Blacklight intro - LLI seminar
Blacklight intro - LLI seminarBlacklight intro - LLI seminar
Blacklight intro - LLI seminarChris Awre
 
Drupal training day by Rachit Gupta
Drupal training day by Rachit GuptaDrupal training day by Rachit Gupta
Drupal training day by Rachit GuptaRachit Gupta
 
OSS meetups in Japan, at Linuxcon 2013
OSS meetups in Japan, at Linuxcon 2013OSS meetups in Japan, at Linuxcon 2013
OSS meetups in Japan, at Linuxcon 2013Hiro Yoshioka
 
Rethinking Scala Presented in San Francisco May 7, 2014
Rethinking Scala Presented in San Francisco May 7, 2014Rethinking Scala Presented in San Francisco May 7, 2014
Rethinking Scala Presented in San Francisco May 7, 2014Bruce Eckel
 
Decentralizing your library
Decentralizing your libraryDecentralizing your library
Decentralizing your librarySteve Bahnaman
 
Decentralizing your library
Decentralizing your libraryDecentralizing your library
Decentralizing your libraryNCLA2011
 

What's hot (18)

OSGeo Incubation 2014
OSGeo Incubation 2014OSGeo Incubation 2014
OSGeo Incubation 2014
 
Managing a large open source community - OSCON 2016
Managing a large open source community - OSCON 2016Managing a large open source community - OSCON 2016
Managing a large open source community - OSCON 2016
 
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?
 
WE16 - Navigating the Seas of Open Source Projects
WE16 - Navigating the Seas of Open Source ProjectsWE16 - Navigating the Seas of Open Source Projects
WE16 - Navigating the Seas of Open Source Projects
 
Impact of Open Source
Impact of Open SourceImpact of Open Source
Impact of Open Source
 
Treating Open Source as Pro Bono Work
Treating Open Source as Pro Bono WorkTreating Open Source as Pro Bono Work
Treating Open Source as Pro Bono Work
 
NISO Webinar: Behave like a Startup: Adapting Your Organization to Rapid Change
NISO Webinar: Behave like a Startup: Adapting Your Organization to Rapid Change NISO Webinar: Behave like a Startup: Adapting Your Organization to Rapid Change
NISO Webinar: Behave like a Startup: Adapting Your Organization to Rapid Change
 
LIBRARIANS AS WEB DEVELOPERS: GAUGING THE BEST TECHNOLOGIES IN ACCESSING INFO...
LIBRARIANS AS WEB DEVELOPERS: GAUGING THE BEST TECHNOLOGIES IN ACCESSING INFO...LIBRARIANS AS WEB DEVELOPERS: GAUGING THE BEST TECHNOLOGIES IN ACCESSING INFO...
LIBRARIANS AS WEB DEVELOPERS: GAUGING THE BEST TECHNOLOGIES IN ACCESSING INFO...
 
Osgeo incubation-2014
Osgeo incubation-2014Osgeo incubation-2014
Osgeo incubation-2014
 
Better Statements with Experience API (xAPI) Profiles
Better Statements with Experience API (xAPI) ProfilesBetter Statements with Experience API (xAPI) Profiles
Better Statements with Experience API (xAPI) Profiles
 
Free vs Paid Content
Free vs Paid ContentFree vs Paid Content
Free vs Paid Content
 
Blacklight intro - LLI seminar
Blacklight intro - LLI seminarBlacklight intro - LLI seminar
Blacklight intro - LLI seminar
 
Drupal training day by Rachit Gupta
Drupal training day by Rachit GuptaDrupal training day by Rachit Gupta
Drupal training day by Rachit Gupta
 
OSS meetups in Japan, at Linuxcon 2013
OSS meetups in Japan, at Linuxcon 2013OSS meetups in Japan, at Linuxcon 2013
OSS meetups in Japan, at Linuxcon 2013
 
Platform Selection
Platform SelectionPlatform Selection
Platform Selection
 
Rethinking Scala Presented in San Francisco May 7, 2014
Rethinking Scala Presented in San Francisco May 7, 2014Rethinking Scala Presented in San Francisco May 7, 2014
Rethinking Scala Presented in San Francisco May 7, 2014
 
Decentralizing your library
Decentralizing your libraryDecentralizing your library
Decentralizing your library
 
Decentralizing your library
Decentralizing your libraryDecentralizing your library
Decentralizing your library
 

Viewers also liked

Using Sphinx for Search in PHP
Using Sphinx for Search in PHPUsing Sphinx for Search in PHP
Using Sphinx for Search in PHPMike Lively
 
Silos Are For Farmers, Not IT
Silos Are For Farmers, Not ITSilos Are For Farmers, Not IT
Silos Are For Farmers, Not ITStonebranch, Inc.
 
Investing tips-to-grow-wealth
Investing tips-to-grow-wealthInvesting tips-to-grow-wealth
Investing tips-to-grow-wealthMotif Investing
 
Infographic: Create a change platform
Infographic: Create a change platformInfographic: Create a change platform
Infographic: Create a change platformPinipaApp
 
Karomi Brand Asset Management
Karomi Brand Asset ManagementKaromi Brand Asset Management
Karomi Brand Asset ManagementKaromi Technology
 
Into the Breach-Data Breach Statistics Infographic
Into the Breach-Data Breach Statistics InfographicInto the Breach-Data Breach Statistics Infographic
Into the Breach-Data Breach Statistics InfographicColumn Technologies
 
Risk management & compliance with xyea october 2012
Risk management & compliance with xyea october 2012Risk management & compliance with xyea october 2012
Risk management & compliance with xyea october 2012Xyea
 
DMA - Art of Targeting and Personalization
DMA -  Art of Targeting and PersonalizationDMA -  Art of Targeting and Personalization
DMA - Art of Targeting and PersonalizationeClerx
 
כנס מדבר יהודה לדורותיו 2005 2015 חלק שני
כנס מדבר יהודה לדורותיו 2005 2015 חלק שניכנס מדבר יהודה לדורותיו 2005 2015 חלק שני
כנס מדבר יהודה לדורותיו 2005 2015 חלק שניOmer Koreh
 
Mobile & IoT in Field Service
Mobile & IoT in Field ServiceMobile & IoT in Field Service
Mobile & IoT in Field ServiceXMPRO
 
Thirty minutes to share point availability
Thirty minutes to share point availabilityThirty minutes to share point availability
Thirty minutes to share point availabilityNeverfail Group
 
ATRA Expo Talk 2014 - Future Trends
ATRA Expo Talk 2014 - Future TrendsATRA Expo Talk 2014 - Future Trends
ATRA Expo Talk 2014 - Future TrendsProfitBoost
 
Better Payroll Days Ahead with Automated, Cloud-Based Time and Attendance
Better Payroll Days Ahead with Automated, Cloud-Based Time and AttendanceBetter Payroll Days Ahead with Automated, Cloud-Based Time and Attendance
Better Payroll Days Ahead with Automated, Cloud-Based Time and Attendancenettime solutions
 

Viewers also liked (16)

Using Sphinx for Search in PHP
Using Sphinx for Search in PHPUsing Sphinx for Search in PHP
Using Sphinx for Search in PHP
 
Silos Are For Farmers, Not IT
Silos Are For Farmers, Not ITSilos Are For Farmers, Not IT
Silos Are For Farmers, Not IT
 
Titan CMS Tips, Tricks and Hacks
Titan CMS Tips, Tricks and HacksTitan CMS Tips, Tricks and Hacks
Titan CMS Tips, Tricks and Hacks
 
Investing tips-to-grow-wealth
Investing tips-to-grow-wealthInvesting tips-to-grow-wealth
Investing tips-to-grow-wealth
 
All About Telecom Expense Management
All About Telecom Expense ManagementAll About Telecom Expense Management
All About Telecom Expense Management
 
Infographic: Create a change platform
Infographic: Create a change platformInfographic: Create a change platform
Infographic: Create a change platform
 
Karomi Brand Asset Management
Karomi Brand Asset ManagementKaromi Brand Asset Management
Karomi Brand Asset Management
 
Into the Breach-Data Breach Statistics Infographic
Into the Breach-Data Breach Statistics InfographicInto the Breach-Data Breach Statistics Infographic
Into the Breach-Data Breach Statistics Infographic
 
Risk management & compliance with xyea october 2012
Risk management & compliance with xyea october 2012Risk management & compliance with xyea october 2012
Risk management & compliance with xyea october 2012
 
DMA - Art of Targeting and Personalization
DMA -  Art of Targeting and PersonalizationDMA -  Art of Targeting and Personalization
DMA - Art of Targeting and Personalization
 
כנס מדבר יהודה לדורותיו 2005 2015 חלק שני
כנס מדבר יהודה לדורותיו 2005 2015 חלק שניכנס מדבר יהודה לדורותיו 2005 2015 חלק שני
כנס מדבר יהודה לדורותיו 2005 2015 חלק שני
 
Mobile & IoT in Field Service
Mobile & IoT in Field ServiceMobile & IoT in Field Service
Mobile & IoT in Field Service
 
Thirty minutes to share point availability
Thirty minutes to share point availabilityThirty minutes to share point availability
Thirty minutes to share point availability
 
ATRA Expo Talk 2014 - Future Trends
ATRA Expo Talk 2014 - Future TrendsATRA Expo Talk 2014 - Future Trends
ATRA Expo Talk 2014 - Future Trends
 
Better Payroll Days Ahead with Automated, Cloud-Based Time and Attendance
Better Payroll Days Ahead with Automated, Cloud-Based Time and AttendanceBetter Payroll Days Ahead with Automated, Cloud-Based Time and Attendance
Better Payroll Days Ahead with Automated, Cloud-Based Time and Attendance
 
Metasite Business Solutions booklet
Metasite Business Solutions bookletMetasite Business Solutions booklet
Metasite Business Solutions booklet
 

Similar to Contributing to Open Source Software

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 needsSteven Francia
 
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: A Proven Way Toward Success
The Apache Way: A Proven Way Toward SuccessThe Apache Way: A Proven Way Toward Success
The Apache Way: A Proven Way Toward SuccessEvans Ye
 
The business behind open source
The business behind open sourceThe business behind open source
The business behind open sourceGraham Weldon
 
Guide to open source
Guide to open source Guide to open source
Guide to open source Javier Perez
 
The Open Source Way - @JBCNConf Closing Keynote 2016
The Open Source Way - @JBCNConf Closing Keynote 2016The Open Source Way - @JBCNConf Closing Keynote 2016
The Open Source Way - @JBCNConf Closing Keynote 2016Mauricio (Salaboy) Salatino
 
The business behind open source
The business behind open sourceThe business behind open source
The business behind open sourceConFoo
 
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
 
Apache: Code, Community and Open Source
Apache: Code, Community and Open SourceApache: Code, Community and Open Source
Apache: Code, Community and Open SourceOPNFV
 
Role of Community in Technical Success
Role of Community in Technical SuccessRole of Community in Technical Success
Role of Community in Technical SuccessMandi Walls
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open SourceDaniel Stenberg
 
Communities for code - What can engineering leaders learn from Open Source co...
Communities for code - What can engineering leaders learn from Open Source co...Communities for code - What can engineering leaders learn from Open Source co...
Communities for code - What can engineering leaders learn from Open Source co...Brett Porter
 
Building a community - BuildStuff Lithuania 2014
Building a community - BuildStuff Lithuania 2014Building a community - BuildStuff Lithuania 2014
Building a community - BuildStuff Lithuania 2014Gill Cleeren
 
Running a Successful Open Source Project
Running a Successful Open Source ProjectRunning a Successful Open Source Project
Running a Successful Open Source ProjectRob Reynolds
 
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
 
The Apache Way
The Apache WayThe Apache Way
The Apache WayEvans Ye
 
Open Source: What is It?
Open Source: What is It?Open Source: What is It?
Open Source: What is It?DuraSpace
 

Similar to Contributing to Open Source Software (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
 
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 ?
 
Management de communaute
Management de communauteManagement de communaute
Management de communaute
 
The Apache Way: A Proven Way Toward Success
The Apache Way: A Proven Way Toward SuccessThe Apache Way: A Proven Way Toward Success
The Apache Way: A Proven Way Toward Success
 
The business behind open source
The business behind open sourceThe business behind open source
The business behind open source
 
Guide to open source
Guide to open source Guide to open source
Guide to open source
 
The Open Source Way - @JBCNConf Closing Keynote 2016
The Open Source Way - @JBCNConf Closing Keynote 2016The Open Source Way - @JBCNConf Closing Keynote 2016
The Open Source Way - @JBCNConf Closing Keynote 2016
 
The business behind open source
The business behind open sourceThe business behind open source
The business behind open source
 
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!
 
Apache: Code, Community and Open Source
Apache: Code, Community and Open SourceApache: Code, Community and Open Source
Apache: Code, Community and Open Source
 
Role of Community in Technical Success
Role of Community in Technical SuccessRole of Community in Technical Success
Role of Community in Technical Success
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
 
Low and No Cost ICT tools
Low and No Cost ICT tools   Low and No Cost ICT tools
Low and No Cost ICT tools
 
Communities for code - What can engineering leaders learn from Open Source co...
Communities for code - What can engineering leaders learn from Open Source co...Communities for code - What can engineering leaders learn from Open Source co...
Communities for code - What can engineering leaders learn from Open Source co...
 
Building a community - BuildStuff Lithuania 2014
Building a community - BuildStuff Lithuania 2014Building a community - BuildStuff Lithuania 2014
Building a community - BuildStuff Lithuania 2014
 
Running a Successful Open Source Project
Running a Successful Open Source ProjectRunning a Successful Open Source Project
Running a Successful Open Source Project
 
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?
 
The Apache Way
The Apache WayThe Apache Way
The Apache Way
 
OpenSource и Вы
OpenSource и ВыOpenSource и Вы
OpenSource и Вы
 
Open Source: What is It?
Open Source: What is It?Open Source: What is It?
Open Source: What is It?
 

Recently uploaded

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 

Recently uploaded (20)

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 

Contributing to Open Source Software

  • 1. Being an Open Source Contributor Mike Lively
  • 2. Mike Lively • PHPUnit Database Extension • Phake - PHP Mocking Framework • Lots of other small OSS contributions • Manager of Software Architecture @ slickdeals.net
  • 3. Why are you here? • I contribute already, just curious how others do it • I don’t contribute yet and want to know how to get started • Not sure if I want to contribute ever, but still interested in how it all works
  • 4. Why are you here? • I’m just waiting for your talk to finish up so I can hear about PHP 7
  • 5. Contributing to OSS • Why contribute to OSS? • Contribute vs. Create • How to Contribute • How to Create • The cool tools
  • 6. Why should I Contribute? • Give back a great idea • Learn something new • Get better at what you know • Improve your resume
  • 7. Why should I Contribute? • Phase 1: Start an open source project • Phase 2: ??? • Phase 3: Profit ($$$)
  • 9. Create a new project when… • You have a new idea • You have a new take on an existing idea • You have lots of time to spare
  • 10. Contribute to an existing project when… • you are looking to learn something new • you are looking to improve your resume • want to be involved in OSS but don’t have any ideas • Because you are a nice person
  • 12. How to Contribute to Projects • Submit Pull Requests, not issues • Be a team player, follow their style • Be brave, large popular projects need help too • Get involved with a community • Check your ego at the door
  • 13. Creating an OSS Project A successful open source project at its core will offer the same thing most successful businesses offer: value to a community that to that point has not had that value available.
  • 14. Defining Project Success For the purposes of this talk, success is providing a project to the community that is able to outlast your own contributions.
  • 15. How to Create a Successful Project • Make your project unique • License appropriately • Document Well • Provide an environment that encourages community
  • 16. Make your Project Unique • A new and novel idea • Already exists, but outside of a particular community • Already exists inside the community but unique value is provided
  • 18. Pick the right license • Dictates who will use your project • Increasingly important for larger companies • Provides protection for yourself
  • 19. Pick the right license • GPL - A copyleft license. Limits corporate adoption • MIT - grants free, unrestricted use • BSD - Similar to MIT + disallows use of your name
  • 20. What to look for • Clear rights granted for copy, modification, distribution, etc. • Requirements are attached to those rights • Clear “provided as-is” terms • Non-endorsement clauses (if desired)
  • 21. What to look for Just use a common, well understood license http://opensource.org/licenses
  • 22. CLA • Contributor License Agreement • Helps ensure you either have copyright or granted right • Highly recommended if you have future plans to profit from the project
  • 23. CLA • Grants the project owner rights to the contribution • Easiest to just be granted the copyright • Otherwise get as broad of a range of rights • To sign over rights, the contributor must be the owner of the rights
  • 24. CCLA • Corporate Contributor License Agreement • Used to gain authorization from a contributor’s employer • Same principles apply
  • 26. Document Well • Focus documentation efforts towards your goal • Adoption? Document usage • Contributions? Document code and architecture
  • 27. Document Well • More than just Manuals • Articles, Tutorials, and more • Don’t stop documenting
  • 28. Document Well • Keep manuals close to code • Keep articles, tutorials, blog posts well linked • Create a site for your project
  • 29. Document Well A horrible library with great documentation will get more use than a great library with no documentation.
  • 31. –Linus Torvalds “In open source, we feel strongly that to really do something well, you have to get a lot of people involved.”
  • 32. Encourage Community • You are the community in the beginning • Write articles, blog posts, tutorials whenever possible • Provide guidelines for code contributions • Get others involved quickly
  • 33. Encourage Community • Address issues, pull requests, etc. • Make people feel appreciated for contributions • Strengthening the community trumps “integrity” of the code
  • 34. –Rasmus Lerdorf “If you want to build an open source project, you can't let your ego stand in the way. You can't rewrite everybody's patches, you can't second-guess everybody, and you have to give people equal control.”
  • 35. Project Success Revisited For the purposes of this talk, success is providing a project to the community that is able to outlast your own contributions.
  • 36. Encourage Community • Look for your replacement • If your community begins forming strong opinions, you are set.
  • 37. Tools I use • Revision Control: https://github.com/ • Release Distribution: https://packagist.org/ • Documentation: https://readthedocs.org/ • Continuous Testing: https://travis-ci.org/ • Code Quality: https://scrutinizer-ci.com/ • Code Quality 2: https://codeclimate.com/ • Dependency Management: https://www.versioneye.com/
  • 38. Thanks • Buy my book ————-> http://goo.gl/zVe3oP • Go to my website: http://digitalsandwich.com • Slides are posted: http://www.slideshare.net/mjlivelyjr