---
title: Go, the Go Community, and the Pandemic
date: 2020-03-25
by:
- Carmen Andoh
- Russ Cox
- Steve Francia
summary: How the Go team is approaching the pandemic, what you can expect from us, and what you can do.
---


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 canceled.
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 canceled
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](/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](/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.
