Go's New Brand
26 Apr 2018
Tags: brand

Steve Francia

* Introduction

I am delighted to announce the launch of Go’s new look and logo.

Go has been on an amazing journey over the last 8+ years. Our project, community
and users have evolved through this journey and we wanted the Go brand to
reflect where we have been and convey where we are going.

Go’s new brand is about our identity, our values, and our users. Over the past
several months we have worked with a brand agency to develop a brand guide for
Go. Our agency, [[http://within.us/][Within]], coordinated with and built upon
the great foundation that Renee French established. Rest easy, our beloved
Gopher Mascot remains at the center of our brand.

* New Logo

Our logo follows the brand’s core philosophy of simplicity over complexity.
Using a modern, italicized sans-serif typeface combined with three simple motion
lines forms a mark that resembles two wheels in rapid motion, communicating
speed and efficiency. The circular shape of the letters hints at the eyes of the
Go gopher, creating a familiar shape and allowing the mark and the mascot to
pair well together.

.image go-brand/logos.jpg

Our new logo went through an extensive design process. Here are some of the
revisions we went through…

.html go-brand/video.html

* New Brand Guide

The brand guide establishes the mission, values and voice for the Go project. In
general terms, a brand guide is a reference tool for establishing a consistent
brand identity. It is sometimes referred to as “brand guidelines” or a “brand
book”. It is a single document that serves as a guide and reference to
designers, writers, and developers to create consistent, on-brand content.

.image go-brand/Go-BB_cover.jpg
.image go-brand/Go-BB_spread1.jpg
.image go-brand/Go-BB_spread2.jpg

* New presentation themes

In addition to our brand guide we have also developed a presentation theme. This
presentation theme will enable us to have a consistent representation of Go in
person at meetups and conferences as well as online. Go community members are
welcome to use this theme for their own presentations.

.image go-brand/go-slides-4up.jpg

The presentations are available as Google Slides presentations. We chose Google
slides as it is easy to share and maintain updates. People are welcome to port
them to keynote, powerpoint, etc.

Like this blog and all our gopher images,
the slide themes are Creative Commons Attribution 3.0 licensed.
The photos in the slides are all from
[[https://unsplash.com/][unsplash]] and are released under the unsplash license.

Instructions to use slides:

- Open the [[https://golang.org/s/presentation-theme][Go Slide Masters]] presentation on Google slides.
- File > “Make a Copy” (you may need to login first)
- Create new slides using the layouts provided in the layouts menu.
- Use the included example slides to help guide the styling and creation of your presentation.

** Download

The brand guide, logo and themes are copyrighted by the Go authors.

The brand guide contains the guidelines for acceptable logo use.

- [[https://golang.org/s/brandbook][Brand Book (pdf)]]
- [[https://golang.org/s/logos][Go Logos (zip)]]
- [[https://golang.org/s/presentation-theme][Go Slide Masters (Google Slides)]]

* What’s happening next

The website will be getting a refresh based on the new design. Since we are
making significant changes, we are also taking this opportunity to update our
website infrastructure to better serve our global community with internationalization
and multilingual support. The migration will happen in stages over the
next few months starting with this blog.
