# Go's New Brand
26 Apr 2018
Tags: brand
Summary: I am delighted to announce the launch of Go’s new look and logo.

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…

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