As a go lover who programs in it daily... That section was fantastic, and I agree (almost) wholeheartedly.
And the select code [0] is kind of horrifying.
I am going to disagree with this, though:
> Go's native package system does not support specifying versions or commits in the dependency information. Instead, the go community recommends that each major release have its own separate repository; github.com/user/package/package-{v1,v2,v3}.
As far as I'm aware, you don't create a new repo for a new major version - just a new branch, or a subdirectory. This comment [1] from Russ Cox describes it pretty well IMO. (Though it appears that the page hasn't been updated since 2017, and Go Modules is more recent than that)
And the select code [0] is kind of horrifying.
I am going to disagree with this, though:
> Go's native package system does not support specifying versions or commits in the dependency information. Instead, the go community recommends that each major release have its own separate repository; github.com/user/package/package-{v1,v2,v3}.
As far as I'm aware, you don't create a new repo for a new major version - just a new branch, or a subdirectory. This comment [1] from Russ Cox describes it pretty well IMO. (Though it appears that the page hasn't been updated since 2017, and Go Modules is more recent than that)
0: https://github.com/golang/go/blob/master/src/runtime/select....
1: http://disq.us/p/1qcpqao