# The New Go Developer Network
14 Mar 2019
Tags: Community
Summary: A sense of community flourishes when we come together in person. As handles become names and avatars become faces, the smiles are real and true friendship can grow. There is joy in the sharing of knowledge and celebrating the accomplishments of our friends, colleagues, and neighbors. In our rapidly growing Go community this critical role is played by the Go user groups.

GoBridge Leadership Team

##

A sense of community flourishes when we come together in person. As handles become names
and avatars become faces, the smiles are real and true friendship can grow. There is joy
in the sharing of knowledge and celebrating the accomplishments of our friends, colleagues,
and neighbors. In our rapidly growing Go community this critical role is played by the
Go user groups.

To better support our Go user groups worldwide, the Go community leaders at [GoBridge](https://gobridge.org)
and Google have joined forces to create a new program called the Go Developer Network
(GDN). The GDN is a collection of Go user groups working together with a shared mission
to empower developer communities with the knowledge, experience, and wisdom to build
the next generation of software in Go.

We have partnered with Meetup to create our own [Pro Network of Go Developers](https://meetup.com/pro/go)
providing Go developers a single place to search for local user groups, events, and
see what other Gophers are doing around the world.

User groups that join the GDN will be recognized by GoBridge as the official user group
for that city and be provided with the latest news, information, conduct policies, and
procedures. GDN groups will have Meetup fees paid by the GDN and will have access to
special swag and other fun items. Each organizer of a GDN local group will continue to
own the group and maintain full admin rights. **If you currently run a user group**,
please fill out this [application](https://j.mp/gdn-form) to request to join the GDN.

We hope you are as excited about the GDN as we are.
