Description
What version of Go are you using (go version
)?
$ go version go version go1.21.1 darwin/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GO111MODULE='' GOARCH='amd64' GOBIN='' GOCACHE='/Users/jnj/Library/Caches/go-build' GOENV='/Users/jnj/Library/Application Support/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='darwin' GOINSECURE='' GOMODCACHE='/Users/jnj/pkg/mod' GOOS='darwin' GOPATH='/Users/jnj' GOPRIVATE='github.com/segmentio' GOPROXY='https://proxy.golang.org,direct' GOROOT='/Users/jnj/src/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/Users/jnj/src/go/pkg/tool/darwin_amd64' GOVCS='' GOVERSION='go1.21.1' GCCGO='gccgo' GOAMD64='v1' AR='ar' CC='clang' CXX='clang++' CGO_ENABLED='1' GOMOD='/Users/jnj/src/go/src/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/Users/jnj/tmp/go-build1463137461=/tmp/go-build -gno-record-gcc-switches -fno-common'
What did you do?
I tried to download the source for the golang.org/x/image module.
Following the instructions in the README:
Download/Install
The easiest way to install is to run go get -u golang.org/x/image/.... You can also manually git clone the repository to $GOPATH/src/golang.org/x/image.
$ go get -u golang.org/x/image/...
go: go.mod file not found in current directory or any parent directory.
'go get' is no longer supported outside a module.
To build and install a command, use 'go install' with a version,
like 'go install example.com/cmd@latest'
For more information, see https://golang.org/doc/go-get-install-deprecation
or run 'go help get' or 'go help install'.
Neither the README, nor the git hosting website that golang.org/x/image redirects to provide a cloneable URL. If one tries to guess using the website URL:
$ git clone https://cs.opensource.google/go/x/image
Cloning into 'image'...
fatal: https://cs.opensource.google/go/x/image/info/refs not valid: is this a git repository?
Note that while I use x/image
as an example, the majority of these modules provide non-working instructions for retrieving the source code.
This lack of a canonical way to download source code has apparently been an issue since module-aware go get
was introduced, with tracking issues coming and going with no new solution provided other than "use the typical VCS clone command". Which is OK (though a worse experience), but seemingly the Go ecosystem never adapted by providing alternate instructions. This is not typically an issue on git hosts like github, where the clone URL is prominent, but I searched for a few minutes and found no mention of a repository clone URL for any of the golang.org/x modules.
What did you expect to see?
Ideally, a useable go
command which downloads the source code, as we were all accustomed to in the pre-module days. Otherwise, simple (working) instructions for cloning these repositories, or at minimum a visible URL which can be used with git clone
.
What did you see instead?
The errors shown above.