# The Gopher Gala is the first worldwide Go hackathon
7 Jan 2015
Summary: The [Gopher Gala](http://gophergala.com/) is the first Go hackathon at a global scale and will take place from January 23rd through the 25th. The event is organized by the community, supported by the Go team, and sponsored by Google among others.

Francesc Campoy
campoy@golang.org

##

The [Gopher Gala](http://gophergala.com/) is the first Go hackathon at a
global scale and will take place from January 23rd through the 25th. The event
is organized by the community, supported by the Go team, and sponsored by
Google among others.

.image gophergala/fancygopher.jpg _ 300
_Fancy_Gopher,_by_ [[http://www.reneefrench.com/][_Renée_French_]]

You can read about the rules of the hackathon
[here](http://gophergala.com/rules/), but if you know about
[Rails Rumble](http://railsrumble.com/) or
[Node Knockout](http://nodeknockout.com/) you already have a pretty good idea
of what to expect.

During this event gophers from all around the globe will form teams to build
great applications using Go as the main tool. Afterwards, all the participants
will vote for their favorite applications and the 20 highest voted applications
will be ranked by a jury of renowned names from the community, including some
members of the Go core team. More information on the judging phase can be found
[here](http://gophergala.com/judging/).

And in case you needed one more reason to
[get involved](https://gophers.typeform.com/to/wondM5) there will be prizes!

"What prizes?" you ask. Well, that’s a
[secret](http://gophergala.com/prizes/) until January 10th but we’re pretty
sure you won’t be disappointed.
