Slide 1

Slide 1 text

First steps in contributing to OpenSource or: how I learned to relax and love opensource.

Slide 2

Slide 2 text

Telco Network Team @ Red Hat Contributed to: - Athens - KubeVirt - SR-IOV Network Operator - OPA Gatekeeper - OVN-Kubernetes - CNI Plugins @fedepaol - MetalLB [email protected] About me

Slide 3

Slide 3 text

Open Source is everywhere

Slide 4

Slide 4 text

Open Source is everywhere

Slide 5

Slide 5 text

Times have changed Linux is not in the public domain. Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. That's the way that the license works.

Slide 6

Slide 6 text

Times have changed Linux is not in the public domain. Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. That's the way that the license works. Steve Ballmer - 2001

Slide 7

Slide 7 text

Times have changed

Slide 8

Slide 8 text

The Open model has proven to work

Slide 9

Slide 9 text

Developer tools

Slide 10

Slide 10 text

What contributing to Open Source is about?

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Common Excuses ● They won’t like my code

Slide 13

Slide 13 text

Common Excuses ● They won’t like my code ● The codebase is too hard to read

Slide 14

Slide 14 text

Common Excuses ● They won’t like my code ● The codebase is too hard to read ● I feel I am not good enough

Slide 15

Slide 15 text

Common Excuses ● They won’t like my code ● The codebase is too hard to read ● I feel I am not good enough IMPOSTOR SYNDROME

Slide 16

Slide 16 text

Contributors are a rare commodity

Slide 17

Slide 17 text

Why you should contribute to Open Source ● You need a new feature in a project you use

Slide 18

Slide 18 text

Why you should contribute to Open Source ● You need a new feature in a project you use ● You want to learn

Slide 19

Slide 19 text

Why you should contribute to Open Source ● You need a new feature in a project you use ● You want to learn ● You want to get credibility

Slide 20

Slide 20 text

Why you should contribute to Open Source ● You need a new feature in a project you use ● You want to learn ● You want to get credibility ● It feels good (it really does)

Slide 21

Slide 21 text

GitHub Workflow

Slide 22

Slide 22 text

GitHub workflow Fork the repo

Slide 23

Slide 23 text

GitHub workflow ● Clone your repo ● Work locally on a branch ● Push the branch to your fork https://flic.kr/p/9sqxm2

Slide 24

Slide 24 text

GitHub workflow

Slide 25

Slide 25 text

GitHub workflow Profit!

Slide 26

Slide 26 text

Adding a new feature

Slide 27

Slide 27 text

Adding a new feature ● You have the project

Slide 28

Slide 28 text

Adding a new feature ● You have the project ● You know what to do

Slide 29

Slide 29 text

Adding a new feature ● You have the project ● You know what to do ● Always ask first!

Slide 30

Slide 30 text

How to find the right project

Slide 31

Slide 31 text

Finding a project ● Start with something you like / respect ● See if it matches the tech stack you want to work with ● Ask around ● See if it is contributor friendly

Slide 32

Slide 32 text

Traits of a contributor friendly project

Slide 33

Slide 33 text

Onboarding Docs https://flic.kr/p/5J9VCJ

Slide 34

Slide 34 text

from https://github.com/gomods/athens/ Onboarding docs

Slide 35

Slide 35 text

from https://wiki.mozilla.org/Mobile/Get_Involved Onboarding docs

Slide 36

Slide 36 text

from metallb.universe.tf/community/ Onboarding docs

Slide 37

Slide 37 text

Issues to work on https://flic.kr/p/TgaSRz

Slide 38

Slide 38 text

from https://github.com/kubernetes/kubernetes Issues

Slide 39

Slide 39 text

from https://github.com/nats-io/nats.go Issues

Slide 40

Slide 40 text

from https://github.com/gomods/athens/issues Labels on issues

Slide 41

Slide 41 text

from https://github.com/metallb/metallb/issues Labels on issues

Slide 42

Slide 42 text

Pay attention to

Slide 43

Slide 43 text

