diff --git a/content/pandemic.article b/content/pandemic.article
new file mode 100644
index 0000000..c08a86b
--- /dev/null
+++ b/content/pandemic.article
@@ -0,0 +1,184 @@
+# Go, the Go Community, and the Pandemic
+25 Mar 2020
+Summary: How the Go team is approaching the pandemic, what you can expect from us, and what you can do.
+
+Carmen Andoh
+
+Russ Cox
+
+Steve Francia
+
+##
+
+Go always comes second to more
+basic concerns like personal and family health and safety.
+Around the world, the past couple months have been terrible,
+and we are still at the start of this awful pandemic.
+There are days when it seems like working on
+anything related to Go should be considered a serious priority inversion.
+
+But after we’ve done all we can
+to prepare ourselves and our families for whatever is coming,
+getting back to some approximation of a familiar routine
+and normal work is a helpful coping mechanism.
+In that spirit, we intend to keep working on Go
+and trying to help the Go community as much as we can.
+
+In this post we want to share a few important notes about
+how the pandemic is affecting the Go community,
+a few things we’re doing to help, what you can do to help,
+and our plans for Go itself.
+
+## Conferences and Meetups
+
+The Go community thrives on in-person conferences and meetups.
+We had anticipated 35 conferences this year
+and thousands of meetups, nearly all of which have
+now changed, been postponed, or been cancelled.
+We’ll keep the
+[conferences wiki page](https://github.com/golang/go/wiki/Conferences)
+updated as plans change.
+
+We want to do everything we can to help support impacted Go conferences.
+We also want to support efforts to explore
+new ways for gophers to connect in the time of social distancing.
+In addition to honoring Google’s existing sponsorships,
+we are interested to offer support to people planning
+virtual conference alternatives through the rest of the year.
+If you are organizing a Go conference and have been impacted,
+or if you are considering holding a virtual alternative,
+please reach out to Carmen Andoh at _candoh@google.com_.
+
+For conference organizers,
+the [Gophers slack](https://gophers.slack.com)
+[#conf-organizers](https://app.slack.com/client/T029RQSE6/C97B0NCVD) channel
+is a place to discuss contingency plans,
+best practices, cancellation, and postponement support.
+It’s also a place to share idea for virtual events,
+to continue to connect and support the Go community.
+
+For meetup organizers,
+the [Go Developer Network](https://www.meetup.com/pro/go)
+can provide Zoom for Education licensing to meetups
+that want to start holding virtual meetings.
+If you host a meetup, or you’d like to, we encourage you
+to use this opportunity to get speakers from outside your
+region to present to your group.
+For more information, and to get involved,
+please join
+the [Gophers slack](https://gophers.slack.com)
+[#remotemeetup](https://app.slack.com/client/T029RQSE6/C152YB9UZ) channel.
+
+## Online Training
+
+The Go trainers you meet at conferences also travel the globe doing
+[in-person training](https://learn.go.dev/)
+for companies that want help adopting Go.
+That in-person teaching is crucial to bringing
+new gophers into the community;
+we’re incredibly grateful to the trainers for the work they do.
+Unfortunately, on-site training contracts have all been cancelled
+for the next few months, and the trainers in our community
+have lost their primary (or sole) source of income.
+We encourage companies to consider virtual training
+and workshops during this difficult time.
+Most trainers are being flexible with pricing,
+scheduling, and class structure.
+
+## Job Postings
+
+We know that the current downturn means that some
+gophers are looking for new jobs.
+The Go community has built a number of Go-specific job-posting sites, including
+[Golang Cafe](https://golang.cafe/),
+[Golang Projects](https://www.golangprojects.com/),
+and
+[We Love Go](https://www.welovegolang.com).
+The [Gophers slack](https://gophers.slack.com)
+also has many job-hunting channels: search for “job” in the channel list.
+We encourage employers with any new openings to post in as
+many appropriate places as possible.
+
+## FOSS Responders
+
+We are proud that Go is part of the broader open-source ecosystem.
+[FOSS Responders](https://fossresponders.com)
+is one effort to help the open-source ecosystem
+deal with the impacts of the pandemic.
+If you want to do something to help affected open-source communities,
+they are coordinating efforts and also have links to other efforts.
+And if you know of other open-source communities that need help,
+let them know about FOSS Responders.
+
+## COVID-19 Open-Source Help Desk
+
+The [COVID-19 Open-Source Help Desk](https://covid-oss-help.org/)
+aims to help virologists, epidemiologists, and other domain experts
+find quick answers to any problems they are having with
+open-source scientific computing software,
+from experts in that software,
+so they can focus their time on what they know best.
+If you are a developer or a scientific computing expert
+willing to help by answering the posts of the domain experts,
+visit the site to learn how to help.
+
+## U.S. Digital Response
+
+For our gophers in the United States,
+the [U.S. Digital Response](https://www.usdigitalresponse.org/)
+is working to connect qualified volunteers to
+state and local governments that need digital help
+during this crisis.
+Quoting the web page,
+“If you have relevant experience
+(healthcare, data, engineering & product development,
+general management, operations, supply chain/procurement and more),
+can work autonomously through ambiguity,
+and are ready to jump into a high-intensity environment,”
+see the site for how to volunteer.
+
+## Plans for Go
+
+Here on the Go team at Google, we recognize that the
+world around us is changing rapidly
+and that plans beyond the next couple weeks
+are not much more than hopeful guesses.
+That said, right now we are working
+on what we think are the most important projects for 2020.
+Like all of you, we’re at reduced capacity, so the work
+continues slower than planned.
+
+Our analysis of the Go 2019 user survey is almost complete,
+and we hope to post it soon.
+
+At least for now, we intend to keep to our timeline for Go 1.15,
+with the understanding that it will probably have fewer new features
+and improvements than we originally planned.
+We continue to do code reviews, issue triage,
+and [proposal review](https://golang.org/s/proposal-minutes).
+
+[Gopls](https://go.googlesource.com/tools/+/refs/heads/master/gopls/README.md)
+is the language-aware backend supporting most Go editors today,
+and we continue to work toward its 1.0 release.
+
+The new Go package and module site [pkg.go.dev](https://pkg.go.dev)
+keeps getting better.
+We’ve been working on usability improvements
+and new features to better help users find and evaluate Go packages.
+We’ve also expanded the set of recognized licenses and improved the
+license detector, with more improvements to come.
+
+Our [Gopher values](https://golang.org/conduct#values)
+are what ground us, now more than ever.
+We are working extra hard to be friendly, welcoming,
+patient, thoughtful, respectful, and charitable.
+We hope everyone in the Go community will try to do the same.
+
+We’ll continue to use this blog to let you know about
+important news for the Go ecosystem.
+In those moments when you’ve taken care of the much more
+important things going on in your life,
+we hope you’ll check in and see what we’ve been up to.
+
+Thank you, as always, for using Go and being part of the Go community.
+We wish you all the best in these difficult times.
