The New Go Developer Network
14 Mar 2019
Tags: Community

GoBridge Leadership Team

* Introduction

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 [[https://gobridge.org][GoBridge]]
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 [[https://meetup.com/pro/go][Pro Network of Go Developers]]
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 [[https://j.mp/gdn-form][application]] to request to join the GDN.

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