
Russ Cox’s response to “Go Is Not a Community Driven Project” - f2f
https://groups.google.com/d/msg/golang-nuts/6dKNSN0M_kg/Y1yDJRwQBgAJ
======
tptacek
I 100% believe everything Russ Cox says here and don't think it will make a
whit of difference on HN and Reddit.

Keeping as constant Go's opinionated (for better/worse) management philosophy,
I don't think there's anything the Go team can say to put this criticism to
bed. It's simple: Rails can be "omakase" because Basecamp is a tiny company,
and Go can't be (without gripes) because Google is a big company. Hell, it
wasn't even clear a few weeks ago whether Clojure was allowed to gripe-free
"omakase" status, and hardly anyone on HN has even heard of Rich Hickey's
company.

Since, short of drastically changing how the project is managed --- something
I don't think many Go users have an appetite for --- there's nothing they can
do rhetorically to shut the argument down, I think it's best ignored.

If you don't want to use a project affiliated with Google, don't code in Go.
Similarly, if you want to have large solo impact on core features of a
language platform, like package management, set your sites somewhere other
than Go, where fairly intensive gatekeeping to that kind of stuff is widely
considered a feature, not a bug.

~~~
atombender
I'd wager that nobody would complain if Google donated Go to an open
organization such as CNCF [1]. The CNCF is a good fit because it already hosts
the world's most prominent Go projects, including Kubernetes and Prometheus.

While Google is certainly a big bish in that pond, there are plenty of other
big fish to balance them out, including Cisco, Red Hat/CoreOS, Github, IBM,
Intel and Docker.

Or invent a new organization. Call it "the Go Foundation". Make sure it's
independent and has the bylaws and administrative structure to prove it. It's
worked out pretty well for Python [2].

[1] [https://www.cncf.io/](https://www.cncf.io/)

[2] [https://www.python.org/psf-landing/](https://www.python.org/psf-landing/)

~~~
jopsen
If go wasn't a strongly opiniated language curated by the core team, I fear it
wouldn't be the same go.

Example: I don't like all the things gofmt does, but if I accept what gofmt
gives me, I can learn to live with it, and eventually be super happy :)

If go isn't opinionated, then what's the point? Whether owned by Google or a
foundation, if the core team isn't small and opiniated, then aren't we just
reinventing C++, hehe :)

Disclaimer: I work for Google, this is my personal opinion. (I actually
haven't used golang since joining Google, but that's a different story)

------
rmrfrmrf
Not sure what to make of this. All of the points the author makes are obvious;
_of course_ a project originated at Google would have a majority-Google
membership. _Of course_ anyone is free to fork Go. _Of course_ the code can be
considered FOSS. _Of course_ execs at Google couldn't care less about spec
details. None of those things disprove the point that Go is _not_ a community-
driven project.

I think I've mentioned this a while back, but one only needs to look to the
Guava library team to see what Google's general position is on community
contribution: contributors need not apply. The maintainers there blogged at-
length about the inferiority of non-Googlers and the tedium of dealing with
the unwashed masses -- typical NIH syndrome -- this is the same philosophy
that the Go team is influenced by, perhaps with only a less hostile tone.

The difference between an OpenJDK and an OpenGo project, in practice, would be
that the two would be completely unrelated. Go core would go on ignoring
community progress and, at best, Google would sue for the project to change
the name and force a hard fork.

~~~
DannyBee
"I think I've mentioned this a while back, but one only needs to look to the
Guava library team to see what Google's general position is on community
contribution:"

Can you explain why it makes sense to generalize a company of 50k developers,
which has released 4000+ open source projects, on the basis of precisely _1_
of them?

Why doesn't it make sense that it will end up with a variety of projects with
a variety of models? Especially given that is true of the world writ large?

I simply do not understand this fixation with trying to rigidly pigeonhole
Google on open source.

