Go is Google's language, not ours

May 22, 2019

Over on Twitter, I saw the following question (via):

There is lot of conversation around generics in #go, can't we have something like OpenGo, where community can implement generics , rather that waiting for official #go generics to happen ? Something like OpenJDK

There are many answers for why this won't happen, but one that does not usually get said out loud is that Go is Google's language, not the community's.

Yes, there's a community that contributes things to Go, some of them important and valued things; you only have to look at the diversity of people in CONTRIBUTORS or see the variety of people appearing in the commits. But Google is the gatekeeper for these community contributions; it alone decides what is and isn't accepted into Go. To the extent that there even is a community process for deciding what is accepted, there is an 800-pound gorilla in the room. Nothing is going to go into Go that Google objects to, and if Google decides that something needs to be in Go, it will happen.

(The most clear and obvious illustration of this is what happened with Go modules, where one member of Google's Go core team discarded the entire system the outside Go community had been working on in favour of a relatively radically different model. See eg for one version of this history.)

Or in short, Go has community contributions but it is not a community project. It is Google's project. This is an unarguable thing, whether you consider it to be good or bad, and it has effects that we need to accept. For example, if you want some significant thing to be accepted into Go, working to build consensus in the community is far less important than persuading the Go core team.

(As a corollary, sinking a lot of time and effort into a community effort that doesn't have enthusiastic buy-in from the Go core team is probably a waste of time; at the most, your work might help the Go core team understand the issues better. Again, see Go modules for this in action.)

In general, it's extremely clear that the community's voice doesn't matter very much for Go's development, and those of us working with Go outside Google's walls just have to live with that. If we're very lucky, our priorities match up with Google's; if we're reasonably lucky, the Go core team and Google will decide that they care enough about our priorities to work on them. The good news is that Google and the Go core team do care (so far) about Go being a success in the outside world, not just inside Google, so they're willing to work on pain points.

(On the good and bad scale, there is a common feeling that Go has done well by having a small core team with good taste and a consistent vision for the language, a team that is not swayed by outside voices and is slow moving and biased to not making changes.)

PS: I like Go and have for a fair while now, and I'm basically okay with how the language has been evolving and how the Go core team has managed it. I certainly think it's a good idea to take things like generics slowly. But at the same time, how things developed around Go modules has left a bad taste in my mouth and I now can't imagine becoming a Go contributor myself, even for small trivial changes (to put it one way, I have no interest in knowing that I'm always going to be a second class citizen). I'll file bug reports, but that's it. The whole situation leaves me with ambiguous feelings, so I usually ignore it completely.

(And claims by the Go team that they really care about the community and want them to be involved now sound laughable. I'm sure they care, but only up to a certain point. I think that the Go core team should be bluntly honest about the situation, rather than pretend and implicitly lead people on.)

Sidebar: Google and the Go core team

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. If that works, especially if the majority of them no longer work for Google, then Go probably is their language, not Google's, in the same way that Python has always been Guido van Rossum's language regardless of who he worked for at the time.

On a practical level, it's undeniable that at the moment Google provides much of the infrastructure and resources to support Go, such as golang.org, and as a result owns the domain names and so on. Google also holds the trademarks on 'Go' as a programming language, per their trademarks list.

Comments on this page:

By DENIS at 2019-05-22 06:01:26:

Dep was discarded for a reason: it didn’t solve stable builds problem

By Bernd at 2019-05-22 10:28:29:

The same is true for Java. Nothing could be added to Java against Sun/Oracle.

By Fred Fnord at 2019-05-22 16:32:48:

Go is clearly Google's language, and as it becomes more and more popular they will start using it in the same way that they use all of their other products: as a tool to increase their market dominance.

This is the same thing that they did with Chrome's engine, except that they started with a community-created one (webkit), building enough popularity on top of that engine that when they forked it and started making it different from standards, they would be the one that web developers followed. (Hence all the web sites these days that only work properly on Chrome, even though their engine WAS based on the same one that Safari was and is based on.) And of course few of their fixes went back to the community-owned branch even when they were using it, and none of them do now.

If that's not a good enough example, think about the 'open source' nature of Android. And how the amount of Android that is open source shrinks with each release. And how they do all of the development of Android and then don't charge for it, solely to weaponize it against their competitors. (If Google were forced to actually charge what Android is worth to phone manufacturers, we would have at least another two solid competitors in the mobile OS space, and one of those would probably be a GOOD open-source privacy-oriented company. As it is, you just have to get an iPhone and trust Apple's assurances, because Google doesn't even bother to pretend that they value your privacy.)

Any product that is owned by Google WILL eventually be used against everyone but Google. Any product that Google discovers cannot be leveraged against its competitors or against consumers for profit will be discontinued. Sometimes this discontinuation is actually a move against their competitors: Google had a rather nice interface for flight search. They had a lot of companies using it, and actively advertised for more. And then, a year or two after they announced Google Flights as a competitor for a bunch of these companies, they abruptly discontinued it. It drove quite a few companies under. Google, of course, knew that Google Flights was coming for years beforehand. But they actively sold their flight information tool, so that when they came out with their own product they could produce a double whammy of a huge new competitor and a sudden cessation of vital data. Great way to destroy competition. May or may not be illegal under anti-trust laws governing vertical integration, but probably isn't. But it's still a real asshole move.

I will never trust Google for anything again. There is literally no other company, Microsoft included, that has acted with worse faith in this industry. I would sooner adopt Swift for backend programming than I would Go, for as long as Google owns it.

Which will be forever, because, as I said above, Google doesn't just let their projects roam free. They either weaponize them or shut them down. Or, just occasionally, both.

By Bill at 2019-05-23 13:28:32:

Rob Pike said the language is done here https://youtu.be/cQ7STILAS0M The language is locked down. The only reason generics are even considered is because of the community.

If you don't like it, fork it like this guy and call it something else.


I don't want it to be a breading ground of open contribution at will like npm. I would hate it then.

Especially after hearing this talk from Douglas Crawford making a career of describing the bad parts. https://youtu.be/99Zacm7SsWQ

Plus, php, JavaScript, c# ect new feature just happens now to be less features. I wonder what people are saying about that?

And I don't expect Rob Pike to pull a Guido van Rossum any time soon. Cause... It's done.

By Alex at 2019-05-23 18:09:24:

I personally don't care who owns Go tbh. It is their mindset which is bothering me so much. If you can achieve something with the language today, we don't need to improve it because Rob wouldn't like it. He says the language "is locked" and that's it! It doesn't matter if you have to write 10000 lines of ugly verbose code to make it happen! We wont improve it. Error handling, lambda, generics and the list goes on.

By Pressimist at 2019-05-24 03:42:03:

The people who are paid by Google work in the interest of Goolge. Thats's always the same everywhere. But anyone can create a fork and change what he wants. But you can't force anyone to like your own suggestions.

Did anyone really think Google would pay people to implement things against the interests of Google?

There is some discussion of this blog post on the golang-nuts mailing list at https://groups.google.com/d/msg/golang-nuts/6dKNSN0M_kg/rfb9qxB2BAAJ .

By Kevin Jame at 2019-05-25 05:11:49:

It sounds similar to the clojure "community".

Welcome to join the Val's language project Http://wiki.gnome.com/project/Val's

From at 2019-06-19 05:10:27:

Welcome to join the Vala language project Http://wiki.gnome.com/project/vala

Written on 22 May 2019.
« Understanding how to pull in labels from other metrics in Prometheus
On programming languages belonging (or not) to their community »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed May 22 01:24:28 2019
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.