# Go's New Brand
26 Apr 2018
Tags: brand
Summary: Go’s new look and logo (don't worry, the mascot isn't changing!).

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, [Within](http://within.us/), 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…

<div><center>
.iframe //www.youtube.com/embed/V4t-ymImW6c 315 560
</center></div>

## 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
[unsplash](https://unsplash.com/) and are released under the unsplash license.

Instructions to use slides:

  - Open the [Go Slide Masters](https://golang.org/s/presentation-theme) 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.

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

## 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.