~~~
onion2k
I think the point rmrfrmrf is making is that Guava is a _typical_ example of
Google's attitudes towards the two-way relationship of open source. Google
developers (and many other big software companies) are more than happy to open
their code and promote it as something that the community should adopt, but
seem rigidly dismissive of any code contributions to the project from outside.
That may not be the case for every Google project but it does feel like it's a
common one to me.

What Google projects would make good counterpoints by demonstrate a welcoming
attitude to external contributions?

~~~
dodobirdlord
Kubernetes, probably.

[https://github.com/kubernetes/community/tree/master/contribu...](https://github.com/kubernetes/community/tree/master/contributors/guide)

~~~
hrktb
Kubernetes is a reaction to that state of closeness, and was explicitely
designed to bring Google’s philosophy (Borg) to the world. Its strong focus on
getting outside people involved is the core reason of its existence, so it’s a
bit of a special case IMO.

------
Lazare
His comments are fine, but don't engage with any of the criticism or concrete
points others have made. The "Go Is Not a Community Driven Project" post
really dug into detail how, in a specific case, Go did not behave as a
community driven project, and it was made very clear that Go was Google's
language, not the communities.

Responding with, in essence, "but we love the community!" is great, and
probably true, but...unless it's followed up by "...and that's why we feel so
badly about the previous events, and have made these specific changes" (or at
the minimum a rebuttal of the specific criticisms), it doesn't really....mean
anything?

Keep in mind, the closest we've got to introspection from Cox about the
modules issue was a "I'm sorry everyone else is upset, I must have not
explained things well enough" non-apology. Which is fine! The Go team doesn't
need to apologise for running their language development process however they
see fit...but it does underscore the issue.

Fundamentally, a decent chunk of the Go community thinks that the modules
process was _fundamentally broken_ , and the Go team thinks the modules
process was _fundamentally fine_. I would interpret the subtext of Cox's post
as "we really wish the community would be fine with the process". No doubt.

Finally, there's something a bit patronising about this:

