Guidance for new contributors for Go?

xuanbao · · 498 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
<p>I love Go and have been using it since quite some time now, I&#39;d like to contribute to the language, anything which fits my level of expertise with the language. </p> <p>Is there any mentorship kind of thing in the Go community for new contributors? I reached out to one, he told me to refer the contributions page and the issue list, but frankly speaking as a newbie to contributing to such a large project, it is not that straight forward as to what the experts feel! </p> <p>For me, the barrier to entry is <em>huge</em>.</p> <p>What should my approach be? directly commenting on the issue I am working for?</p> <p>Of late I am feeling that big projects aren&#39;t really that user friendly when it comes to newbies</p> <hr/>**评论:**<br/><br/>mwholt: <pre><p>Commenting on an issue is always a fine start, especially as solutions to issues aren&#39;t always obvious. First a reasonable solution should be decided, and once it is, you can submit a CL for it. (Go doesn&#39;t use pull requests.)</p> <p>You can follow the contribution guidelines here for an introduction to the code review process: <a href="https://golang.org/doc/contribute.html" rel="nofollow">https://golang.org/doc/contribute.html</a></p> <p>Go is a busy project, and arguably understaffed, so they&#39;ll appreciate the contributions, but make sure to read up how it works and be familiar with git as well as Go.</p></pre>thewhitetulip: <pre><p>Doesn&#39;t seem like it! When adg (Andrew) is stating that </p> <blockquote> <p>In general, though, the best way to help Go is to improve the greater Go ecosystem by writing libraries, tools, articles, and so on.</p> </blockquote></pre>abcded1234234: <pre><p>I cannot speak for adg but my understanding of this comment is that contributing to the the greater Go ecosystem will have bigger impact on improving Go than contributing to the Go language and its standard library.</p></pre>thewhitetulip: <pre><p>No, the thing is when people are asking how to contribute to the <em>language</em> then telling that write articles and tutorials is not that great advice</p></pre>abcded1234234: <pre><p>This wasn&#39;t his only advice:</p> <blockquote> <p>The HelpWanted label lists a bunch of issues that we need help with. Some of them are relatively straightforward and some are hard.</p> <p>New issues are filed all the time and help with triaging and verifying those issues (getting more info from the reporter, etc) is always welcome.</p> </blockquote></pre>thewhitetulip: <pre><p>Well, the poster highlighted only this part, so I didn&#39;t go through the link. I&#39;d rather comment on issues and try to contribute.</p></pre>broady: <pre><p>This thread may be enlightening: <a href="https://www.reddit.com/r/golang/comments/46bd5h/ama_we_are_the_go_contributors_ask_us_anything/d03rstm" rel="nofollow">https://www.reddit.com/r/golang/comments/46bd5h/ama_we_are_the_go_contributors_ask_us_anything/d03rstm</a></p> <p>adg says:</p> <blockquote> <p>In general, though, the best way to help Go is to improve the greater Go ecosystem by writing libraries, tools, articles, and so on.</p> </blockquote></pre>headzoo: <pre><blockquote> <p>articles</p> </blockquote> <p>Especially this, and just about anyone with any skillset can do it with a free Medium or WordPress account. Go is still a long way off from being uber-googlable like some older languages. We need more articles and tutorials, and not just for the core of the language. A lot of high profile Go libs/apps/frameworks are really light on tutorials and guides.</p></pre>thewhitetulip: <pre><p>Hey broady,</p> <p>I am doing that, <a href="http://github.com/thewhitetulip/web-dev-golang-anti-textbook" rel="nofollow">http://github.com/thewhitetulip/web-dev-golang-anti-textbook</a></p> <p>Writing a book to teach web dev using Go.</p> <p>But you are probably mistaking my point, I want to contribute to the <em>language</em>, I am already doing all I can to advance the language, learning material, it&#39;ll take a few months until my book is ready and I am taking a <em>lot</em> of efforts to teach web dev in easiest language with practical examples.</p> <p>Also it sounds a little bit condescending and insulting to get this statement from a Go contributor, it is as if you don&#39;t want people outside of Google to contribute to the language.</p> <p>If it is an open source project then you should I was under the impression that you&#39;d be welcome for a new contributor to join in to help you out to advance the <em>language</em> and not <em>content</em> surrounding the language.</p> <p>I might have taken your comment in an incorrect light altogether, apologies should that have happened!</p> <p>I really want to contribute to the <em>language</em> since I am already writing a short simple intro book so I guess I have done all in my power to advance the content and frankly I am not that advance a Go programmer to develop libraries, I&#39;ll do that some day eventually.</p> <p>Also the funny thing, when I posted about my book on the official go nuts channel I got feedback that the language is Go and not Golang so don&#39;t call the book as webapps in Golang an anti text book :D I stopped using the google group after that since reddit gave me some real good feedback as to the <em>content</em>, even this factor makes me feel as if Go isn&#39;t a project which is that newbie (as per the language and not programming in general) friendly</p></pre>nyoungman: <pre><p>Thanks thewhitetulip. You&#39;re right that it&#39;s hard to know where to start, but I&#39;m glad you still want to help.</p> <p>That thread does mention the <a href="https://github.com/golang/go/issues?utf8=%E2%9C%93&amp;q=is%3Aissue+is%3Aopen+label%3Ahelpwanted" rel="nofollow">HelpWanted label</a> as a place to get started. I also mentioned <a href="http://www.codetriage.com/golang/go" rel="nofollow">CodeTriage</a> to get a random issue each day to look into.</p> <p>Helping to triage issues by reproducing them or submitting fixes is great. The HelpWanted are intended to be good ones for new contributors to start with. There is a bit of a learning curve to using Gerrit and the code review tool, though it is <a href="https://golang.org/doc/contribute.html" rel="nofollow">pretty well documented</a>. If you pick off something small, you can become confident in the workflow, before taking on bigger changes.</p> <p>I should note that I&#39;m not part of the Go team, and have relatively few contributions so far. When I ran into a bug or a usability issue, I&#39;d create an issue and then try to resolve it myself. That usually worked out well.</p></pre>thewhitetulip: <pre><blockquote> <p>triage issues by reproducing them or submitting fixes is great</p> </blockquote> <p>Yep, I&#39;ll start ASAP and keep in touch with you all the while :)</p></pre>gohacker: <pre><p>You can&#39;t (may not) contribute to Go without having a Google account. That&#39;s about it.</p></pre>mdmd136: <pre><p>To clarify this point, you need a google (e.g. gmail) login in order to submit a change. You do not need to be a Google employee.</p> <p><a href="https://go-review.googlesource.com/#/q/status:open" rel="nofollow">https://go-review.googlesource.com/#/q/status:open</a></p></pre>thewhitetulip: <pre><p>Well, I was looking for something more concrete rather than just a link :-)</p> <p>When I was going to do a contribution to spyder, I talked with the devs and came up with a PR which isn&#39;t still merged, after six months.</p> <p>That was my first PR ever to any open source project, and it is disheartening when such things happens, anyways I&#39;ll start commenting on issues and see the gerrit link</p></pre>DongerDave: <pre><blockquote> <p>I&#39;d like to contribute to the language</p> </blockquote> <p>Don&#39;t. Go is one of the worst projects to work on from the outside. &#34;But wait, what do you mean &#39;from the outside&#39;? Go is open source<sup>TM&#34;...</sup> Well, yes it&#39;s open source, but practically all of the contributors are Googlers, it doesn&#39;t use typical open source tools (preferring to use google tools). That&#39;s not to say it&#39;s impossible to contribute as an outsider, but it&#39;s leaps and bounds harder. If you already don&#39;t have connections or large amounts of experience, it&#39;s a terrible place to go.</p> <p>In addition, it sounds like you don&#39;t really have a good reason to contribute. You aren&#39;t saying &#34;I have experience with GC and know how to improve the GC in this way&#34; or such, it sounds like you just want to contribute from some altruistic &#34;I want to help&#34; attitude. That attitude is great in most projects and communities, but Go is one of those where you&#39;ll just get in the way of Googlers, thus wasting their time and slowing them down, as well as not being able to have a great impact due to inexperience. Pretty much go anywhere else and you&#39;ll be able to do good and learn. Work on go libraries that aren&#39;t maintained by the core team, or work on another language&#39;s compiler/runtime, and you&#39;ll be in a better place. If you do the latter, you might be able to come back and overcome the massive disadvantage of not being a googler and actually help Go.</p> <p>Good luck.</p></pre>daveddev: <pre><p>I&#39;m curious about the veracity of this post. Would some experienced contributors please comment? Also, please acknowledge any biases. Thanks!</p></pre>Faffenheim: <pre><p>Here&#39;s some data (I won&#39;t comment on it).</p> <p>There are 1733 commits between the &#34;go1.5&#34; and the &#34;go1.6&#34; git tags</p> <pre><code>$ git log go1.5..go1.6 --oneline | wc 1733 14027 105855 </code></pre> <p>made by 154 authors </p> <pre><code>$ git log go1.5..go1.6 | grep &#34;Author:&#34; | sort | uniq | wc 154 618 6939 </code></pre> <p>(actually a little fewer, there are a few duplicates). How many of them are googlers? I don&#39;t know, but we can try to filter for people submitting with a @google.com or @golang.org mail address. </p> <pre><code>$ git log go1.5..go1.6 | grep &#34;Author:&#34; | sort | uniq | grep &#34;@google\|@golang&#34; | wc 37 150 1546 </code></pre> <p>It&#39;s actually 35 (Dmitry Vyukov is in the list twice and we got a &#34;@googlemail.com&#34; false positive).</p> <p>Here&#39;s the list:</p> <pre><code>Author: Aaron Jacobs &lt;jacobsa@google.com&gt; Author: Adam Langley &lt;agl@golang.org&gt; Author: Alan Donovan &lt;adonovan@google.com&gt; Author: Andrew Gerrand &lt;adg@golang.org&gt; Author: Austin Clements &lt;austin@google.com&gt; Author: Benjamin Prosnitz &lt;bprosnitz@google.com&gt; Author: Brad Fitzpatrick &lt;bradfitz@golang.org&gt; Author: Brian Gitonga Marete &lt;bgm@google.com&gt; Author: Burcu Dogan &lt;jbd@google.com&gt; Author: Charles Weill &lt;weill@google.com&gt; Author: Chris Broadfoot &lt;cbro@golang.org&gt; Author: David Benjamin &lt;davidben@google.com&gt; Author: David Chase &lt;drchase@google.com&gt; Author: David Crawshaw &lt;crawshaw@golang.org&gt; Author: David Symonds &lt;dsymonds@golang.org&gt; Author: Dmitry Vyukov &lt;dvyukov@google.com&gt; Author: dvyukov &lt;dvyukov@google.com&gt; Author: Ian Lance Taylor &lt;iant@golang.org&gt; Author: Ingo Oeser &lt;nightlyone@googlemail.com&gt; Author: Joel Sing &lt;jsing@google.com&gt; Author: Keith Randall &lt;khr@golang.org&gt; Author: Marcel van Lohuizen &lt;mpvl@golang.org&gt; Author: Matthew Dempsky &lt;mdempsky@google.com&gt; Author: Michael Matloob &lt;matloob@golang.org&gt; Author: Michael McGreevy &lt;mcgreevy@golang.org&gt; Author: Nigel Tao &lt;nigeltao@golang.org&gt; Author: Nodir Turakulov &lt;nodir@google.com&gt; Author: Paul Marks &lt;pmarks@google.com&gt; Author: Paul Wankadia &lt;junyer@google.com&gt; Author: Raul Silvera &lt;rsilvera@google.com&gt; Author: Rick Hudson &lt;rlh@golang.org&gt; Author: Robert Griesemer &lt;gri@golang.org&gt; Author: Rob Pike &lt;r@golang.org&gt; Author: Russ Cox &lt;rsc@golang.org&gt; Author: Ryan Brown &lt;ribrdb@google.com&gt; Author: Sameer Ajmani &lt;sameer@golang.org&gt; Author: Shenghou Ma &lt;minux@golang.org&gt; </code></pre> <p>This leave us with 117 (again, ignoring a few duplicates) authors that <strong>probably</strong> are not google programmers, just for the <em>6 months long</em> go1.6 development cycle. </p></pre>abcded1234234: <pre><p>This post doesn&#39;t match my experience. It is obvious that for the project like Go the quality of your contribution must be high, but all contributions are certainly welcome.</p></pre>thewhitetulip: <pre><p>The thing is yes, as of now I may not be an uber go programmer, but eventually when I start contributing small bits and pieces, I read and see the dev process then surely I will become an Uber programmer and contribute to the language.</p></pre>abcded1234234: <pre><p>I suggest to browse through the archives of golang-codereviews Google Group. You can learn a lot about the development process and Go internals just by reading some of the code reviews.</p></pre>thewhitetulip: <pre><p>Yes, I&#39;ll start it now as soon as I have sometime to spare</p></pre>

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

498 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传