# Community Outreach Working Group
5 Sep 2017
Tags: community
Summary: Annoucing the Go Community Outreach Working Group (CWG).
OldURL: /community-outreach-working-group

Steve Francia & Cassandra Salisbury
spf@golang.org

## Announcing the Go Community Outreach Working Group

The Go project has grown considerably with over half a million users and
community members all over the world. To date all community oriented activities
have been organized by the community with minimal involvement from the Go
project. We greatly appreciate these efforts.

After talking to many community organizers we have heard consistent
feedback that they would like better collaboration between organizers and
the Go project. We are forming the Community outreach Working Group (CWG)
to help support these community efforts.

## The CWG Mission

The mission of the CWG is to act as a conduit between the broader Go
community, it’s organizers and the Go project. The CWG will help provide
the structures and community management necessary to create an online and
in person community that is enjoyable and rewarding to participate in. The
CWG leadership represents the Go project in these efforts.

**The CWG is responsible for:**

  - Defining programs to facilitate deeper collaboration across the community.
  - Facilitating the coordination of Go events
  - Establishing growth and expansion plans for the community
  - Project exposure and accessibility
  - Ecosystem Development

**Leadership:**

  - [Ashley McNamara](https://twitter.com/ashleymcnamara)
  - [Cassandra Salisbury](https://twitter.com/Cassandraoid)
  - [Francesc Campoy](https://twitter.com/francesc)
  - [Steve Francia](https://twitter.com/spf13)

## Plans for Action

The CWG has an [open GitHub repo](https://github.com/golang/cwg) we’ve created for complete transparency
of our efforts.  We have various [GitHub projects](https://github.com/golang/cwg/projects) which are acting as our
primary initiatives. Each project has a variety of [issues](https://github.com/golang/cwg/issues) tied to them
with assignees from our Leadership team and [our members](https://github.com/golang/cwg/issues/15).

.image cwg/project.png

If you’d like to get involved, we encourage you to comment on the issue
that interests you or [submit an issue](https://github.com/golang/cwg/issues/new) yourself!
