GopherChina Trip Report
1 Jul 2015
Tags: community, china

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_]].

