Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Contributing to open source

Contributing to open source

Open source is a major part of our tool chain as web developers and we often take advantage of open source projects to jump start own projects. Open source thrives through the help of the larger community. Jonathan will be talking about how you can get started with giving back to existing projects and how you can start your own successful projects.

Jonathan Fielding

January 22, 2015
Tweet

More Decks by Jonathan Fielding

Other Decks in Programming

Transcript

  1. About me • Technical Architect at Beamly • Have worked

    with large brands such as Sony, British Gas and Beamly • Been contributing to open source for 13 years • Made contributions to MiniCMS, SimpleStateManager, HTML5 Boilerplate, TweetCLI, Gitissu.es, DigitalOceanCLI, Doccy
  2. Why contribute • Make the web a better place •

    Help improve the open source code you use • Influence the direction a project takes
  3. • Often, not all the features of a OS project

    are documented • If you find an undocumented feature, why not document it • caveat, sometimes they are undocumented for a reason
  4. • Write about a OS project • Write a tutorial

    or just some notes • Help promote project and help others to use it
  5. • Look on the projects bug tracker to see if

    anyone else has had the issue • Create a repeatable test case (perhaps using JS Bin) • Raise a ticket in the projects bug tracker
  6. • Look at bug tracker and find an issue you

    want to fix • Fork project so you can make your changes • Fix issue and raise a pull request to the original repository so the project owner can merge your fix into the codebase
  7. • Add a new feature that is useful for OS

    project to have • Look at similar projects to see where this project is lacking
  8. jQuery • bug tracker - http://bugs.jquery.com/ • Has about 80

    open tickets • Has 7 TODO items in the source
  9. Code Triage • Sign up to receive an open issue

    in your inbox every day from your favourite repos • Find projects looking for help http://www.codetriage.com/
  10. Open Hatch • Matches you with open source projects that

    need help • Search for issues by difficulty or skill https://openhatch.org/
  11. GitHub Trending • Lists the trending Github repos • Lists

    the trending Github developers https://github.com/trending
  12. Find Contributors • Discuss your project with other developers online

    • Find others interested in developing this new project
  13. Or choose to go it alone • Have full control

    of the direction of the project • May make it harder for your project to gain traction as others might not agree with how it works
  14. Choose how to licence your project • Users of your

    project want to know how they can use it • Many will want to use it commercially • Common licences include the MIT, Apache and BSD
  15. Picking a name It should be: • Unique - to

    avoid confusion • Let the planned features inform the name of your project • Relevant - don’t call a Ruby project jCarousel as that suggests its JavaScript
  16. Creating the project • Create your project on a source

    control provider of choice (most projects choose GitHub) • Commit initial commit of code ensuring no passwords are in the commit (this was my first OS mistake)
  17. Promote project • Post on Reddit • Tweet it to

    your followers • Write about it on your blog and as guest posts on other blogs
  18. Use semantic versioning Allows users of a project understand what

    sort of changes a release makes • 1.0.0 - Major release • 1.1.0 - Minor release • 1.1.1 - Bug fixes
  19. Engage Community • Engage the users of your OS project

    • Discuss improvements they would like to see
  20. Fix Bugs • No code is flawless so your users

    will raise bugs • Fix them promptly to help your users maintain faith in the quality of your project
  21. • Learn how to make your sites responsive • Learn

    about useful open source tools that can help you build responsive sites fast Beginning Responsive Web Design