Slide 1

Slide 1 text

HOW A ”NOT THE GREATEST ENGINEER” BECAME A GO CONTRIBUTOR Yohei Takeda @yotakyotak

Slide 2

Slide 2 text

2 Who is the target of this talk?

Slide 3

Slide 3 text

MY DREAM IS TO BE A CONTRIBUTOR! 3

Slide 4

Slide 4 text

BUT I’M NOT THAT GOOD... 4

Slide 5

Slide 5 text

DON’T KNOW HOW TO DO IT. 5

Slide 6

Slide 6 text

After my talk, you... ▸ Can grasp what to do to be a contributor! ▸ Get encouraged to start your action! ▸ Understand that anybody(requires a little english) can try! 6

Slide 7

Slide 7 text

What I found out after my challenge ▸ You don’t have to be the “greatest engineer” ▸ At least for Go! Can’t imagine? Let me share precisely, the steps I actually took! 7

Slide 8

Slide 8 text

1. WHO AM I? My introduction 8

Slide 9

Slide 9 text

Yohei Takeda @yotakyotak Go engineer, team leader @ Media Do Sometimes Vue.js, AWS Began engineer career after graduating University, without CS background 9

Slide 10

Slide 10 text

2. WHY DID I TRY TO CONTRIBUTE? 10

Slide 11

Slide 11 text

11 ”CONTRIBUTOR” SOUNDS SOOOO COOL!! At my first job, almost nobody around me was a “contributor”.

Slide 12

Slide 12 text

12 Came across a cool slide: https://kevin.burke.dev/slides/becoming-go-contri butor/#title-slide https://about.sourcegraph.com/go/gophercon-20 18-becoming-a-go-contributor

Slide 13

Slide 13 text

“ Small commits to start 13

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

15 fmt package lacks example

Slide 16

Slide 16 text

16 Editing source codes might be difficult, but I can add documents or examples. Why not give it a try?

Slide 17

Slide 17 text

3. STEPS TO GET STARTED 17

Slide 18

Slide 18 text

https://golang.org/doc/contribute.html#contributor - And any editor you like! For me, VS Code - It might take 30 mins to go through Step 0-4 18

Slide 19

Slide 19 text

19

Slide 20

Slide 20 text

4. HOW I FOUND MY ISSUE 20

Slide 21

Slide 21 text

START WITH FMT EXAMPLES! 21 Designed by yanalya / Freepik

Slide 22

Slide 22 text

22

Slide 23

Slide 23 text

23

Slide 24

Slide 24 text

24

Slide 25

Slide 25 text

IT’S NO LONGER AN ISSUE 25

Slide 26

Slide 26 text

I’LL FIND ONE BY MYSELF! 26

Slide 27

Slide 27 text

Condition of “easy to start” issue: https://github.com/golang/go/issues?utf8=%E2%9 C%93&q=+is%3Aissue+is%3Aopen+label%3ADo cumentation+label%3ANeedsFix+NOT+%22gola ng.org%2Fcl%22+ -> open issue, “Documentation”, “NeedsFix”, no PR yet. 27

Slide 28

Slide 28 text

28 I’ll take this one!

Slide 29

Slide 29 text

5. STEPS TO SUBMISSION 29

Slide 30

Slide 30 text

30 Understand the issue

Slide 31

Slide 31 text

31 Lacking document for compile & link

Slide 32

Slide 32 text

Least thing to do, add docs for: ▸ go compile -m ▸ go link -a, -buildid 32

Slide 33

Slide 33 text

THAT’S NOT IDEAL SOLUTION!

Slide 34

Slide 34 text

My decision Document all the flags provided for compile/link. I SHOULD SEEK FOR IDEAL SOLUTION. What I could have done Before starting to work on it, ask Go members if I’m on the wrong track. 34

Slide 35

Slide 35 text

START READING THE CODE 35

Slide 36

Slide 36 text

Simply, read, read and read ▸ Around 10 articles about build/compile/link ▸ Try commands with flags ▸ Get deeper understanding of Go! 36

Slide 37

Slide 37 text

37 Nice HINT! from: https://github.com/golang/go/blob/master/ src/cmd/compile/internal/gc/main.go

Slide 38

Slide 38 text

38 Documented all lacking flags

Slide 39

Slide 39 text

https://golang.org/doc/contribute.html#sending_a _change_gerrit 2 ways to commit; Github & Gerrit( <- preferred!) 39

Slide 40

Slide 40 text

40 DONE!!

Slide 41

Slide 41 text

BUT THERE’S STILL A LONG WAY TO GO...

Slide 42

Slide 42 text

4 MORE PATCH SETS TO GO!

Slide 43

Slide 43 text

6. DEAL WITH FEEDBACKS 43

Slide 44

Slide 44 text

44 Polite feedback

Slide 45

Slide 45 text

Try to understand the feedback ▸ “flags related to debug info generated by the compiler, and flags related to debugging the compiler itself” ▸ I understand what it means, but difficult to judge for each flags… Don’t spend too much time!! 45

Slide 46

Slide 46 text

46 Tell “I’m not confident”

Slide 47

Slide 47 text

Don’t be embarrassed! ▸ It’s important to be honest, especially when you communicate with somebody who don’t know how skilled you are. ▸ Assume you don’t have chance to talk with reviewers. You have to communicate on “comments”. Then you have to be precise. 47

Slide 48

Slide 48 text

NO REPLIES FOR SEVERAL WEEKS... I GUESS I SHOULD REMIND THEM! 48

Slide 49

Slide 49 text

49 STARTED INVESTIGATION...

Slide 50

Slide 50 text

50 DONE!

Slide 51

Slide 51 text

51 After a while...

Slide 52

Slide 52 text

THIS IS NOT EASY 52

Slide 53

Slide 53 text

READ, FIX, AGAIN AND AGAIN 53

Slide 54

Slide 54 text

What I’ve done for the following 3 patches ▸ Repeat the basic steps. Read feedback, read source code, add some backgrounds if any. ▸ I’ve made some mistakes... miss commits, misunderstandings ▸ My job got busy, I couldn’t work on this for 3 months 54

Slide 55

Slide 55 text

55

Slide 56

Slide 56 text

56

Slide 57

Slide 57 text

FINALLY...!

Slide 58

Slide 58 text

58

Slide 59

Slide 59 text

59 https://github.com/golang/go/blob/master/CONTRIBUTORS

Slide 60

Slide 60 text

60 Designed by jigsawstocker / Freepik

Slide 61

Slide 61 text

7. SUMMARY 61

Slide 62

Slide 62 text

Not easy ▸ It took me about 20~30h. Studying + 4,5h per patch ▸ Not all english is easy. But it’s not face-to-face communication, take time. ▸ You might not fully understand the source codes. But sometimes you don’t have to. 62

Slide 63

Slide 63 text

What I should have done ▸ When you’re too busy to continue, you should say so. Someone else might work on it, and there’s always other issues for you to work on when you get free. ▸ When there’s anything unclear, ask before submitting patch. 63

Slide 64

Slide 64 text

But worth a challenge! ▸ You don’t have to be scared, embarrassed. Don’t just submit your source code, add precise comments, ask questions, share anything you have in your mind. ▸ Your process doesn’t have to be “perfect”. Start your journey to Go contributor! 64

Slide 65

Slide 65 text

Thank you! 65