Slide 1

Slide 1 text

@MaritvanDijk77 github.com/mlvandijk medium.com/@mlvandijk Collaborating on Open Source Software

Slide 2

Slide 2 text

About me •Technical Test Engineer at bol.com (NL) •Core contributor to Cucumber @MaritvanDijk77

Slide 3

Slide 3 text

Open source software •Who uses open source? •Who contributes? •Who doesn’t contribute (yet)? @MaritvanDijk77

Slide 4

Slide 4 text

Goal of this talk Get one (or more!) of you to do their first open source Pull Request (PR) @MaritvanDijk77

Slide 5

Slide 5 text

How I got started •Work on a “real” project (vs coding challenges): •Learn new things •Do something useful @MaritvanDijk77

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Why Cucumber? •Started: I liked using it •Stayed: The community @MaritvanDijk77

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

What to contribute: Code •Fix bugs •Add new features // TODO @MaritvanDijk77

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

What to contribute: Code •Fix bugs •Add new features •Refactor •Add unit tests •Upgrade dependencies •Review PR’s @MaritvanDijk77

Slide 14

Slide 14 text

What to contribute: Not code @MaritvanDijk77

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Help the community •Answer questions •Slack •Gitter •Mailing list •IRC •Protip: Consider adding that info to the documentation! @MaritvanDijk77

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Testing •Test a bugfix •Test a new feature •Test a new release •”Test” documentation / tutorials @MaritvanDijk77

Slide 25

Slide 25 text

What to contribute: Not time @MaritvanDijk77

Slide 26

Slide 26 text

What to contribute: Not time @MaritvanDijk77

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Get started: Find a project •A project you use: •You care •You’re already familiar! @MaritvanDijk77

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Get started: Find a project •Focus on welcoming communities •Observe interactions (support, feedback, onboarding) @MaritvanDijk77

Slide 33

Slide 33 text

Get started: How •README •CONTRIBUTING (a.k.a. HACKING) •LICENCE (a.k.a. COPYING) •Code of Conduct •Styleguides •Ask! @MaritvanDijk77

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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: and add that info to docs!) @MaritvanDijk77

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Contribution accepted! @MaritvanDijk77

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

@MaritvanDijk77 github.com/mlvandijk medium.com/@mlvandijk Collaborating on Open Source Software