> I spent a while trying to work out what I want to say about the general
> theme of Go and open source, but in the end I realized that my talk at
> Gophercon 2015 is a better articulation of what open source means for Go,
> and what Google's role is, than any email I can write in a few hours today.
> You can read the blog post version, “Go, Open Source, Community,” at
> [https://blog.golang.org/open-source](https://blog.golang.org/open-source),
> and I am including a copy below. I reread it this morning, and I still
> believe everything I said then.

The current discussion is about events _after_ 2015, by people who are well
aware of that talk. If people are questioning how the Go team is interacting
with the community even _after_ that talk, then maybe it isn't sufficient, and
you need to do more than just tell everyone to read it again?

~~~
hermitdev
It seems to me, as an outside observer, that golang is OSS. In that "hey,
here's the code, you're welcome to tinker with it and all," but we're not
accepting community contributions (or community contributions come under such
heavy internal to Google scrutiny, they're unlikely to be accepted upstream,
which discourages anyone from attempting).

Again, outside observer as a non golang user, but this is my impression. Any
non-Google's contributing care to share experiences.

This perceived (on my part) hostility to the non Google user community
definitely keeps me from even taking a look at it. I use C++, C# and Python
professionally. I'd potentially give Rust a go if I had time to learn it (my
job currently wouldn't allow it, as we're mainly a C# shop, only now branching
into Python - few of the main reasons I was hired was business domain
knowledge and +15 years experience in both C# and Python).

My 3 main languages all have active engagement with their user community and 2
of the 3 aren't controlled by a single corporation. C# is definitely driven by
MS, bit they are actively engaged with their development community and listen
to feedback and accept PRs for .Net Core.

~~~
hermitdev
I asked for people to contrafute my perception, not just a downvote.

I posted my perception as a nonuser, non member of the golang community, but
with my perception of my perceived hostility against non googler memebers of
the community...and I get met with no comments and downvotes, which reinforces
my perception (deservedly or not) of hostility towards non-googler involvement
in golang development. So, yeah, thanks. Golang is something I will now not
likely something I will ever pursue.

~~~
tomhoward
Your comment isn't downvoted anymore, and there's no way of knowing who
downvoted you or why.

------
geodel
From the response:

"..I've noticed that people often use the term “the Go community” without
being particularly clear about what they mean. To me, the Go community is all
Go users, which is at least a million people at this point. As such, it's at
the very least imprecise to say things like “the Go community wants (or did)
X.”

I think this is important because some outspoken members seems to have
tendency to claim that they represent whole community and they must be heard
and responded to even at the cost of quiet community members.

~~~
hayd
> at least a million people at this point.

This seems a little implausible to me, can this really be the case?

Edit: Oh, I see the reference in the post
[https://research.swtch.com/gophercount](https://research.swtch.com/gophercount)
(I'm still skeptical!)

~~~
badamp
No reason to be skeptical, that analysis is pure shit and dismissible on its
face.

The minor issue is the quantifying of developers. The methodology for the
15-20 million figure isn’t clear, but it at least passes some basic sniff
test.

What’s completely bullshit is using stackoverflow surveys. There is no reason
to believe the respondents of that survey are an unbiased cross section of the
20 million and many reasons to believe they aren’t.

I would totally expect the stackoverflow social 2.0 tech hipster webshit crowd
that would fill out that dumb survey to be more likely to use Go. The same
with oreilly surveys. Old grizzled grey beards aren’t as likely to fill out
publisher surveys on old stable tech.

Also, answering that you have “used” go is not the same as being a regular
developer (as noted by one of the commenters there... assembly is more
“popular” than Go).

~~~
icebraining
Well, as a "stackoverflow social 2.0 tech hipster webshit" (I answered the
survey), I fully agree with you that the methodology is beyond suspect, you
just can't take those numbers and apply some fudge factor from the top of your
head and pretend the result has any credibility.

OTOH, regarding

> answering that you have “used” go is not the same as being a regular
> developer

The question they ask in the survey is: "Which of the following programming,
scripting, and markup languages have you done extensive development work in
over the past year, and which do you want to work in over the next year?", so
it's more than just having "used" it.

~~~
badamp
Is that all one question? Then it’s even worse, because then “use” also
includes purely aspirational users. Nice.

Also I don’t think anyone that participates on this website has any moral
superiority over tech hipster webshit. But it’s good to realize this is a
skewed demographic.

~~~
icebraining
Sorry, I wasn't clear: they have two checkboxes for each languages, one for
past use and another for future wish.

------
SpaceManNabs
I don't use Go much to have an actual opinion on this. I actually like Go
because I built my data science blog on top of it (learned a bit of CSS and
html along the way).

But I think the final paragraph of this post only serves to highlight an issue
brought up in the original post by Mr. Siebenmann.

The rebuttal says:

"There are certainly senses in which Go is Google's language: it was created
at Google, Google continues to fund most of the development, and a few people
at Google are the final deciders about the language itself."

I understand that the language can be owned by Google and the community, but
the original take was:

"You could ask if Go is Google's language or the Go core team's language,
since Go's direction is set and controlled by that small core team. However,
at the moment I believe that most or all of the active Go core team is
employed by Google, making the distinction impossibly to determine in practice
(at least from outside Google). In practice we'll only get a chance to find
out who Go really belongs to if Go core team members start leaving Google and
try to remain active in determining Go's direction."

Seems like the rebuttal's concluding statement doesn't really address the
biggest concerns.

The rebuttal continues to say that the development team tries to work with the
community when possible. The original discussion here on HackerNews brought up
examples where that is not always the case. I don't think a BDFL or a team
acting as BDFL is a bad thing inherently, but I don't think this rebuttal
really talks to the issues.

I once wanted to build a bunch of ML tools for Golang. Like coding up UMAP or
other dimensionality reduction techniques, introducing some variational
techniques, etc. But the package manager situation at the time (I thought of
doing this 2 years ago) scared me off!

edit: I thought about this and did form a slight opinion on this article only.
If we were to change the opening and concluding paragraph only (and retain the
rest of the contents), it should have been titled "Go is Google's Language,
and that is ok!" And then added a paragraph on how Google possibly abandoning
the project wouldn't cripple it.

~~~
Lowkeyloki
Doesn't seem like much of a rebuttal at all, does it?

~~~
ummonk
In fairness, it didn’t really claim to rebut the post, just add further
context to it.

~~~
xbmcuser
He does not need to rebut anyway go is language created by googlers for a need
they had and they open sourced it. If it does not meets anyones development
requirements they can use another language or fork it and do the changes
themselves. There are so many community driven open source projects one of the
most used is Kodi and if you have spent any time on it's repo you can see that
the maintainers set a hardline on what their vision is and what code they are
willing to accept. Funnily enough an argument is going on at the moment where
Kodi maintainers want to remove all hardware specific hacks in future versions
and some dev opposed to it. What do you think will happen?

------
lgleason
The mental gymnastics here...

Go is just like many Google projects and Google "community" programs. They are
basically a way to get free labor while benefiting Google first and foremost.
That is a philosophy that goes right up to the top. Yes others benefit from
the free software, and by fixing something you might be scratching your own
itch, but if you invest any unpaid time towards developing for it you need to
understand the Google controls everything (unless you fork it).

If you get on the wrong side of the Google activists, they will use the COC to
invent a reason to kick you out of the main project. Some of Google's
"community" programs are not as subtle about things. IE: The Google Developer
Expert program in these "community" technologies such as Angular, Android etc.
require the unpaid developer experts to sign non-disparagement agreements with
Google while in exchange only getting a little bit of notoriety and a few
comped trips and tickets to events...and of course Google is the gate keeper
for it. The GDG program is even more flagrant. Each chapter is "independent"
and has to raise their own money for things, but then Google tips the scales
by throwing money towards programs that shill certain Google products. Google
also has guidelines on how you market etc. things and is able to be a gate
keeper on who is and isn't and organizer etc..

Many of the Google "community" "open source" packages are first only released
to people under NDA's. I've seen this happen a few times with the some of the
Android libraries etc..

Does that mean that Go is bad? No, in the same way that proprietary
technologies are not bad. The key is understanding the truth from the
propaganda.

~~~
neilv
> _require the unpaid developer experts to sign non-disparagement agreements_

I haven't heard of this. What's the rationale?

------
coldtea
> _There are certainly senses in which Go is Google 's language: it was
> created at Google, Google continues to fund most of the development, and a
> few people at Google are the final deciders about the language itself. But I
> disagree with the “not ours:” I think Go is also the Go community's
> language._

Well, not if people in the Go community can't be promoted to be among "the
final deciders about the language itself" without also being hired by Google.

Sure, the community is 1 million people. Nobody expects 1 million people to
vote for Go's design and features.

But each language community develops prominent members, which for Go can be
outside of Google too. E.g. like JS had Resig and Askenash, or Java had the
various Java Apache project leads, Yoda time, etc people, or like Python has
Kenneth Reitz, Armin Ronacher, the Twisted/Tornado guys and co. And some major
projects, modules, etc, eventually emerge.

If those people can't get their (widely adopted by many in the community)
proposals and changes into the language, and don't get the chance to be core
team, them it's not a community language.

------
kstenerud
Yes, Google effectively has final say over what goes into golang; that's never
going to change. But then again, the same could be said of the cadres of
people managing other languages. At the end of the day, SOMEONE has to be in
charge, and that someone probably isn't you.

I personally like to have strong leadership behind such fundamental things as
languages. I may not agree with all of their decisions, but at least I can
count on the stability, which we all need in order to collaborate
successfully. With strong leadership, I know I we won't have another Python2
vs Python3 mess.

And the ability to fork is very handy. I've forked my own golang compiler to
allow warnings for unused imports, variables, etc [1] because I don't like
fighting the compiler during debug or exploratory coding sessions.

[1] [https://github.com/kstenerud/go](https://github.com/kstenerud/go)

~~~
tgsovlerkhgsel
> Google effectively has final say over what goes into golang

I'm wondering who has more say, Google or the individuals on the core Go team.
My guess is that said people's personal opinion matters a lot more, or rather,
almost exclusively.

How exactly would "Google" decide what goes into golang? They pay the Go team
to do that, and I have a gut feeling that the Go team will do what the Go team
wants to do, and not something else.

I would also be surprised if enough of them didn't have a sufficient amount of
"fuck you money" to be able to effectively do what they want even if Google
somehow managed to find someone who feels like they have any authority to tell
the Go team which way to go (pun not intended).

~~~
kstenerud
Yes, I wasn't fully clear: It's the authors who wield the most power. Google
as a whole doesn't really care so long as it works for the things they do (and
it already does, so they really don't care anymore).

This isn't a case of an evil empire seeking to enslave our minds via a
programming language; it's a company open sourcing their internally designed
language, and engaging the community to make it more useful outside of Google
(and to increase the number of people who use the language, which is always
good because it means a greater pool of developers who could possibly work for
them).

------
brudgers
I don't know what "a community driven project" means because it doesn't use
technical terms. The established technical concepts are stakeholders,
consensus, and standardization. Go has clearly delineated stakeholders. These
are few relative to Go's broader user base. Not being stakeholders, the
broader user base is excluded from Go's consensus process. Go's stakeholders
do not appear to value standardization of the language.

None of this is inherently bad or good.

~~~
hu3
> Go's stakeholders do not appear to value standardization of the language

This seems rather misinformed. Go has a spec
[https://golang.org/ref/spec](https://golang.org/ref/spec) and at least 2
alternative compilers in the form of gccgo and GopherJS.

I'd love to hear where do you base the notion that Go's stakeholders do not
appear to value standardization of the language.

~~~
brudgers
Sorry for not being clear. I used "standardization" in its established
technical sense.

In general technical use, standards and specifications are different.
Standards are technical documents published by an independent standards
organization. For example ISO in the case of the C programming language and
ECMA in the case of ECMAscript (i.e. Javascript). Standards (in conventional
use) have formal processes for establishing stakeholders, submitting proposed
changes, acting on proposed changes, and publishing changes to the standard.

Formal processes are not an inherent property of specifications. The Go
specification could change in surprising ways tonight. Though it probably
won't. The process for changing the Go specification can also change.
Specifications are short lived. Standards are 'forever'. Fortran 77 is still
Fortran 77 because of X3.9-1978.

It is common for specifications to incorporate standards by reference. For
example a specification might include "the program should generate valid XHTML
1.1." The standards body W3C provides a process for determining conformance
with the standard [https://validator.w3.org/](https://validator.w3.org/). T

------
nixpulvis
The fact I needed to log into google to view this seems ironic either way.

~~~
chii
You hardly need to login. Stop spreading FUD!

~~~
marcinzm
You do. But only, apparently, if you have any have cookies on your machines
from any previous google login.

~~~
crispinb
A shout out for Firefox multi-account containers here. Set up google-specific
containers for any google properties you do want to log into, leaving your
main container uncontaminated with google cookies.

------
didibus
I think one interesting aspect is to think what would happen if Ken Thompson
and Rob Pike and the other original creators and active maintainers left
Google?

And say, they still wanted to lead the project? Even though they no longer
work? Could they? Or would Google appoint new people, and maybe Go would lose
its magic?

I guess that's the difference between run by one or a few BDFLs and run by
Google?

~~~
slimsag
I am pretty sure (but not completely positive) that Ken and Rob don't really
do much with Go these days. They have since moved on to other projects for the
most part.

------
nullwasamistake
Google does with all corporate sponsored projects. Most non-Google commiters
just submitted simple bug fixes, most or all core maintainers are Google
employees.

It's this way with every Google OSS project I know of. Guava, Angular, AMP,
Chrome, Android, Tensorflow, gRPC. Sometimes they even de-facto take over
existing projects, like Square's Dagger DI.

Google has no open source governance model unlike Apache, the chaos that is
Linux or rust, or even Java's JCP. Since a fork is so expensive to maintain
over time, many of these projects are open source only in name. Google invests
enough money to keep anyone from forking. Pennies for them compared to the
huge marketshare they get for having massive "safe" OSS projects that
companies won't worry about adopting.

------
gerbilly
If it’s so community driven, then why does this issue resonate so much?

It seems like we will never hear the end of the apologias about how open Go
is.

To me that betrays that it’s exactly the opposite.

I use Go, it’s useful, but i do so with a bad taste in my mouth: like
someone’s stubborn opinions are being forced upon me.

~~~
icholy
Nothing is being forced upon anyone.

~~~
kazinator
If you're hired somewhere to write Go, how easily can you use someone's
alternative, forked version of Go?

~~~
icholy
Don't like the work, find another job.

------
merlincorey
It seems the bulk of the rebuttal is a reposting of Russ' blog post from 2015
"Go, Open Source, Community" found here: [https://blog.golang.org/open-
source](https://blog.golang.org/open-source)

I was hoping that this would address the package management fiasco, but it did
not.

------
atombender
As an aside, since the discussion mentions trademarking, whatever happened to
the new branding announced [1] a year ago? The logo (which they did trademark,
along with the name "Go") is also still not in use. The design wasn't received
so well by the community, so did Google perhaps change their minds?

[1] [https://blog.golang.org/go-brand](https://blog.golang.org/go-brand)

------
falsedan
Love how people from the big org that controls the project keep insisting that
it's community driven, instead of members of the community

------
duxup
Is the concern here that if Google chooses to move on from Go that much or all
of the leadership might too?

~~~
icholy
Nah, it's just the "we want generics now" crowd finding a new way to whine.

~~~
mcguire
I don't use Go, I think rsc's module system is significantly better than the
community version (although bad in its own way), and I find your broad
dismissal... unappealing.

Can we keep the discussion substantive?

~~~
eternalban
I am curious why you even care about this conversation if you don't use Go.

I think OP has a point that perhaps could have been expressed more gracefully.

~~~
yellowapple
Maybe this is a reason why this person doesn't use Go? That'd be good enough
reason to care, I'd reckon.

~~~
eternalban
Be serious.

------
dumpsterdiver
This brings to mind an excerpt from the movie 'The Aviator (2004)':

Senator: "Mr. Mayer works for you, does he not?"

Mr. Hughes: "He does."

Senator: "And what is his official title?"

Mr. Hughes: "Well I don't exactly know, Senator. A lot of people work for me."

Senator: "Explain why your press agent would pay out $170,000 to
representatives of the United States Air Force."

Mr. Hughes: "Well I don't know, I suppose you'd have to ask him, Senator."

Senator: "Well would you produce him?"

Mr. Hughes: "Produce him?"

Senator: "Will you cause him to appear?"

Mr. Hughes: "Senator, you had John Mayer on the stand for three days last
week."

Senator: "Well be that as it may, we would like him to reappear. Would you ask
him to return?"

Mr. Hughes: (long pause) "No, I don't think I will."

Senator: "Will you try to have him appear?"

Mr. Hughes: "No, I don't think I'll try."

Senator: "You don't think you'll try..."

Mr. Hughes: "No... I don't think so."

In other words, go fork yourself, Senator.

------
gnu8
After all the drama surrounding the bureaucratic paralysis and legal
encumberment of Java, I wouldn't touch another corporate language with a ten
foot pole. Let Go Die.

------
sheeshkebab
Google should at least relicense Go under Apache 2 to clarify the uncertainty.

~~~
GeertJohan
Google can't relicense Go. It would need approval of all copyrightholders, a
list of hundreds of people and companies, of which Google is just one.

~~~
Carpetsmoker
I believe this is covered by the CLA:
[https://cla.developers.google.com/about/google-
individual](https://cla.developers.google.com/about/google-individual)

> You hereby grant to Google and to recipients of software distributed by
> Google a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
> irrevocable copyright license to reproduce, prepare derivative works of,
> publicly display, publicly perform, sublicense, and distribute Your
> Contributions and such derivative works.

