Slide 1

Slide 1 text

how to become an (good) open source contributor in 1 hour

Slide 2

Slide 2 text

- Step 1 - Start Contributing

Slide 3

Slide 3 text

- Step 2 - ...

Slide 4

Slide 4 text

- Step 3 - PROFIT!

Slide 5

Slide 5 text

how to become an (good) open source contributor in 1 hour

Slide 6

Slide 6 text

how to become a n (good) open source contributor in 1 hour

Slide 7

Slide 7 text

@ simonbasle

Slide 8

Slide 8 text

ideas and advice and NOT a perfect recipe In this talk:

Slide 9

Slide 9 text

1 Where to Start?

Slide 10

Slide 10 text

familiarize with Git / GitHub

Slide 11

Slide 11 text

picking a project

Slide 12

Slide 12 text

documentation

Slide 13

Slide 13 text

samples and tests ⚗

Slide 14

Slide 14 text

opening issues

Slide 15

Slide 15 text

engaging with the community

Slide 16

Slide 16 text

actual code

Slide 17

Slide 17 text

2 how to do it well?

Slide 18

Slide 18 text

the "don't be that guy" part

Slide 19

Slide 19 text

"the good, the bad and the ugly" Dramatis Personae

Slide 20

Slide 20 text

"the good, the bad and the ugly" Dramatis Personae

Slide 21

Slide 21 text

Archetype ugly version of the archetype (don't be that guy) bad version of the archetype (try to not be that guy either) fix to the archetype (be THAT guy instead)

Slide 22

Slide 22 text

the Diva

Slide 23

Slide 23 text

the Diva feature X Unbelievable that feature X isn't included in this project. Please add it!

Slide 24

Slide 24 text

the Diva feature X One feature that I'm greatly missing in this project is the ability to do X. Here is what I mean by feature X: (...).

Slide 25

Slide 25 text

Discussion around adding feature X Hi! I'd like to discuss the addition of feature X and whether or not you have considered it in the past. If so, I'd like to know more about the rationale around not adding it. Here is a more detailed analysis of my use case and the need for feature X, as well at some implementation idea: (...). I'd be open to starting a PR exploring these too. the Diva

Slide 26

Slide 26 text

the Riddler ❓

Slide 27

Slide 27 text

the Riddler it doesn't work The other day while running this project I got an error.

Slide 28

Slide 28 text

the Riddler Strange bug while running method foo While using this project, I tried to apply method foo and I got a strange error about an index that was out of bounds. Did I do anything wrong?

Slide 29

Slide 29 text

the Riddler IndexOutOfBounds when applying method foo to an empty List Using method foo in my code, I ran into a bug where if I pass an empty List to the method, it throws an IndexOutOfBoundsException. Here is the stack trace and a reproducible test case: Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0 at java.util.Collections$EmptyList.get(Collections.java:4454) at some.library.LibUtils.foo(LibUtils.java:54) at my.project.Application.main(Application.java:59)

Slide 30

Slide 30 text

the Artist

Slide 31

Slide 31 text

the Artist I fixed a minor typo in LibUtils.foo javadoc and added the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc

Slide 32

Slide 32 text

I fixed a minor typo in LibUtils.foo javadoc and added the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc the Artist

Slide 33

Slide 33 text

the Artist I fixed a minor typo in LibUtils.foo javadoc and added the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc

Slide 34

Slide 34 text

I fixed a minor typo in LibUtils.foo javadoc and added the missing javadoc for foobar. Fix typo in foo javadoc, add missing foobar javadoc the Artist (commit still contains a hundred line changes from spaces to tabs)

Slide 35

Slide 35 text

the Artist I fixed a minor typo in LibUtils.foo javadoc and added the missing javadoc for foobar. Additionally I noticed there was no formatter setting shared in the project but it seemed to follow tab-based formatting, so I used that. Since foo javadoc formatting was off, I fixed it but limited my change to these 2 methods... Fix typo in foo javadoc, add missing foobar javadoc

Slide 36

Slide 36 text

the Alien-Abductee

Slide 37

Slide 37 text

the Alien-Abductee

Slide 38

Slide 38 text

the Alien-Abductee

Slide 39

Slide 39 text

the Alien-Abductee

Slide 40

Slide 40 text

the Quick Trigger

Slide 41

Slide 41 text

the Quick Trigger

Slide 42

Slide 42 text

the Quick Trigger

Slide 43

Slide 43 text

the Quick Trigger

Slide 44

Slide 44 text

a few github tricks

Slide 45

Slide 45 text

PR rights for maintainers

Slide 46

Slide 46 text

✏✏✏⌫✏ commit often on PR branch

Slide 47

Slide 47 text

commit often on PR branch

Slide 48

Slide 48 text

✒ ...but squash & merge at the end

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

...but squash & merge ✒ at the end (maybe as controversial as tabs vs space) ⚠

Slide 52

Slide 52 text

3 as a maintainer

Slide 53

Slide 53 text

best effort

Slide 54

Slide 54 text

don't be afraid to (gently) say NO

Slide 55

Slide 55 text

don't be afraid to (sternly) say NO

Slide 56

Slide 56 text

foster a welcoming community

Slide 57

Slide 57 text

guiding contributors

Slide 58

Slide 58 text

don't be afraid to close issues

Slide 59

Slide 59 text

4 enterprise OpenSource

Slide 60

Slide 60 text

should you open source stuff?

Slide 61

Slide 61 text

how to convince your boss

Slide 62

Slide 62 text

sometimes the problem is not the Boss (could it be the lawyers?)

Slide 63

Slide 63 text

CLA and its usefulness ⚖

Slide 64

Slide 64 text

reduce friction invest in tooling

Slide 65

Slide 65 text

a few governance alternatives

Slide 66

Slide 66 text

conclusion

Slide 67

Slide 67 text

it's not that hard

Slide 68

Slide 68 text

don't forget there's a human on the other side of the screen

Slide 69

Slide 69 text

Thank you!

Slide 70

Slide 70 text

Questions?

Slide 71

Slide 71 text

credits • Whiteboard - CC0 (via WikiMedia) • Cork board - CC-By-NC-SA (Caitlin Bussey, via Flickr) • Tack - CC0 (via PixaBay) • Sketch of The May House in Avondale - CC-By-Sa (Evan Roshek via WikiMedia) • Joy Oil gas station blueprints - PubDom (via WikiMedia) • Pilots at work on Thai Smile Airbus A320 - CC-By (Max Alpha X-ray via WikiMedia) • Meeting Room - CC0 (via Pexels)