Concerning the level required to contribute to Go

208 views
Skip to first unread message

Levieux Michel

unread,
Jun 21, 2019, 8:22:40 PM6/21/19
to golang-nuts
Hi all,

I've been thinking a lot about that lately and can't seem to find an answer on my own.
I would be soooooo glad and fulfilled if I could contribute to the go project. However, I am wondering about whether or not it is my lack of knowledge of the go language that prevents me from taking the step.

/* Skip this part, boring

I mean, I have read a lot of the go source code, including the last version of the language. I know how maps work, I mean globally, I know things about the garbage collector, I know things about go assembly (maybe more than in some other themes, since it seems reallyyyyyyyy interesting for me), I know things about lexing, parsing, and compiling (but not much yet).
I have developped several projects in Go (from really small to huge ones), I've worked on a real-time bidder (for advertising), I've worked on many different DB systems, Redis, MySQL, ElasticSearch... I've implemented cool things like conditional loggers, an ncurse snake game, an implementation of the encoding/json library (that is probably clearly not as good as the existing one since it was purely for fun, but I did it ^^ ).
In fact, I really want to contribute to the go project, for many many reasons, most of which I think you will refer to (I am talking to the go community (in terms of development)).

*/ You can start again here

1. I love this project, I think it is going to go far further (yes, this choice of words) than many other languages, and I wanna be part of this world-wide change.
2. I think (subjectively, and clearly it looks like a mistake) that I can bring new ideas and concepts to the project itself.
3. I feel like we should all be part of such things. Projects that can be "world-changers", open-source, community-open, change-ready. And here I am not only referring to go, I am also referring to Unix systems, Kubernetes, Docker...

And so many others I just can't find easily right now.
So here is the question I am asking here:
How did you guys know when you were like "ready" to contribute to the project and suggest changes, advance knowlegde and all of that?

PS: to bring some clarity to this post, I am 22, I have like 4 years of experience in programming, a little in C, Java, C++, Python, but mostly in Go. I'm from France so please forgive my bad english.

Thank you all in advance for your time and consideration.

Michel,

Marcin Romaszewicz

unread,
Jun 21, 2019, 11:28:03 PM6/21/19
to Levieux Michel, golang-nuts
So, I'm not a Go contributor, but I've been doing this software-for-a-living thing for about 25 years now, but never in these years have I experience some kind of read/not ready transition. When I was less experienced, I thought I knew a lot more than I did, now that I know an order of magnitude more than I did in my 20's, I realize how little I know :) 

Don't think in terms of being ready for others to listen to you, that doesn't depend just on you, it depends on the project maintainers' respect of you as well. You build that respect by starting small, picking off issues that might and contributing less directly. Find some Go bugs to fix, send pull requests. Don't do big things without first asking, as people won't just accept a PR to add generics out of the blue, but perhaps a bug fix will be much appreciated. Find some well used Go package and contribute to that too, build up a history in the Go community. You can always fork the project and experiment with your own language extensions; this won't directly contribute, but will teach you a LOT. It's one thing to read code, it's another thing to build a working compiler which supports a new keyword.

Also, recognize the four years of experience isn't all that much, and listen to feedback. You start to form a good mental image of how programming languages solve problems once you've done enough work in enough languages, and you start to see what works, what doesn't, what's messy, and what's nice.

--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAL4P9zzV7spKu9CwsW3%3DpPR7dUX44H0HSdOua1RiB2mo%3DHxTxg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Levieux Michel

unread,
Jun 22, 2019, 2:37:13 AM6/22/19
to golang-nuts
Hi!

Thank you very very much for your feedback on this 'feeling'. I (think I) know four years is not a huge amount of experience. And I hope I'll be able to learn as much as I have learned recently (learning about computer science is so vast and long and everything, but soooo interesting!) during the next months / years / decades.

I'm gonna try and involve into small moves to help [like bug fixes]. I hope I'll be good at that!

Thank you again! :D

Daniela Petruzalek

