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
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