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

Collaborating on Open Source Software

62b3ae0dcd8e12a5eedd1fbe417bc6c8?s=47 Marit van Dijk
October 06, 2020
20

Collaborating on Open Source Software

Collaborating on Open Source Software;
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 maintainers, 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 different 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!

62b3ae0dcd8e12a5eedd1fbe417bc6c8?s=128

Marit van Dijk

October 06, 2020
Tweet

Transcript

  1. Collaborating on Open Source Software CONTRIBUTING.MD – Oct 6th, 2020

    @MaritvanDijk77 github.com/mlvandijk medium.com/@mlvandijk
  2. Contributing to Open Source Software •Why (not) to contribute •What

    to contribute •How to contribute @MaritvanDijk77
  3. Why I got started with Open Source Software •Learn new

    things •Do something useful @MaritvanDijk77
  4. Reasons to contribute •Learning •Give back / Feel useful •“Scratch

    an itch” (fix something you need) •Build CV / Portfolio •Network •Other? @MaritvanDijk77
  5. Reasons not to contribute •It can be scary! https://www.youtube.com/watch?v=BO223Q4QZkA @MaritvanDijk77

  6. Reasons not to contribute •It can be scary! •Limitations: Time,

    Legal, … •Bad previous experience @MaritvanDijk77
  7. You can help! •Different ways to contribute @MaritvanDijk77

  8. My first project: •Started: I liked using it •Stayed: The

    community @MaritvanDijk77
  9. What to contribute? •Code @MaritvanDijk77

  10. What to contribute: Code •Fix bugs @MaritvanDijk77

  11. What to contribute? •Fix bugs •Add new features // TODO

    @MaritvanDijk77
  12. What to contribute: Code •Fix bugs •Add new features •Refactor

    @MaritvanDijk77
  13. What to contribute: Code •Fix bugs •Add new features •Refactor

    •Add unit tests @MaritvanDijk77
  14. What to contribute: Code •Fix bugs •Add new features •Refactor

    •Add unit tests •Upgrade dependencies @MaritvanDijk77
  15. What to contribute: Code •Fix bugs •Add new features •Refactor

    •Add unit tests •Upgrade dependencies •Review PR’s @MaritvanDijk77
  16. What to contribute? •Code •Not code @MaritvanDijk77

  17. What to contribute: Not code @MaritvanDijk77 https://pragprog.com/book/ vbopens/forge-your-future- with-open-source

  18. What to contribute: Not code •Help the community @MaritvanDijk77

  19. Help the community •Answer questions •Slack •Gitter •Mailing list •IRC

    •etc @MaritvanDijk77
  20. Help the community •Answer questions @MaritvanDijk77

  21. Help the community •Answer questions •Pro tip: Consider adding that

    info to the documentation! Shameless plug (add some Cucumber FAQ here :) https://github.com/cucumber/docs.cucumber.io/issues/284 @MaritvanDijk77
  22. What to contribute: Not code @MaritvanDijk77 •Help the community •Documentation

    Shameless plug: https://github.com/cucumber/docs.cucumber.io/issues
  23. Documentation •Add info @MaritvanDijk77

  24. Documentation •Add info •Edit / clarify https://github.com/cucumber/docs.cucumber.io/issues/389 @MaritvanDijk77

  25. Documentation •Add info •Edit / clarify •Fix typos @MaritvanDijk77

  26. Documentation •Add info •Edit / clarify •Fix typos •Fix dead

    links @MaritvanDijk77
  27. Documentation •Add info •Edit / clarify •Fix typos •Fix dead

    links •Review PR’s @MaritvanDijk77
  28. Documentation •Add info •Edit / clarify •Fix typos •Fix dead

    links •Review PR’s •Restructure @MaritvanDijk77
  29. What to contribute: Not code •Help the community •Documentation •Issues

    @MaritvanDijk77
  30. 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) @MaritvanDijk77
  31. Issues •Report issues •Analyze issues • Reproduce • Add info

    (or tests!) @MaritvanDijk77
  32. What to contribute: Not code •Help the community •Documentation •Issues

    •Testing @MaritvanDijk77
  33. Testing •Bugfix •New feature •New release •Documentation / tutorials @MaritvanDijk77

  34. What to contribute: Not code •Help the community •Documentation •Issues

    •Testing •Other: Design, Product owner, etc. •Ask! @MaritvanDijk77
  35. What to contribute: Not time •Most projects run on volunteers

    @MaritvanDijk77
  36. 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/ @MaritvanDijk77
  37. Money isn’t everything… without people to do the work @MaritvanDijk77

  38. Money isn’t everything… https://www.infoq.com/presentations/open-source-troubles-help/ @MaritvanDijk77

  39. How to get started •Find a project @MaritvanDijk77

  40. Finding a project •A project you use: •You care •You’re

    already familiar @MaritvanDijk77
  41. Finding a project The following resources share repositories that curate

    tasks for beginners: • Awesome for Beginners • Up For Grabs • Issuehub.io • First Timers Only • Good First Issues Source: https://hacktoberfest.digitalocean.com/details @MaritvanDijk77
  42. How to get started •Find a project •Check how to

    contribute to that project @MaritvanDijk77
  43. Check how to contribute • README • CONTRIBUTING (a.k.a. HACKING)

    • LICENSE (a.k.a. COPYING) • Code of Conduct • Style guides • Contributor License Agreement (CLA) – some projects • Ask! @MaritvanDijk77
  44. How to create a pull request Hacktoberfest presented by DigitalOcean

    @MaritvanDijk77
  45. How to get started •Find a project •Check how to

    contribute to that project •Pick a task @MaritvanDijk77
  46. Pick a task •Solve your own problem J @MaritvanDijk77

  47. Pick a task •Solve your own problem J •Check for

    “Good first issue” or similar @MaritvanDijk77
  48. Pick a task •Solve your own problem J •Check for

    “Good first issue” or similar •Ask! @MaritvanDijk77
  49. How to get started •Find a project •Check how to

    contribute to that project •Pick a task •Set up your environment (if needed) @MaritvanDijk77
  50. Set up your environment •Tools •Git / version control •Programming

    environment (IDE, JDK, …) •Package manager (Maven, Gradle…) @MaritvanDijk77
  51. Set up your environment •Tools •Fork & clone the project

    @MaritvanDijk77
  52. Set up your environment •Tools •Fork & clone the project

    •See if you can build the project @MaritvanDijk77
  53. Set up your environment •Setup your environment •Fork & clone

    the project •See if you can build the project •If not: Ask (Pro tip: Add that info to docs!) @MaritvanDijk77
  54. 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
  55. Collaborate: Your first PR •Discuss your intentions •Work on your

    contribution •Submit your contribution •Receive feedback & iterate •Contribution accepted! @MaritvanDijk77
  56. Collaborate: Your first PR •Contribution declined… “No is temporary, yes

    is forever” https://blog.jessfraz.com/post/the-art-of-closing/ @MaritvanDijk77
  57. Collaborate: Your first PR •Discuss your intentions •Work on your

    contribution •Submit your contribution •Receive feedback & iterate •Contribution accepted! •Ask & communicate! @MaritvanDijk77
  58. 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 collaborate! @MaritvanDijk77
  59. Collaborating on Open Source Software CONTRIBUTING.MD – Oct 6th, 2020

    @MaritvanDijk77 github.com/mlvandijk medium.com/@mlvandijk