_content/doc: add a page explaining 'go get' deprecation
'go get' will link here when the arguments refer to main packages and
the -d flag is not enabled.
Trust: Jay Conrod <email@example.com>
Run-TryBot: Jay Conrod <firstname.lastname@example.org>
TryBot-Result: Go Bot <email@example.com>
Reviewed-by: Michael Matloob <firstname.lastname@example.org>
diff --git a/_content/doc/go-get-install-deprecation.md b/_content/doc/go-get-install-deprecation.md
new file mode 100644
@@ -0,0 +1,64 @@
+ "Title": "Deprecation of 'go get' for installing executables",
+ "Path": "/doc/go-get-install-deprecation"
+Starting in Go 1.17, installing executables with `go get` is deprecated.
+`go install` may be used instead.
+In a future Go release, `go get` will no longer build packages; it will only
+be used to add, update, or remove dependencies in `go.mod`. Specifically,
+`go get` will act as if the `-d` flag were enabled.
+## What to use instead
+To install an executable in the context of the current module, use `go install`,
+without a version suffix, as below. This applies version requirements and
+other directives from the `go.mod` file in the current directory or a parent
+go install example.com/cmd
+To install an executable while ignoring the current module, use `go install`
+*with* a [version suffix](/ref/mod#version-queries) like `@v1.2.3` or `@latest`,
+as below. When used with a version suffix, `go install` does not read or update
+the `go.mod` file in the current directory or a parent directory.
+# Install a specific version.
+go install email@example.com
+# Install the highest available version.
+go install example.com/cmd@latest
+In order to avoid ambiguity, when `go install` is used with a version suffix,
+all arguments must refer to `main` packages in the same module at the same
+version. If that module has a `go.mod` file, it must not contain directives like
+`replace` or `exclude` that would cause it to be interpreted differently if it
+were the main module.
+See [`go install`](#/ref/mod#go-install) for details.
+## Why this is happening
+Since modules were introduced, the `go get` command has been used both to update
+dependencies in `go.mod` and to install commands. This combination is frequently
+confusing and inconvenient: in most cases, developers want to update a
+dependency or install a command but not both at the same time.
+Since Go 1.16, `go install` can install a command at a version specified on the
+command line while ignoring the `go.mod` file in the current directory (if one
+exists). `go install` should now be used to install commands in most cases.
+`go get`'s ability to build and install commands is now deprecated, since that
+functionality is redundant with `go install`. Removing this functionality
+will make `go get` faster, since it won't compile or link packages by default.
+`go get` also won't report an error when updating a package that can't be built
+for the current platform.
+See proposal [#40276](https://golang.org/issue/40276) for the full discussion.