from https://github.com/axios/axios Stagnating Prs

Slide 44

Slide 44 text

Stagnating Prs

Slide 45

Slide 45 text

Maintainers response time https://flic.kr/p/93U9UM

Slide 46

Slide 46 text

Continuous Integration / Delivery https://flic.kr/p/RJ5xEs

Slide 47

Slide 47 text

Released Versions https://flic.kr/p/vJ6Ekn

Slide 48

Slide 48 text

You found a project, then what?

Slide 49

Slide 49 text

Big, famous project or small project? https://flic.kr/p/T3nu6F https://flic.kr/p/oKfTqp

Slide 50

Slide 50 text

First steps ● (Say hi) ● Find an issue ● Ask if you can take it ● Start working until submitting a PR...

Slide 51

Slide 51 text

And this is just the beginning https://flic.kr/p/5Gm38m

Slide 52

Slide 52 text

Open Source is different from what you are used to

Slide 53

Slide 53 text

Once submitting the PR, you’ll get reviews ● Reviews are really thorough ● As a new contributor, maintainers will keep a higher bar ● You’ll need to defend your ideas ● You’ll have to accept critics and suggestions (or both)

Slide 54

Slide 54 text

Once submitting the PR, you’ll get reviews ● Reviews are really thorough ● As a new contributor, maintainers will keep a higher bar ● You’ll need to defend your ideas ● You’ll have to accept critics and suggestions (or both) ● And iterate

Slide 55

Slide 55 text

Open Source is about communicating https://flic.kr/p/9SCd2b

Slide 56

Slide 56 text

Open Source is about communicating

Slide 57

Slide 57 text

What do you get back?

Slide 58

Slide 58 text

Learn from the best ● If you choose the right project, maintainers are likely to be among the best people in industry ● See how they work ● Learn from them ● Get coding advices from them ● Free coding lessons

Slide 59

Slide 59 text

Find your way through a huge codebase ● (Or learn to ask) ● Demonstrate you are able to work on a big project with a lot of people ● Learn to read code https://flic.kr/p/M5FbgT

Slide 60

Slide 60 text

Find your way through a huge codebase ● (Or learn to ask) ● Demonstrate you are able to work on a big project with a lot of people ● Learn to read (a lot of) code https://flic.kr/p/M5FbgT

Slide 61

Slide 61 text

Expand your network ● Meet people from different countries ● Get in touch with smart people ● Make friends! https://flic.kr/p/pt18wC

Slide 62

Slide 62 text

Feels Good!

Slide 63

Slide 63 text

Will make your resume shine https://flic.kr/p/nbAtrh

Slide 64

Slide 64 text

Will make your resume shine ● You demonstrate passion ● You have a public example of your work (and how you interact with other people) ● You worked on something recognizable ● You can handle a big codebase ● You show you can work in a distributed environment

Slide 65

Slide 65 text

Sometimes it’s hard https://flic.kr/p/J88ZHx

Slide 66

Slide 66 text

Conflicts ● With time, you’ll work on more complex tasks ● With more complex tasks, there will be different opinions ● You’ll need to manage them, and sometimes it’s hard and painful to fight against somebody well trusted

Slide 67

Slide 67 text

You’ll initially be a second class citizen ● Your PRs might still be ignored ● The maintainers may decide the feature you spent so much time on is not wanted anymore ● They may give unrelated comment / ask to redesign the whole thing

Slide 68

Slide 68 text

“Of course, I'd also suggest that whoever was the genius who thought it was a good idea to read things ONE F*CKING BYTE AT A TIME with system calls for each byte should be retroactively aborted. Who the f*ck does idiotic things like that? How did they not die as babies, considering that they were likely too stupid to find a tit to suck on?” from https://lkml.org/lkml/2012/7/6/495 People may be rude

Slide 69

Slide 69 text

Is it worth the effort?

Slide 70

Slide 70 text

Thanks! Any questions? @fedepaol [email protected] Slides at: speakerdeck.com/fedepaol [email protected]