Upload
mike-lively
View
404
Download
0
Embed Size (px)
Citation preview
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
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 ($$$)
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
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
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
Document Well• Focus documentation
efforts towards your goal
• Adoption? Document usage
• Contributions? Document code and architecture
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.
–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