GopherChina Trip Report
1 Jul 2015

Robert Griesemer
gri@golang.org

* Introduction

We have known for some time that Go is more popular in China than in any other
country.
According to Google Trends, most [[https://www.google.com/trends/explore#q=golang][searches for the term “golang”]] come from The People’s Republic than anywhere else.
[[http://herman.asia/why-is-go-popular-in-china][Others]] have speculated on
the same observation, yet so far we have had
[[https://news.ycombinator.com/item?id=8872400][sparse concrete information]]
about the phenomenon.

The first Go conference in China, [[http://gopherchina.org/][GopherChina]],
seemed like an excellent opportunity to explore the situation by putting some
Western Gopher feet on Chinese ground. An actual invitation made it real and I
decided to accept and give a presentation about gofmt’s impact on software
development.

.image gopherchina/image04.jpg

_Hello,_Shanghai!_

The conference took place over an April weekend in Shanghai, in the
[[https://www.google.com/maps/place/Puruan+Bldg,+Pudong,+Shanghai,+China][Puruan Building]]
of the Shanghai Pudong Software Park, easily reachable by subway within an hour
or less from Shanghai’s more central parts.
Modelled after [[http://www.gophercon.com][GopherCon]], the conference was
single-track, with all talks presented in a conference room that fit about 400
attendees.
It was organized by volunteers, lead by [[https://github.com/astaxie][Asta Xie]],
and with robust sponsorship from major industry names. According to the
organizers, many more people were hoping to attend than could be accommodated
due to space constraints.

.image gopherchina/image01.jpg

_The_welcoming_committee_with_Asta_Xie_(2nd_from_left),_the_primary_organizer._

Each attendee received a bag filled with the obligatory GopherChina t-shirt,
various sponsor-related informational brochures, stickers, and the occasional
stuffed “something” (no fluffy Gophers, though). At least one 3rd party vendor
was advertising technical books, including several original (not translated
from English) Go books.

.image gopherchina/image05.jpg

_Go_books!_

On first impression, the average attendee seemed pretty young, which made for
an enthusiastic crowd, and the event appeared well run.

With the exception of my talk, all presentations were given in Mandarin and
thus were incomprehensible to me. Asta Xie, the primary organizer, assisted
with a few simultaneous translations whispered into my ear, and the occasional
English slide provided additional clues: “69GB” stands out even without any
Mandarin knowledge (more on that below). Consequently, I ended up listening to
a handful of presentations only, and instead spent much of my time talking with
attendees outside the main conference room. Yet judging from the slides, the
quality of most presentations seemed high, comparable with our experience at
GopherCon in Denver last year. Each talk got a one hour time slot which allowed
for plenty of technical detail, and many (dozens) of questions from an
enthusiastic audience.

As expected, many of the presentations were about web services, backends for
mobile applications, and so on. Some of the systems appear to be huge by any
measure.
For instance, a talk by [[http://gopherchina.org/user/zhouyang][Yang Zhou]]
described a large-scale internal messaging system, used by
[[http://www.360.cn/][Qihoo 360]], a major Chinese software firm, all written
in Go. The presentation discussed how his team managed to reduce an original
heap size of 69GB (!) and the resulting long GC pauses of 3-6s to more
manageable numbers, and how they run millions of goroutines per machine, on a
fleet of thousands of machines. A future guest blog post is planned describing
this system in more detail.

.image gopherchina/image03.jpg

_Packed_conference_room_on_Saturday._

In another presentation, [[http://gopherchina.org/user/guofeng][Feng Guo]] from
[[https://www.daocloud.io/][DaoCloud]] talked about how they use Go in their
company for what they call the “continuous delivery” of applications. DaoCloud
takes care of automatically moving software hosted on GitHub (and Chinese
equivalents) to the cloud. A software developer simply pushes a new version on
GitHub and DaoCloud takes care of the rest: running tests,
[[https://www.docker.com/][Dockerizing]] it, and shipping it using your
preferred cloud service provider.

Several speakers were from well-recognized major software firms (I showed the
conference program to non-technical people and they easily recognized several
of the firm’s names). Much more so than in the US, it seems Go is not just
hugely popular with newcomers and startups, but has very much found its way
into larger organizations and is employed at a scale that we are only starting
to see elsewhere.

Not being an expert in web services myself, in my presentation I veered off the
general conference theme a bit by talking about
[[https://golang.org/cmd/gofmt/][gofmt]] and how its widespread use has started
to shape expectations not just for Go but other languages as well.
I presented in English but had my slides translated to Mandarin beforehand. Due
to the significant language barrier I wasn’t expecting too many questions on my
talk itself.
Instead I decided the keep it short and leave plenty of time for general
questions on Go, which the audience appreciated.

.image gopherchina/image06.jpg

_No_social_event_in_China_is_complete_without_fantastic_food._

A couple of days after the conference I visited the 4-year-old startup company
[[http://www.qiniu.com/][Qiniu]] (“Seven Bulls”), at the invitation of its
[[http://gopherchina.org/user/xushiwei][CEO]] Wei Hsu, facilitated and
translated with the help of Asta Xie. Qiniu is a cloud-based storage provider
for mobile applications; Wei Hsu presented at the conference and also happens
to be the author of one of the first Chinese books on Go (the leftmost one in
the picture above).

.image gopherchina/image02.jpg
.image gopherchina/image00.jpg

_Qiniu_lobby,_engineering._

Qiniu is an extremely successful all-Go shop, with about 160 employees, serving
over 150,000 companies and developers, storing over 50 Billion files, and
growing by over 500 Million files per day. When asked about the reasons for
Go’s success in China, Wei Hsu is quick to answer: PHP is extremely popular in
China, but relatively slow and not well-suited for large systems. Like in the
US, universities teach C++ and Java as primary languages, but for many
applications C++ is too complex a tool and Java too bulky. In his opinion, Go
now plays the role that traditionally belonged to PHP, but Go runs much faster,
is type safe, and scales more easily. He loves the fact that Go is simple and
applications are easy to deploy. He thought the language to be “perfect” for
them and his primary request was for a recommended or even standardized package
to easily access database systems. He did mention that they had GC problems in
the past but were able to work around them. Hopefully our upcoming 1.5 release
will address this. For Qiniu, Go appeared just at the right time and the right
(open source) place.

According to Asta Xie, Qiniu is just one of many Go shops in the PRC. Large
companies such as Alibaba, Baidu, Tencent, and Weibo, are now all using Go in
one form or another. He pointed out that while Shanghai and neighboring cities
like [[https://www.google.com/maps/place/Suzhou,+Jiangsu,+China][Suzhou]] are
high-tech centres, even more software developers are found in the Beijing area.
For 2016,  Asta hopes to organize a larger (1000, perhaps 1500 people)
successor conference in Beijing.

It appears that we have found the Go users in China: They are everywhere!

_Some_of_the_GopherChina_materials,_including_videos,_are_now_available_alongside_Go_coursework_on_a_ [[http://www.imooc.com/view/407][_3rd_party_site_]].

