Collaborating on Open Source - JFuture.dev (Minsk) Nov 16th, 2019

Collaborating on Open Source - JFuture.dev (Minsk) Nov 16th, 2019

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

November 16, 2019
Tweet

Transcript

  1. @MaritvanDijk77 github.com/mlvandijk medium.com/@mlvandijk Collaborating on Open Source Software JFuture.dev –

    Nov 16th, 2019
  2. About me •Software Engineer at bol.com (NL) •Core contributor to

    Cucumber •Organizer European Testing Conference •Conference speaker @MaritvanDijk77
  3. Contributing to open source •Who contributes to open source? @MaritvanDijk77

  4. Contributing to open source •Who contributes to open source? •Who

    would like to? @MaritvanDijk77
  5. Goal of this talk Get more people to do a

    (first) open source Pull Request (PR) @MaritvanDijk77
  6. Goal of this talk Get more people to do a

    (first) open source Pull Request (PR) @MaritvanDijk77
  7. Why I got started with open source •Work on a

    “real” project (vs coding challenges): •Learn new things •Do something useful @MaritvanDijk77
  8. Reasons to contribute •Learning •Give back / Feel useful •“Scratch

    an itch” (fix something you need) @MaritvanDijk77
  9. Reasons to contribute •Learning •Give back / Feel useful •“Scratch

    an itch” (fix something you need) •Build CV / Portfolio @MaritvanDijk77
  10. Reasons to contribute •Learning •Give back / Feel useful •“Scratch

    an itch” (fix something you need) •Build CV / Portfolio •Network @MaritvanDijk77
  11. Reasons to contribute •Learning •Give back / Feel useful •“Scratch

    an itch” (fix something you need) •Build CV / Portfolio •Network •Other? @MaritvanDijk77
  12. Finding a project •A project you use: •You care •You’re

    already familiar @MaritvanDijk77
  13. Cucumber •Started: I liked using it @MaritvanDijk77

  14. Cucumber •Started: I liked using it •Stayed: The community @MaritvanDijk77

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

  16. What to contribute: Code •Fix bugs •Add new features //

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

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

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

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

    •Add unit tests •Upgrade dependencies •Review PR’s @MaritvanDijk77
  21. What to contribute: Not code @MaritvanDijk77

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

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

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

    @MaritvanDijk77
  25. What to contribute: Not code •Help the community •Documentation •Issues

    •Testing @MaritvanDijk77
  26. What to contribute: Not code •Help the community •Documentation •Issues

    •Testing •Other: Design, Product owner, etc. @MaritvanDijk77
  27. What to contribute: Not code •Help the community •Documentation •Issues

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

    @MaritvanDijk77
  29. Help the community •Answer questions •Slack •Gitter •Mailing list •IRC

    •Protip: Consider adding that info to the documentation! @MaritvanDijk77
  30. Documentation •Fix typos @MaritvanDijk77

  31. Documentation •Fix typos •Fix dead links @MaritvanDijk77

  32. Documentation •Fix typos •Fix dead links •Provide feedback @MaritvanDijk77

  33. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity @MaritvanDijk77
  34. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info @MaritvanDijk77
  35. Documentation •Fix typos •Fix dead links •Provide feedback •Edit for

    clarity •Add missing info •Review PR’s @MaritvanDijk77
  36. Issues •Report issues @MaritvanDijk77

  37. Issues •Report issues • Ask if not sure @MaritvanDijk77

  38. Issues •Report issues • Ask if not sure • Check

    for duplicates @MaritvanDijk77
  39. Issues •Report issues • Ask if not sure • Check

    for duplicates • Provide relevant information: use template (or add one!) @MaritvanDijk77
  40. 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
  41. 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!) @MaritvanDijk77
  42. 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
  43. Testing •Test a bugfix @MaritvanDijk77

  44. Testing •Test a bugfix •Test a new feature @MaritvanDijk77

  45. Testing •Test a bugfix •Test a new feature •Test a

    new release @MaritvanDijk77
  46. Testing •Test a bugfix •Test a new feature •Test a

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

    @MaritvanDijk77
  48. What to contribute: Not time •Most projects run on volunteers

    @MaritvanDijk77
  49. What to contribute: Not time •Most projects run on volunteers

    •You (or your employer) can donate money @MaritvanDijk77
  50. 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
  51. Reasons not to contribute •It’s scary! @MaritvanDijk77

  52. Reasons not to contribute •It’s scary! •Feelings of inadequacy @MaritvanDijk77

  53. Reasons not to contribute •It’s scary! •Feelings of inadequacy •Limitations:

    legal, time, etc. @MaritvanDijk77
  54. Reasons not to contribute •It’s scary! •Feelings of inadequacy •Limitations:

    legal, time, etc. •Poor feedback / communication @MaritvanDijk77
  55. Reasons not to contribute •It’s scary! •Feelings of inadequacy •Limitations:

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

  57. How to get started •Find a project •Check how to

    contribute to that project @MaritvanDijk77
  58. How to get started •Find a project •Check how to

    contribute to that project •Pick a task @MaritvanDijk77
  59. How to get started •Find a project •Check how to

    contribute to that project •Pick a task •Set up your environment (if needed) @MaritvanDijk77
  60. 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
  61. Get started: Find a project •A project you use: •You

    care •You’re already familiar! @MaritvanDijk77
  62. 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
  63. Get started: Find a project •Focus on welcoming communities @MaritvanDijk77

  64. Get started: Find a project •Focus on welcoming communities •Observe

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

    LICENSE (a.k.a. COPYING) @MaritvanDijk77
  66. Get started: How • README • CONTRIBUTING (a.k.a. HACKING) •

    LICENSE (a.k.a. COPYING) • Code of Conduct @MaritvanDijk77
  67. Get started: How • README • CONTRIBUTING (a.k.a. HACKING) •

    LICENSE (a.k.a. COPYING) • Code of Conduct • Style guides @MaritvanDijk77
  68. Get started: How • README • CONTRIBUTING (a.k.a. HACKING) •

    LICENSE (a.k.a. COPYING) • Code of Conduct • Style guides • Contributor License Agreement (CLA) – some projects @MaritvanDijk77
  69. Get started: How • README • CONTRIBUTING (a.k.a. HACKING) •

    LICENSE (a.k.a. COPYING) • Code of Conduct • Style guides • Contributor Licence Agreement (CLA) – some projects • Ask! @MaritvanDijk77
  70. Get started: What •Solve your own problem J @MaritvanDijk77

  71. Get started: What •Solve your own problem J •Check for

    “Good first issue” or similar @MaritvanDijk77
  72. Get started: What •Solve your own problem J •Check for

    “Good first issue” or similar •Ask! @MaritvanDijk77
  73. Get started: Environment •Setup your environment @MaritvanDijk77

  74. Get started: Environment •Setup your environment •Git / version control

    @MaritvanDijk77
  75. Get started: Environment •Setup your environment •Git / version control

    •Programming environment (JDK, …) @MaritvanDijk77
  76. Get started: Environment •Setup your environment •Git / version control

    •Programming environment (JDK, …) •Package manager (Maven, npm, …) @MaritvanDijk77
  77. Get started: Environment •Setup your environment •Git / version control

    •Programming environment (JDK, …) •Package manager (Maven, npm, …) •Fork & clone the project @MaritvanDijk77
  78. 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 @MaritvanDijk77
  79. 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
  80. Get started: Your first PR •Work on your contribution @MaritvanDijk77

  81. Get started: Your first PR •Work on your contribution •Submit

    your contribution @MaritvanDijk77
  82. Get started: Your first PR •Work on your contribution •Submit

    your contribution •Receive feedback & iterate @MaritvanDijk77
  83. Get started: Your first PR •Work on your contribution •Submit

    your contribution •Receive feedback & iterate •Contribution accepted! @MaritvanDijk77
  84. Get started: Your first PR •Work on your contribution •Submit

    your contribution •Contribution declined… @MaritvanDijk77
  85. Get started: Your first PR •Work on your contribution •Submit

    your contribution •Receive feedback & iterate •Contribution accepted! •Ask & communicate! @MaritvanDijk77
  86. Getting PR’s @MaritvanDijk77

  87. 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
  88. 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
  89. 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
  90. @MaritvanDijk77 github.com/mlvandijk medium.com/@mlvandijk Collaborating on Open Source Software