# Go.dev: a new hub for Go developers
13 Nov 2019
Summary: Over the last two years, as we’ve spoken with users at companies of all sizes, we’ve heard three questions repeatedly: who else is using Go, what do they use it for, and how can I find useful Go packages?

Steve Francia and Julie Qiu
julieqiu@golang.org

##

Over the last two years,
as we’ve spoken with users at companies of all sizes,
we’ve heard three questions repeatedly:
who else is using Go,
what do they use it for,
and how can I find useful Go packages?

Today we are launching [go.dev](https://go.dev), a new hub for Go developers,
to help answer those questions.
There you will find a wealth of learning resources to get started with the language,
featured use cases, and case studies of companies using Go.

.image go.dev/home.png _ 850

(Note that [golang.org](https://golang.org/) is still the home for the
open source Go project and the Go distribution.
Go.dev is a companion site to provide these supporting resources.)

Clicking on Explore brings you to [pkg.go.dev](https://pkg.go.dev/),
a central source of information about Go packages and modules.
Like [godoc.org](https://godoc.org/), pkg.go.dev serves Go documentation.
However, it also understands modules and has information
about all versions of a package, including
[all releases of the standard library](https://pkg.go.dev/std?tab=versions)!
And it detects and displays licenses and has a better search algorithm.
You can follow
[Go issue 33654](https://golang.org/issue/33654) for future developments.

.image go.dev/http.png _ 850

Today’s launch is our minimum viable product for go.dev,
so we can share what we’ve built to help the community and get feedback.
We intend to expand the site over time.
If you have any ideas, suggestions or issues,
please let us know via the “Share Feedback” and “Report an Issue” links at the bottom of every page.
Or you can send your bugs, ideas, feature requests, and questions to
[go-discovery-feedback@google.com](mailto:go-discovery-feedback@google.com).
