{"id":2252,"date":"2016-03-25T16:21:28","date_gmt":"2016-03-25T05:21:28","guid":{"rendered":"https:\/\/proxy.goincop1.workers.dev:443\/http\/dave.cheney.net\/?p=2252"},"modified":"2016-03-26T15:55:59","modified_gmt":"2016-03-26T04:55:59","slug":"go-project-contributors-by-the-numbers","status":"publish","type":"post","link":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/2016\/03\/25\/go-project-contributors-by-the-numbers","title":{"rendered":"Go project contributors by the numbers"},"content":{"rendered":"<p>In\u00a0December 2014\u00a0the Go project moved from Google Code to GitHub.\u00a0Along with the move to GitHub, the Go project moved from Mercurial to Git, which necessitated a move away from Rietveld to Gerrit for code review.<\/p>\n<p>A healthy open source project lives and dies by its contributors. People come and people go as time, circumstance, their jobs, and their interests change.\u00a0I wanted to investigate if these\u00a0moves were a net positive for the project.<\/p>\n<h2>Go project contributors<\/h2>\n<p>As of writing 744 people have contributed to the Go project. This number is slightly lower than <a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/www.openhub.net\/p\/go\">OpenHub<\/a>&#8216;s count, which also includes the golang.org\/x sub-repositories that this analysis ignores. The number is slightly higher than <a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/github.com\/golang\/go\/graphs\/contributors\">GitHub<\/a>&#8216;s count for reasons which are unclear.<\/p>\n<div id=\"attachment_2266\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/proxy.goincop1.workers.dev:443\/http\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/Go-project-contributors-3.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2266\" class=\"wp-image-2266 size-large\" src=\"https:\/\/proxy.goincop1.workers.dev:443\/http\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/Go-project-contributors-3-1024x499.png\" alt=\"Go project contributors (click to enlarge)\" width=\"625\" height=\"305\" srcset=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/Go-project-contributors-3-1024x499.png 1024w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/Go-project-contributors-3-300x146.png 300w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/Go-project-contributors-3-768x374.png 768w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/Go-project-contributors-3-624x304.png 624w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/Go-project-contributors-3.png 1620w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><p id=\"caption-attachment-2266\" class=\"wp-caption-text\">Go project contributors (click to enlarge)<\/p><\/div>\n<p>This graph shows contributors over time. As a new contributor lands their first commit, a line representing the current count of contributors is placed on the graph.\u00a0The graph also records the number of contributors whose email addresses end in <code>golang.org<\/code>\u00a0or\u00a0<code>google.com<\/code>\u00a0as a proxy for the Go team and Google employees respectively.<\/p>\n<p>Did the move to Git, Gerrit, and GitHub increase the number of contributors, and thereby contributions? Almost certainly. The graph shows a clear up-tick in the number of new contributors to the project from January 2015 onwards. However with so many factors in play it is not possible to identify a single\u00a0cause.<\/p>\n<p>It should also be noted that even prior to the move, the project has always attracted a healthy stream of new contributors.<\/p>\n<h2>Runtime contributors<\/h2>\n<div id=\"attachment_2270\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/proxy.goincop1.workers.dev:443\/http\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-4.png\" rel=\"attachment wp-att-2270\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2270\" class=\"wp-image-2270 size-large\" src=\"https:\/\/proxy.goincop1.workers.dev:443\/http\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-4-1024x499.png\" alt=\"Runtime contributors (click to enlarge)\" width=\"625\" height=\"305\" srcset=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-4-1024x499.png 1024w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-4-300x146.png 300w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-4-768x374.png 768w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-4-624x304.png 624w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-4.png 1620w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><p id=\"caption-attachment-2270\" class=\"wp-caption-text\">Runtime contributors (click to enlarge)<\/p><\/div>\n<p>From June 2014 to December 2014, the Go runtime was rewritten (with the help of some automated tools) from C to Go. This graph records the number of contributors to the parts of the standard library considered the runtime. This has changed over time as paths have been renamed, but is currently what we think of as the tree rooted at <code>$GOROOT\/src\/runtime<\/code>.<\/p>\n<p>Did the rewrite of the runtime from a dialect of C that was compiled with the project&#8217;s own C compiler to Go increase the number of individual contributors willing to work on the runtime? Unfortunately not, although the number of Googlers contributing to the the runtime did increase slightly. \u00a0An increase in individual runtime contributions did not occur till the following January once\u00a0the move to GitHub was complete.<\/p>\n<h2>Compiler contributors<\/h2>\n<div id=\"attachment_2269\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/proxy.goincop1.workers.dev:443\/http\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-3.png\" rel=\"attachment wp-att-2269\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2269\" class=\"wp-image-2269 size-large\" src=\"https:\/\/proxy.goincop1.workers.dev:443\/http\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-3-1024x499.png\" alt=\"Compiler contributors (click to enlarge)\" width=\"625\" height=\"305\" srcset=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-3-1024x499.png 1024w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-3-300x146.png 300w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-3-768x374.png 768w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-3-624x304.png 624w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2016\/03\/newplot-3.png 1620w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><p id=\"caption-attachment-2269\" class=\"wp-caption-text\">Compiler contributors (click to enlarge)<\/p><\/div>\n<p>After the move to GitHub, the Go compiler was translated from C to Go for the Go 1.5 release. This process was completed by May 2015. Did this have an impact on the number of new contributors specifically targeting the compiler? Possibly, there was a short lived\u00a0spurt of new contributions around July 2015. The reason for this could be attributed to the strong message from the Go team that the 1.5 release was focusing on the runtime, specifically the garbage collector, and that the current compiler was to be replaced with the SSA back end being developed for the 1.6 time frame (since delayed til 1.7).<\/p>\n<p>This latter point is supported by the clear spike in contributors after February 2016, when the 1.7 tree opened for development with\u00a0the SSA back end attracting a number of talented new contributors.<\/p>\n<h2>An open source project<\/h2>\n<p>At the moment there is no question that the largest contributors by total commits to Go are the Go team themselves. This stands to reason as they are sponsored by Google itself to develop the language. However, out of the current top 16 contributors to the project, the number 7th, 9th, 11th, 14th, and 16th contributors are neither members of the Go team or employed by Google.<\/p>\n<p>The charge is commonly levelled at Google that Go is not an open source project. This analysis shows that\u00a0claim to be false. The number of contributors from the Go team, or Google, continues to be a dwindling fraction of the total number of contributors to the project.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In\u00a0December 2014\u00a0the Go project moved from Google Code to GitHub.\u00a0Along with the move to GitHub, the Go project moved from Mercurial to Git, which necessitated a move away from Rietveld to Gerrit for code review. A healthy open source project lives and dies by its contributors. People come and people go as time, circumstance, their [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[29],"tags":[208,207],"class_list":["post-2252","post","type-post","status-publish","format-standard","hentry","category-golang","tag-contributing","tag-open-source"],"_links":{"self":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts\/2252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/comments?post=2252"}],"version-history":[{"count":30,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts\/2252\/revisions"}],"predecessor-version":[{"id":2287,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts\/2252\/revisions\/2287"}],"wp:attachment":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/media?parent=2252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/categories?post=2252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/tags?post=2252"}],"curies":[{"name":"wp","href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/api.w.org\/{rel}","templated":true}]}}