Next steps for pkg.go.dev
31 Jan 2020

Julie Qiu
julie@golang.org

* Introduction

In 2019, we launched [[https://go.dev][go.dev]], a new hub for Go
developers.

As part of the site, we also launched [[https://pkg.go.dev][pkg.go.dev]], a
central source of information about Go packages and modules. Like
[[https://godoc.org][godoc.org]], pkg.go.dev serves Go
documentation. However, it also understands modules and has information about
past versions of a package!

Throughout this year, we will be adding features to
[[https://pkg.go.dev][pkg.go.dev]] to help our users better understand their
dependencies and help them make better decisions around what libraries to
import.

* Redirecting godoc.org requests to pkg.go.dev

To minimize confusion about which site to use, later this year we are planning
to redirect traffic from [[https://godoc.org][godoc.org]] to the corresponding
page on [[https://pkg.go.dev][pkg.go.dev]]. We need your help to ensure that
pkg.go.dev addresses all of our users' needs. We encourage everyone to begin
using pkg.go.dev today for all of their needs and provide feedback.

Your feedback will inform our transition plan, with the goal of making
[[https://pkg.go.dev][pkg.go.dev]] our primary source of information and
documentation for packages and modules. We’re sure there are things that you
want to see on pkg.go.dev, and we want to hear from you
about what those features are!

You can share your feedback with us on these channels:

- Post on the [[https://golang.org/s/discovery-feedback][Go issue tracker]].
- Email [[mailto:go-discovery-feedback@google.com][go-discovery-feedback@google.com]].
- Click “Share Feedback” or “Report an Issue” in the go.dev footer.

As part of this transition, we will also be discussing plans for API access to
[[https://pkg.go.dev][pkg.go.dev]]. We will be posting updates on
[[https://golang.org/s/discovery-updates][Go issue 33654]].

* Frequently asked questions

Since our launch in November, we’ve received tons of great feedback about
[[https://pkg.go.dev][pkg.go.dev]] from Go users. For the remainder of this post, we thought it would
be helpful to answer some frequently asked questions.

** My package doesn’t show up on pkg.go.dev! How do I add it?

We monitor the [[https://index.golang.org/index][Go Module Index]] regularly for
new packages to add to [[https://pkg.go.dev][pkg.go.dev]]. If you don’t see a
package on pkg.go.dev, you can add it by fetching the module version from
[[https://proxy.golang.org][proxy.golang.org]]. See
[[https://go.dev/about][go.dev/about]] for instructions.

** My package has license restrictions. What’s wrong with it?

We understand it can be a frustrating experience to not be able to see the
package you want in its entirety on [[https://pkg.go.dev][pkg.go.dev]]. We
appreciate your patience as we improve our license detection algorithm.

Since our launch in November, we've made the following improvements:

- Updated our [[https://pkg.go.dev/license-policy][license policy]] to include the list of licenses that we detect and recognize
- Worked with the [[https://github.com/google/licensecheck][licensecheck]] team to improve detection for copyright notices
- Established a manual review process for special cases

As always, our license policy is at
[[https://pkg.go.dev/license-policy][pkg.go.dev/license-policy]]. If you are
having issues, feel free to [[https://golang.org/x/discovery-feedback][file an issue on the Go issue tracker]], or email
[[mailto:go-discovery-feedback@google.com][go-discovery-feedback@google.com]]
so that we can work with you directly!

** Will pkg.go.dev be open-sourced so I can run it at work for my private code?

We understand that corporations with private code want to run a documentation
server that provides module support. We want to help meet that need, but we
feel we don’t yet understand it as well as we need to.

We’ve heard from users that running the [[https://godoc.org][godoc.org]] server
is more complex than it should be, because it is designed for serving at public
internet scale instead of just within a company. We believe the current
[[https://pkg.go.dev][pkg.go.dev]] server would have the same problem.

We think a new server is more likely to be the right answer for use with
private code, instead of exposing every company to the complexity of running
the internet-scale [[https://pkg.go.dev][pkg.go.dev]] codebase. In addition to
serving documentation, a new server could also serve information to
[[https://pkg.go.dev/golang.org/x/tools/cmd/goimports?tab=doc][goimports]] and
[[https://pkg.go.dev/golang.org/x/tools/gopls][gopls]].

If you want to run such a server, please fill out this
[[https://google.qualtrics.com/jfe/form/SV_6FHmaLveae6d8Bn][*3-5*minute*survey*]]
to help us better understand your needs. This survey will be available until
March 1st, 2020.

We’re excited about the future of [[https://pkg.go.dev][pkg.go.dev]] in 2020,
and we hope you are too! We look forward to hearing your feedback and working
with the Go community on this transition.
