Go 1.8 development stats

Go 1.8 is going to to launched in February 2017. There is a sizable list of new features and improvements on the release notes. While these notes is the best summary to see what has happened in the last 6 months, I will try to give you some stats to give you a sense of the size of the work. I have examined all the changes merged into the tree during the Go 1.8 window and will highlight some of the interesting and significant ones.

There has been 2049 commits I have examined to gather these results. c/35111 is the last commit I have included in the data set.

Contributors

There have been 201 contributors involved during the development of 1.8 👏👏👏

But, more than 55% of the commits came from the top 10 contributors.

| Author | Changes | |----------------------|---------| | Brad Fitzpatrick | 225 | | Russ Cox | 140 | | Josh Bleecher Snyder | 137 | | Robert Griesemer | 129 | | Ian Lance Taylor | 117 | | Austin Clements | 111 | | Matthew Dempsky | 94 | | David Crawshaw | 69 | | Keith Randall | 65 | | Cherry Zhang | 55 |

There is only one non-Googler in the top 10, Josh Bleecher Snyder.

Reviews

Go has a reputation of having comprehensive and thoughtful code reviews. Each change list needs at least one reviewer, for controversial topics the number grows easily. The average number of reviewers for each change was 3.41 people during this cycle.

1160 changes got a LGTM without anyone requiring to leave any comment, most of these changes are coming from already tenured contributors.

There also have been noisier changes. Top three of them with most reviewers are:

c/16551: Addition of os.Executable

c/29397: Far jumps are handled on ARM, big ARM binaries are fine now.

c/32019: Implementation of the default GOPATH

The average number of comments left on a change is 3.51.

Half of the changes took 8 hours or less to submit from its creation. Of course, there been some long standing changes that have waited for long (even for a year) and finally made their way to this release but the review stage has been quite productive in most cases.

Size

The size of a change is the sum of lines added and lines deleted. Average size for a change during 1.8 development was 190.73 lines. If you look at the distribution though, half of the changes are smaller than 25 lines.

The biggest changes

Most sizeable changes are often going to the compiler. Here are the top 3 biggest changes in 1.8:

c/29168: Deletion of the old compiler backend

c/28978: SSA backend for s390x

c/31478: SSA backend for mips

Minor fixes

How many times you have spotted a problem but ignored it because you were ashamed of opening a single line commit? There are 390 changes that are under 5 lines in 1.8. There is no such thing called little contribution in Go, almost 20% of the changes were teeny-tiny.