$30 off During Our Annual Pro Sale. View Details »

Collaborating on Open Source - NewCrafts Paris ...

Collaborating on Open Source - NewCrafts Paris 2019

How I Started contributing to Open Source and Why You Should Too

There are several reasons you might want to contribute to open source software. For me, it was that I wanted to learn in a more useful way than doing programming challenges. So I looked into how I could contribute to open source projects that I use myself.
After contributing for almost two years, I notice that I have learned a lot from my contributions (which has been useful at work), as well as have made friends and have become part of a community.

In this talk I will share my experience with contributing to Cucumber, including an early mistake (merging something that wasn’t ready yet) and fixing it with the support of core contributors, and still feeling welcome!
You’ll learn how how to find your project and contributions to start with, how to connect with the community to make sure your contributions are useful and the many types of contributions you can make.

Contributing to open source is a way of giving back to the community. In addition, it is a way for you to learn, collaborate and become part of a community. Getting (constructive) feedback on a pull request and collaborating to make things even better is a great feeling!

Marit van Dijk

May 17, 2019
Tweet

More Decks by Marit van Dijk

Other Decks in Programming

Transcript

  1. About me •Technical Test Engineer at bol.com (NL) •Core contributor

    to Cucumber •Organizer European Testing Conference @MaritvanDijk77
  2. Open source software •Who uses open source? •Who contributes? •Who

    doesn’t contribute (yet) but would like to? @MaritvanDijk77
  3. Goal of this talk Get one (or more!) of you

    to do their first open source Pull Request (PR) @MaritvanDijk77
  4. This talk •How I got started •What you can do

    (code AND not code) •How to get started @MaritvanDijk77
  5. How I got started •Work on a “real” project (vs

    coding challenges): •Learn new things •Do something useful @MaritvanDijk77
  6. Reasons to contribute •Learning •Give back / Feel useful •“Scratch

    an itch” (fix something you need) •Build CV / Portfolio •Network •Other? @MaritvanDijk77
  7. What to contribute: Code •Fix bugs •Add new features •Refactor

    •Add unit tests •Upgrade dependencies (Protip: Use tools to scan - https://snyk.io/) @MaritvanDijk77
  8. What to contribute: Code •Fix bugs •Add new features •Refactor

    •Add unit tests •Upgrade dependencies •Review PR’s @MaritvanDijk77
  9. What to contribute: Not code •Help the community •Documentation •Issues

    •Testing •Other: Design, Product owner, etc. •Ask! @MaritvanDijk77
  10. Help the community •Answer questions •Slack •Gitter •Mailing list •IRC

    •Protip: Consider adding that info to the documentation! @MaritvanDijk77
  11. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info •Review PR’s @MaritvanDijk77
  12. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info •Review PR’s @MaritvanDijk77
  13. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info •Review PR’s @MaritvanDijk77
  14. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info •Review PR’s @MaritvanDijk77
  15. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info •Review PR’s @MaritvanDijk77
  16. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info •Review PR’s @MaritvanDijk77
  17. Issues •Report issues • Ask if not sure • Check

    for duplicates • Provide relevant information: use template (or add one!) • Create an MCVE (https://stackoverflow.com/help/mcve) •Reproduce and add info (or tests!) •Triage & label issues @MaritvanDijk77
  18. Testing •Test a bugfix •Test a new feature •Test a

    new release •”Test” documentation / tutorials @MaritvanDijk77
  19. What to contribute: Not time •Most projects run on volunteers

    •You (or your employer) can donate money •https://opencollective.com/ •https://sfconservancy.org/ •https://www.patreon.com/ •https://tidelift.com/ •Etc. @MaritvanDijk77
  20. Reasons not to contribute •It’s scary! •Feelings of inadequacy •Limitations:

    legal, time, etc. •Poor feedback / communication •Bad actors @MaritvanDijk77
  21. How to get started •Find a project •Check how to

    contribute to that project •Pick a task •Set up your environment (if needed) •Collaborate! @MaritvanDijk77
  22. Get started: Find a project •A project you use: •You

    care •You’re already familiar! @MaritvanDijk77
  23. Get started: Find a project •Websites: •https://github.com/collections/choosing-projects •https://hacktoberfest.digitalocean.com/ (oktober) •https://www.codetriage.com/

    •https://up-for-grabs.net/#/ •https://www.firsttimersonly.com/ •https://opensource.guide/ •http://yourfirstpr.github.io/ @MaritvanDijk77
  24. Get started: Find a project •Focus on welcoming communities •Observe

    interactions (support, feedback, onboarding) @MaritvanDijk77
  25. Get started: How •README •CONTRIBUTING (a.k.a. HACKING) •LICENCE (a.k.a. COPYING)

    •Code of Conduct •Styleguides •Ask! @MaritvanDijk77
  26. Get started: What •Solve your own problem J •Check for

    “Good first issue” or similar •Ask! @MaritvanDijk77
  27. Get started: Environment •Setup your environment •Git / version control

    •Programming environment (JDK, …) •Package manager (Maven, npm, …) •Fork & clone the project •See if you can build the project •If not: ask (protip: add that info to docs!) @MaritvanDijk77
  28. Get started: Your first PR •Work on your contribution •Submit

    your contribution •Receive feedback & iterate •Contribution accepted! •Ask / communicate https://guides.github.com/introduction/flow/ https://lab.github.com/courses @MaritvanDijk77
  29. TL;DR •Contributing to open source doesn’t have to take a

    lot of time or programming skill •If you want to contribute, but don’t know how – ask the community! •Please go and create your (first) PR @MaritvanDijk77