I just pushed a revamped Go build system with commit e3900a4d64e4bf6f426809d6bff058e5a2ae9bc8. The main change is that instead of putting the list of Go-language dependencies store paths in the GOPATH environment variable, these store paths are union-symlinked into the build directory, and GOPATH points there. This fixes the issue of spurious store references and should dramatically reduce the closure size of certain Go packages. So now there is less reason to use bundled libraries for Go programs. I think we should consider another change in how we build Go software: let's stop splitting up Go libraries instead sub-packages. For example, the packages 'go-golang-org-x-net-ipv4' and 'go-golang-org-x-net-ipv6' are both from the same Git repo at . We should just package 'go-golang-org-x-net'. It's unidiomatic to split them up. In practice, a Go programmer would have cloned the Git repo into their Go workspace, and would never have a "split view" of the x/net libraries. Thoughts? I can work on this in the next week.