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

Contributing to Open Source Software

  • 1.
    Being an OpenSource Contributor Mike Lively
  • 2.
    Mike Lively • PHPUnitDatabase Extension • Phake - PHP Mocking Framework • Lots of other small OSS contributions • Manager of Software Architecture @ slickdeals.net
  • 3.
    Why are youhere? • 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 youhere? • 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 IContribute? • Give back a great idea • Learn something new • Get better at what you know • Improve your resume
  • 7.
    Why should IContribute? • Phase 1: Start an open source project • Phase 2: ??? • Phase 3: Profit ($$$)
  • 8.
  • 9.
    Create a newproject 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 anexisting 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
  • 11.
  • 12.
    How to Contributeto 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 OSSProject 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 Forthe purposes of this talk, success is providing a project to the community that is able to outlast your own contributions.
  • 15.
    How to Createa Successful Project • Make your project unique • License appropriately • Document Well • Provide an environment that encourages community
  • 16.
    Make your ProjectUnique • A new and novel idea • Already exists, but outside of a particular community • Already exists inside the community but unique value is provided
  • 17.
  • 18.
    Pick the rightlicense • Dictates who will use your project • Increasingly important for larger companies • Provides protection for yourself
  • 19.
    Pick the rightlicense • GPL - A copyleft license. Limits corporate adoption • MIT - grants free, unrestricted use • BSD - Similar to MIT + disallows use of your name
  • 20.
    What to lookfor • 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 lookfor Just use a common, well understood license http://opensource.org/licenses
  • 22.
    CLA • Contributor LicenseAgreement • Helps ensure you either have copyright or granted right • Highly recommended if you have future plans to profit from the project
  • 23.
    CLA • Grants theproject 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 ContributorLicense Agreement • Used to gain authorization from a contributor’s employer • Same principles apply
  • 25.
  • 26.
    Document Well • Focusdocumentation efforts towards your goal • Adoption? Document usage • Contributions? Document code and architecture
  • 27.
    Document Well • Morethan just Manuals • Articles, Tutorials, and more • Don’t stop documenting
  • 28.
    Document Well • Keepmanuals close to code • Keep articles, tutorials, blog posts well linked • Create a site for your project
  • 29.
    Document Well A horriblelibrary with great documentation will get more use than a great library with no documentation.
  • 30.
  • 31.
    –Linus Torvalds “In opensource, we feel strongly that to really do something well, you have to get a lot of people involved.”
  • 32.
    Encourage Community • Youare the community in the beginning • Write articles, blog posts, tutorials whenever possible • Provide guidelines for code contributions • Get others involved quickly
  • 33.
    Encourage Community • Addressissues, pull requests, etc. • Make people feel appreciated for contributions • Strengthening the community trumps “integrity” of the code
  • 34.
    –Rasmus Lerdorf “If youwant 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 Forthe purposes of this talk, success is providing a project to the community that is able to outlast your own contributions.
  • 36.
    Encourage Community • Lookfor 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 mybook ————-> http://goo.gl/zVe3oP • Go to my website: http://digitalsandwich.com • Slides are posted: http://www.slideshare.net/mjlivelyjr