content: add pkgsite-redesign and 11years Change-Id: Ie52efa37e956c7503aa8f8a6ac170bb1347ebf8b Reviewed-on: https://go-review.googlesource.com/c/blog/+/268841 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/content/11years.article b/content/11years.article new file mode 100644 index 0000000..97943f7 --- /dev/null +++ b/content/11years.article
@@ -0,0 +1,232 @@ +# Eleven Years of Go +12:01 10 Nov 2020 + +Russ Cox, for the Go team + +## + +Today we celebrate the eleventh birthday of the Go open source release. +The parties we had for +[Go turning 10](https://blog.golang.org/10years) +seem like a distant memory. +It’s been a tough year, but +we’ve kept Go development moving forward +and accumulated quite a few highlights. + +In November, we launched [go.dev and pkg.go.dev](https://blog.golang.org/go.dev) +shortly after Go’s 10th birthday. + +In February, the [Go 1.14 release](https://blog.golang.org/go1.14) +delivered the first officially “production-ready” implementation of Go modules, +along with many performance improvements, +including +[faster defers](https://golang.org/design/34481-opencoded-defers) +and +[non-cooperative goroutine preemption](https://golang.org/design/24543/conservative-inner-frame) +to reduce scheduling +and garbage collection latency. + +In early March, we launched a +[new API for protocol buffers](https://blog.golang.org/protobuf-apiv2), +[google.golang.org/protobuf](https://pkg.go.dev/google.golang.org/protobuf), +with much-improved support for protocol buffer reflection and custom messages. + +<img src="11years/gophermask.jpg" height="450" width="300" align="right" style="border: 2px solid black; margin: 0 0 1em 1em;"> + +When the pandemic hit, we decided to pause any public announcements +or launches in the spring, +recognizing that everyone’s attention rightly belonged elsewhere. +But we kept working, and one of our team members joined the +Apple/Google collaboration on +[privacy-preserving exposure notifications](https://www.google.com/covid19/exposurenotifications/) +to support contact tracing efforts all over the world. +In May, that group launched the +[reference backend server](https://github.com/google/exposure-notifications-server), +written in Go. + +We continued to improve [gopls](https://www.youtube.com/watch?v=EFJfdWzBHwE), +which enables advanced +[Go-aware support](https://github.com/golang/tools/blob/master/gopls/doc/user.md) +in many editors. +In June, the +[VSCode Go extension officially joined the Go project](https://blog.golang.org/vscode-go) +and is now maintained by the same developers who work on gopls. + +Also in June, thanks to your feedback, we open-sourced +[the code behind pkg.go.dev](https://blog.golang.org/pkgsite) +as part of the Go project as well. + +Later in June, we +[released the latest design draft for generics](https://blog.golang.org/generics-next-step), +along with a prototype tool and [generics playground](https://go2goplay.golang.org/). + +In July, we published and discussed three new design drafts for future changes: +[new `//go:build` lines for file selection](https://golang.org/design/draft-gobuild), +[file system interfaces](https://golang.org/design/draft-iofs), +and +[build-time file embedding](https://golang.org/design/draft-embed). +(We’ll see all of those in 2021, as noted below.) + +In August, the [Go 1.15 release](https://blog.golang.org/go1.15) +delivered mainly optimizations and bug fixes rather than new features. +The most significant was the start of a rewrite of the linker, +making it run 20% faster and use 30% less memory +on average for large builds. + +Last month, we ran our [annual Go user survey](https://blog.golang.org/survey2020). +We will post results on the blog once we’ve analyzed them. + +The Go community has adapted to “virtual-first” along with everyone else, +and we saw many virtual meetups and over a dozen virtual Go conferences this year. +Last week, the Go team hosted +[Go day at Google Open Source Live](https://opensourcelive.withgoogle.com/events/go) +(videos at the link). + +## Going Forward + +We’re also incredibly excited about what’s in store for Go’s 12th year. +Most immediately, this week Go team members will +be presenting eight events at +[GopherCon 2020](https://www.gophercon.com/). +Mark your calendars! + +- “Typing [Generic] Go”, + a talk by Robert Griesemer,\ + [Nov 11, 10:00 AM (US Eastern)](https://www.gophercon.com/agenda/session/233094); + [Q&A at 10:30 AM](https://www.gophercon.com/agenda/session/417935). +- “What to Expect When You’re NOT Expecting”, + a live taping of the Go time podcast with a panel of expert debuggers, + including Hana Kim,\ + [Nov 11 12:00 PM](https://www.gophercon.com/agenda/session/2334490). +- “Evolving the Go Memory Manager's RAM and CPU Efficiency”, + a talk by Michael Knyszek,\ + [Nov 11 1:00 PM](https://www.gophercon.com/agenda/session/233086); + [Q&A at 1:50 PM](https://www.gophercon.com/agenda/session/417940). +- “Implementing Faster Defers”, + a talk by Dan Scales,\ + [Nov 11 5:10 PM](https://www.gophercon.com/agenda/session/233397); + [Q&A at 5:40 PM](https://www.gophercon.com/agenda/session/417941). + - “Go Team - Ask Me Anything”, + a live Q&A with Julie Qiu, Rebecca Stambler, Russ Cox, Sameer Ajmani, and Van Riper,\ + [Nov 12 3:00 PM](https://www.gophercon.com/agenda/session/420539). +- “Pardon the Interruption: Loop Preemption in Go 1.14”, + a talk by Austin Clements,\ + [Nov 12 4:45 PM](https://www.gophercon.com/agenda/session/233441); + [Q&A at 5:15 PM](https://www.gophercon.com/agenda/session/417943). +- “Working with Errors”, + a talk by Jonathan Amsterdam,\ + [Nov 13 1:00 PM](https://www.gophercon.com/agenda/session/233432); + [Q&A at 1:50 PM](https://www.gophercon.com/agenda/session/417945). +- “Crossing the Chasm for Go: Two Million Users and Growing”, + a talk by Carmen Andoh,\ + [Nov 13 5:55 PM](https://www.gophercon.com/agenda/session/233426). + +## Go Releases + +In February, the Go 1.16 release will include the new +[file system interfaces](https://tip.golang.org/pkg/io/fs/) +and +[build-time file embedding](https://tip.golang.org/pkg/embed/). +It will complete the linker rewrite, bringing additional performance improvements. +And it will include support for the new Apple Silicon (`GOARCH=arm64`) Macs. + +In August, the Go 1.17 release will no doubt bring more features and improvements, +although it’s far enough out that the exact details remain up in the air. +It will include a new register-based calling convention for x86-64 +(without breaking existing assembly!), +which will make programs faster across the board. +(Other architectures will follow in later releases.) +One nice feature that will definitely be included is the +[new `//go:build` lines](https://golang.org/design/draft-gobuild), +which are far less error-prone than the +[current `//` `+build` lines](https://golang.org/cmd/go/#hdr-Build_constraints). +Another highly anticipated feature we hope will be ready for beta testing next year +is +[support for fuzzing in the `go test` command](https://golang.org/design/draft-fuzzing). + +## Go Modules + +Over the next year, we will continue to work on developing support for Go modules +and integrating them well into the entire Go ecosystem. +Go 1.16 will include our smoothest Go modules experience yet. +One preliminary result from our recent survey is that 96% of users +have now adopted Go modules (up from 90% a year ago). + +We will also finally wind down support for GOPATH-based development: +any programs using dependencies other than the standard library will need a `go.mod`. +(If you haven’t switched to modules yet, see the +[GOPATH wiki page](https://golang.org/wiki/GOPATH) +for details about this final step in the journey from GOPATH to modules.) + +From the start, the [goal for Go modules](https://research.swtch.com/vgo-intro) +has been “to add the concept of package versions to the working vocabulary +of both Go developers and our tools,” +to enable deep support for modules and versions throughout the Go ecosystem. +The [Go module mirror, checksum database, and index](https://blog.golang.org/modules2019) +were made possible by this ecosystem-wide understanding of what a package version is. +Over the next year, we will see rich module support added to more tools and systems. +For example, we plan to investigate new tooling to help module authors publish new versions +(`go release`) +as well as to help module consumers update their code to migrate away from +deprecated APIs (a new `go fix`). + +As a larger example, +[we created gopls](https://github.com/golang/tools/blob/master/gopls/README.md) +to reduce many tools used by editors for Go support, +none of which supported modules, down to a single one that did. +Over the next year, +we’ll be ready to make the VSCode Go extension use `gopls` by default, +for an excellent module experience out of the box, +and we’ll release gopls 1.0. +Of course, one of the best things about gopls is that it is editor-neutral: +any editor that understands the +[language server protocol](https://langserver.org/) +can use it. + +Another important use of version information is tracking whether +any package in a build has a known vulnerability. +Over the next year, we plan to develop a database of known vulnerabilities +as well as tools to check your programs against that database. + +The Go package discovery site +[pkg.go.dev](https://pkg.go.dev/) +is another example of a version-aware system enabled by Go modules. +We’ve been focused on getting the core functionality and user experience right, +including a +[redesign launching today](https://blog.golang.org/pkgsite-redesign). +Over the next year, +we will be unifying godoc.org into pkg.go.dev. +We will also be expanding the version timeline for each package, +showing important changes in each version, +known vulnerabilities, and more, +following the overall goal of surfacing what you need to make +[informed decisions about adding dependencies](https://research.swtch.com/deps). + +We’re excited to see this journey from GOPATH to Go modules +nearing completion and all the excellent dependency-aware tools +that Go modules are enabling. + +## Generics + +The next feature on everyone’s minds is of course generics. +As we mentioned above, we published the +[latest design draft for generics](https://blog.golang.org/generics-next-step) +back in June. +Since then, we’ve continued to refine rough edges and have turned our +attention to the details of implementing a production-ready version. +We will be working on that throughout 2021, with a goal of having +something for people to try out by the end of the year, +perhaps a part of the Go 1.18 betas. + +## Thank You! + +Go is far more than just us on the Go team at Google. +We are indebted to the contributors who work with us with the Go releases and tools. +Beyond that, Go only succeeds because of all of you who work in +and contribute to Go’s thriving ecosystem. +It has been a difficult year in the world outside Go. +More than ever, we appreciate you taking the time +to join us and help make Go such a success. +Thank you. +We hope you are all staying safe and wish you all the best. +
diff --git a/content/11years/gophermask.jpg b/content/11years/gophermask.jpg new file mode 100644 index 0000000..d6fc456 --- /dev/null +++ b/content/11years/gophermask.jpg Binary files differ
diff --git a/content/pkgsite-redesign.article b/content/pkgsite-redesign.article new file mode 100644 index 0000000..b071d6a --- /dev/null +++ b/content/pkgsite-redesign.article
@@ -0,0 +1,78 @@ +# Pkg.go.dev has a new look! +12:00 10 Nov 2020 + +Julie Qiu + +## + +Since launching pkg.go.dev, we’ve received a lot of great feedback on +design and usability. +In particular, it was clear that the way information was organized confused +users when navigating the site. + +Today we’re excited to share a redesigned pkg.go.dev, +which we hope will be clearer and more helpful. +This blog post presents the highlights. For details, +see [Go issue 41585](https://golang.org/issue/41585). + +## Consistent landing page for all paths + +The main change is that the pkg.go.dev/\<path> page has been reorganized +around the idea of a path. +A path represents a directory in a particular version of a module. +Now, regardless of what’s in that directory, +every path page will have the same layout, +with the goal of making the experience consistently useful and predictable. + +<div class="image"> +<img src="pkgsite-redesign/path.png" width="800" height="513" alt="Landing page for cloud.google.com/go/storage" style="border: 1px solid black;"> +</div> + +The path page will display the README at that path if there is one. +Previously, the overview tab only showed the README if present at the module root. +This is one of many changes we’re making to place the most important information up front. + +## Documentation navigation + +The documentation section now displays an index along with a sidenav. +This gives the ability to see the full package API, +while having context as they are navigating the documentation section. +There is also a new Jump To input box in the left sidenav, +to search for identifiers. + + +<div class="image"> +<img src="pkgsite-redesign/nav.png" width="800" height="530" alt="Jump To feature navigating net/http" style="border: 1px solid black;"> +</div> + +See [Go issue 41587](https://golang.org/issue/41587) for details on changes in the documentation section. + +## Metadata on main page + +The top bar on each page now shows additional metadata, +such as each package’s “imports” and “imported by” counts. +Banners also show information about the latest minor and major versions of a module. +See [Go issue 41588](https://golang.org/issue/41588) for details. + +<div class="image"> +<img src="pkgsite-redesign/meta.png" width="800" height="145" alt="Header metadata for github.com/russross/blackfriday" style="border: 1px solid black;"> +</div> + +## Video Walkthrough + +Last week at [Google Open Source Live](https://opensourcelive.withgoogle.com/events/go), +we presented a walkthrough of the new site experience in our talk, +[Level Up: Go Package Discovery and Editor Tooling](https://www.youtube.com/watch?v=n7ayE29b7QA&feature=emb_logo). + +.iframe https://www.youtube.com/embed/n7ayE29b7QA 400 650 + +## Feedback + +We’re excited to share this updated design with you. +As always, please let us know what you think via the “Share Feedback” +and “Report an Issue” links at the bottom of every page of the site. + +And if you’re interested in contributing to this project, pkg.go.dev is open source! Check out the +[contribution guidelines](https://go.googlesource.com/pkgsite/+/refs/heads/master/CONTRIBUTING.md) +to find out more. +
diff --git a/content/pkgsite-redesign/meta.png b/content/pkgsite-redesign/meta.png new file mode 100644 index 0000000..7999934 --- /dev/null +++ b/content/pkgsite-redesign/meta.png Binary files differ
diff --git a/content/pkgsite-redesign/nav.png b/content/pkgsite-redesign/nav.png new file mode 100644 index 0000000..efdf372 --- /dev/null +++ b/content/pkgsite-redesign/nav.png Binary files differ
diff --git a/content/pkgsite-redesign/path.png b/content/pkgsite-redesign/path.png new file mode 100644 index 0000000..3af7fba --- /dev/null +++ b/content/pkgsite-redesign/path.png Binary files differ