unread,
Jun 22, 2019, 6:23:17 AM6/22/19
to Levieux Michel, golang-nuts
Hi Levieux!

I think Marcin already gave you the answer you seek, but still I want to reinforce what he said.

First, for contributing to to Go, there is not only way of doing so. It doesn't need to be coding at all, you can still contribute by writing articles, speaking at conferences, doing videos or podcasts, even answering questions at stack overflow (or publishing some) counts. 

Because the tone of your message I know you meant actual code, but I just wanted to open your mind about this possibility.

Second, if you want to contribute with code, you don't need to start with the Go code base immediately. There are many popular (and unpopular) libraries that you can contribute to to start getting the feeling of how it works. My first official contribution to Go didn't have a single line of Go code... I was organising the talk repository for the Gophercon Denver 2017 so... basically, markdown :)

Again, you've mentioned explicitly the go code base, so I'm getting there.

The good news is, although the Go code base is huge,  if you know what you are looking for it can be quite easy to submit contributions.

I would divide the project in three parts (my own classification, not official): the compiler code, the standard library and the command line tools. It is very hard to know the entire code base, but maybe you have some thing that you want to specialise into and it can help you to focus your efforts on that part of the code.

To start contributing you need to sign the CLA and create a gerrit account. The details can be found here https://golang.org/doc/contribute.html, but I've also described the process here in my own terms: https://hackernoon.com/configuring-googles-pixelbook-to-contribute-to-go-2be955c21936. It seems that today you can already submit contributions directly to the Github repo by the traditional Fork + Pull Request ,ethod, but I still prefer the old one, for some unknown reason.

After setting up you can triage some "help wanted" or "good first issue" issues here: https://github.com/golang/go/issues

My first issue was fixing 4 spaces... literally got 4 bytes of code changed. +2, merged. No shame on that. I like to cite that example because it is a clear proof that no change is too small.

The low hanging fruits are the Documentation bugs and Test coverage / Examples. But there are also bugs and improvements from all types of complexities that you can help with.

Be prepared for everything, I've mentioned that my first contribution to Go was in markdown... my last one was in JavaScript... lol... I'm fixing a weird bug in the present app, which is part of the command line tools.

I am yet to make a great contribution to the Go code base, with lots of Go code and rainbows, but I hope my experience can show you that you don't need to be a rocket scientist to contribute to it.

Best,

Daniela Petruzalek
Software Engineer


brainman

unread,
Jun 22, 2019, 12:56:17 PM6/22/19
to golang-nuts
Levieux,

It is normal to doubt your abilities. I still doubt my abilities after many years of contributing to Go. In my view, from what you told about yourself, you should have plenty of experience to contribute to the project. Pretty much everything in Go project is written in Go. So, if you used Go before, you should be able to understand everything there. There is, probably, a lot of code there, so it might look scary for someone who starts from nothing. But there are many other contributors who will be able to point you to the right package / source file, if you ask for help.

The most important, in my view, is that you enjoy the process. That will make everything easy for you.

As others already said, you should read https://golang.org/doc/contribute.html to see how to start. It is also good idea to start with a small change - this will allow you to concentrate on the process of submission. So maybe find misspelled word or bad grammar, and send small change. Go tree is currently closed, until some time in August - https://github.com/golang/go/wiki/Go-Release-Cycle but maybe your change will be allowed to be submitted. After that, just pick an issue from http://golang.org/issues that interests you, and try fix it. Feel free to discuss your approach on the issue before you start. Ask for help there, if you need help.

Good luck.

Alex

Michel Levieux

unread,
Jun 24, 2019, 7:29:05 AM6/24/19
to golang-nuts
Hi everyone,

Thank you all for all your precious pieces of advice. I think I'm slowly going to have a look at the different possibilities to contribute to the Go language.
As some of you noticed, I'm kind of more motivated when I think about helping in the go codebase than other sorts of tasks (though I don't think they're less valuable of course!)

Maybe I'm just going to create an account for contributing and see how it goes after that.

Again, thank you everyone for your feedback and time. This is really appreciated! :D

--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages