Interesting public commentary on Go...

33,508 views
Skip to first unread message

lgo...@gmail.com

unread,
May 23, 2019, 9:18:25 AM5/23/19
to golang-nuts

B Carr

unread,
May 23, 2019, 12:30:08 PM5/23/19
to golang-nuts
I'm a hobbyist and make no money on the Go projects I write. This article seems a bit over-the-top, particularly Fred Fnord's comment. Doesn't Linus Torvalds have a stranglehold on the Linux kernel? Yet Linux flourishes.

Rather than complaining about Google (via Go) why don't these folks simply switch to Rust or some other language and press on?

Ian Lance Taylor

unread,
May 23, 2019, 1:59:57 PM5/23/19
to lgo...@gmail.com, golang-nuts
On Thu, May 23, 2019 at 9:18 AM <lgo...@gmail.com> wrote:
>
> https://utcc.utoronto.ca/~cks/space/blog/programming/GoIsGooglesLanguage

Thanks for the link. There is clearly a real sense in which Go is
Google's language. But I think I would like to emphasize some points
that don't necessarily contradict the blog post but may add some
nuance.

I'm a member of the Go team and I'm employed by Google. I'm speaking
exclusively for myself here, not for Google nor for the Go team.

I've worked on free software for my entire career, before I joined
Google and indeed before Google existed. I think it's fair to say
that Go is an open source language. All the source code, including
the source code for all the infrastructure support, is freely
available and may be reused and changed by anyone. For software the
most fundamental freedom is freedom to fork: freedom to take an
existing project in a new direction. People have that freedom with
the Go language. They don't necessarily have the freedom to call that
forked language "Go" (I'm not sure), but I think that limitation is
OK; it serves nobody to call different projects by the same name.

The blog post starts by quoting @kapoorsunny asking why there can't be
something like OpenGo, with a community implementation of generics. I
hope that it is clear that the answer is that there could be. Nothing
prevents that from happening. In particular, Google doesn't prevent
that from happening.

So when someone says that Go is Google's language, they must mean
something else.

For any free software project, there is a set of people who can commit
changes to the project. For the Go project, that is the set of people
who are on the approvers list, who can click the +2 button in Gerrit.
I don't think this list is publicly visible for anybody is not an
approver, but I just took a look. Since some people who work at
Google use their personal e-mail addresses I could have made a
mistake, but I count 59 Googlers on the committers list and 51
non-Googlers.

So while Google is the majority, it's not an overwhelming one. Again,
this can't be what it means to say that Go is Google's language.

A programming language is a type of shared software infrastructure.
It's most useful when everybody is using the same language, so code
written by person A can be reused by person B. That means that
programming languages are most useful when we all agree on exactly
what the language is. All successful languages have either a single
specification or a single primary implementation. (Go and C++ are
examples of language based on a specification; Perl, at least before
Perl 6, is an example of a language based on an implementation).
These serve as the definition of what the language is: whatever the
specification says or whatever the implementation does.

I think most people would agree to all of the above. Now some
opinion, where people may disagree.

If a language is to change over time, this specification or
implementation must change. Somebody has to decide how changes will
be made. All successful languages have a small set of people who make
the final decisions. Many people will provide input to this decision,
but no successful language--indeed, no successful free software
project of any sort--is a democracy. Successful languages pay
attention to what people want, but to change the language according to
what most people want is, I believe, a recipe for chaos and
incoherence. I believe that every successful language must have a
coherent vision that is shared by a relatively small group of people.

As I said, that is my opinion, but I think it's true. I would be
interested to hear of a counter-example.

Since Go is a successful language, and hopes to remain successful, it
too must be open to community input but must have a small number of
people who make final decisions about how the language will change
over time.

So, I think that when the blog post says that Go is Google's language,
what they mean is that Google makes those final decisions.

Now a bit of personal history. The Go project was started, by Rob,
Robert, and Ken, as a bottom-up project. I joined the project some 9
months later, on my own initiative, against my manager's preference.
There was no mandate or suggestion from Google management or
executives that Google should develop a programming language. For
many years, including well after the open source release, I doubt any
Google executives had more than a vague awareness of the existence of
Go (I recall a time when Google's SVP of Engineering saw some of us in
the cafeteria and congratulated us on a release; this was surprising
since we hadn't released anything recently, and it soon came up that
he thought we were working on the Dart language, not the Go language.)

Since Go was developed by people who worked at Google, it is
inevitable that the people who initially developed Go, who became the
core Go team, were Google employees. And it happens that of that core
Go team, while not all are actively working on Go, none have left
Google for another company in the years since.

I do think that due to Go's success there are now Google executives
who know about Go. Google as a company is doing more work with Go at
a higher level, supporting efforts like the Go Cloud Development Kit
(https://github.com/google/go-cloud). And, of course, Go is a
significant supporting element for major Google Cloud projects like
Kubernetes.

But (and here you'll just have to trust me) those executives, and
upper management in general, have never made any attempt to affect how
the Go language and tools and standard library are developed. Of
course, there's no reason for them to. Go is doing fine, so why
should they interfere? And what could they gain if they did
interfere? So they leave us alone.

In effect, then, the current state is what the blog post suggests at
the very end: final decisions about the Go language are made by the
core Go team, and the core Go team all work at Google, but there is no
meaningful sense in which Google, apart from the core Go team, makes
decisions about the language.

I do think that it will be interesting to see what happens if someone
on the core Go team decides to leave Google and but wants to continue
working on Go. And it will be interesting to see what the core Go
team, including me, decides to do about succession planning as time
goes on. Being a core Go team member is a full time job, and many
people who want to work on Go full time wind up being hired by Google,
so it would not be particularly surprising if the core Go team
continues to be primarily or exclusively Google employees. But even
then it's not clear that Go will be Google's language in any deep
sense. It's also possible that someday it will become appropriate to
create some sort of separate Go Foundation to manage the language. I
don't know. We'll have to see.

As I said initially, none of this necessarily contradicts anything in
the blog post, but perhaps it gives a slightly different perspective.

In this note I've specifically focused on whether Go is Google's
language. I have some thoughts on other aspects of the blog post,
about its discussion of the interaction between the core Go team and
the rest of the Go community, but this note is already too long.
Perhaps I will tackle those later. Or perhaps not, no promises.

Ian

Daniela Petruzalek

unread,
May 23, 2019, 2:47:27 PM5/23/19
to Ian Lance Taylor, lgo...@gmail.com, golang-nuts
I just want to thank Ian for taking the time to write this. I've already got the idea that it worked that way, but my own deduction process, but it's good to have a confirmation from inside.

When I started contributing to Go, whatever that means... talks, code, samples, etc... my first reaction about Go being open source was "hey, that's cool", but I didn't pay much attention to it. 

By the time I got more intimate to it, I started to learn what open source really meant, and got the impression that Go was "not so open source" after all... I felt that back then I was influenced by the community reaction to Google's "control" over the language, and how it was not listening to the demands of the crowd of having generics or better error handling or whatever...

Then I've matured a little bit more and started understanding the meaning of "no is temporary, but yes is permanent". I've also came to understand even more about open source... to the point now I know that having the code open doesn't mean you give up control of it. It's actually quite the opposite... just like you mentioned, it's not a democracy. If you are unhappy, fork it and make it work the way you want.

And finally, after coding Go for a while (and for the past 3 months professionally at last!), I came to the conclusion that the Go team is right in many ways. Today I don't see any necessity in generics, and every experience report out there with implementation proposals made me thank God many times for not having generics today. It defeats entirely the principles of simplicity and orthogonality that made Go so fun to write for me.

I feel that the problem is that the community doesn't really want to learn the "Go-way" of doing things, and instead they want to keep programming like they do in Java, JS, C++, python or any other language.

Me, on the other hand, I like to try different things... I remember the first time I've written C++ code after learning a functional language... having that different mindset helped me become better at a previous language. If I never studied functional language I would stay with the same idioms I knew originally. Likewise, Go has its own programming style, and I feel that when I go back to other languages now I'm better at them too. So it pays to learn to code things in different ways, that why I'm not bothered by writing non-generic code in Go. I'm just exercising a different part of the brain.

In the end, if the Go team makes a bad decision and Go stops being fun, it's just time to move on to a new thing. It's not the end of the world.

Daniela Petruzalek
Software Engineer


--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAOyqgcXdDcUKCzOaSbaCq466cxeO1KzsxAxgasabJma2XPkkxw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Sam Whited

unread,
May 23, 2019, 3:23:18 PM5/23/19
to jsonp via golang-nuts
Thank you for writing your reply Ian. Since it's a rather long post I
don't want to go through it point by point, but suffice it to say that I
agree with most of what you've written. However, I also agree that Go is
Google's language, and that in its current form this is a problem. I'm going to talk about two related but distinct probles here:

It's good to have strong central leadership, and I'm okay with that
leadership being employed by Google. The problem is that the Go team
doesn't always appear to be interested in listening to the rest of the
community. We saw this when the modules proposal was created and rushed
out without adequate community feedback; after the push back against
that the Go team promised to do better, but they're still putting out
proposals with little to no opportunity to make significant changes (eg.
the package sum proposal which was put out, and then almost immediately
merged, made into a release, and then made the default behavior).

This is especially a problem when these proposals further tie Go to
Google web services run by the Go team (though I'm veering off into a
separate problem here). To me this feels like it's almost a type of
vertical integration and it's an absolutely disgusting thing to do, and
I don't use that word lightly. Not because I think the Go team is
planning on doing anything bad with the information all Go users will
now be sending to them, or because I think Google executives are putting
down mandates and influencing Go, but because we don't know what future
Go team members or Google execs will do. We don't know who will be
running the Go project in 10 or 20 years, so the Go team now should be
making sure they limit the potential for abuse, especially when they
work for a company with a long history of anti- competitive behavior and
abuse of its size and power.

It's possible that my dissatisfaction with the proposal process is all
merely confirmation bias due to my extreme negative reaction to Go
communicating with Google-run web services that can't be used by large
portions of the world due to U.S. export laws, but I hope the Go team
will still take the feedback in the original link seriously and try to
change the process.

Sam Whited

unread,
May 23, 2019, 3:24:46 PM5/23/19
to jsonp via golang-nuts
I apologize for the rambling nature of this post; I somehow sent this
while working on a revision, I should really figure out what keyboard
shortcut I keep accidentally hitting to do that, especially when I
haven't toned down the language yet. Oh well, please pardon the lack
of polish.

—Sam
--
Sam Whited

Tom Mitchell

unread,
May 23, 2019, 3:26:45 PM5/23/19
to lgo...@gmail.com, golang-nuts
This makes a bit of sense from the Google point of view.

The central nut of a language under development is something that needs to be well managed. 
I have seen this with Modula-2 in the past as well as C++.  
Niklaus Wirth declined blessing a standard library for Modula-2 perhaps killing it as a market and
SGI an early adopter of C++ ended up with many man years of C++ library code that no longer 
compiled and run with a spin of the C++ revision dial outside of their control.

From the system design view the layers of code dare not look like spaghetti. 
At SGI a number of GFX libraries had symbols that allowed the entry to 
the black box internals of important GFX functions.  Improvements or changes to 
the internals of these black box functions for many reasons including new hardware 
broke a lot of internal and external code (internal symbols were stripped after this)

Hardware vendors have to protect their unimplemented instruction space.
Language designers need to managed the central nut of the language.
TeX has bounds  and a test suite if  your code is to be called TeX it must pass 
the test and all that.

Building code that runs reliably requires discipline and by way of
example is the constrained languages used by Knuth used to code TeX
(WEB).  And N.B.  that LaTeX is not part of TeX but is written in TeX.









On Thu, May 23, 2019 at 6:18 AM <lgo...@gmail.com> wrote:
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.


--
   T o m    M i t c h e l l

wilk

unread,
May 23, 2019, 4:16:21 PM5/23/19
to golan...@googlegroups.com
On 23-05-2019, Sam Whited wrote:
> Thank you for writing your reply Ian. Since it's a rather long post I
> don't want to go through it point by point, but suffice it to say that I
> agree with most of what you've written. However, I also agree that Go is
> Google's language, and that in its current form this is a problem. I'm going to talk about two related but distinct probles here:
>
> It's good to have strong central leadership, and I'm okay with that
> leadership being employed by Google. The problem is that the Go team
> doesn't always appear to be interested in listening to the rest of the
> community. We saw this when the modules proposal was created and rushed
> out without adequate community feedback; after the push back against
> that the Go team promised to do better, but they're still putting out
> proposals with little to no opportunity to make significant changes (eg.
> the package sum proposal which was put out, and then almost immediately
> merged, made into a release, and then made the default behavior).

I don't think the Go team doesn't listen to the community about modules,
quite the opposite technicaly speaking.

But i share your concern about proxy.golang.org being the default.
Because of privacy but also because it immediatly break private repos
and some country.

I believe it could be just fine if it's opt-in, specially that in the
alpha stage...

And thanks Ian for your writing. I'm every day surprise to see how a
language can fit at the same time a big compagny and an independant
developer ! scaling is that !

--
Wilk

Rob Pike

unread,
May 23, 2019, 5:41:27 PM5/23/19
to golang-nuts
The last sentence of the article is not correct. The name Go is not trademarked by Google, at least as a programming language trademark. There are other things Google makes called Go (an interesting signal on its own) and they might be trademarked, but Go the language is not a trademark.

-rob

Anthony Martin

unread,
May 23, 2019, 6:29:09 PM5/23/19
to Sam Whited, golan...@googlegroups.com
Sam Whited <s...@samwhited.com> once said:
> This is especially a problem when these proposals further tie Go to
> Google web services run by the Go team (though I'm veering off into a
> separate problem here). To me this feels like it's almost a type of
> vertical integration and it's an absolutely disgusting thing to do, and
> I don't use that word lightly. Not because I think the Go team is
> planning on doing anything bad with the information all Go users will
> now be sending to them, or because I think Google executives are putting
> down mandates and influencing Go, but because we don't know what future
> Go team members or Google execs will do. We don't know who will be
> running the Go project in 10 or 20 years, so the Go team now should be
> making sure they limit the potential for abuse, especially when they
> work for a company with a long history of anti- competitive behavior and
> abuse of its size and power.

How do you square this opinion with the fact that the Go team
went out of their way to enable the use of third-party module
proxies, something that is good for the community but would be
of little practical use to Google?

Anthony

Sam Whited

unread,
May 23, 2019, 6:30:50 PM5/23/19
to Anthony Martin, jsonp via golang-nuts
On Thu, May 23, 2019, at 22:28, Anthony Martin wrote:
> How do you square this opinion with the fact that the Go team went out
> of their way to enable the use of third-party module proxies,
> something that is good for the community but would be of little
> practical use to Google?

I'm certainly glad they did this, but most people will never change the
default options (or won't even know to change the options since this
behavior is silent) and the main proxy and sum file service is owned by
Google.

—Sam

lgo...@gmail.com

unread,
May 23, 2019, 8:50:22 PM5/23/19
to golang-nuts
Ian: I find many of your comments related to how the Go team functions very interesting,
I for one would find it helpful if 2 or 3 times a year the Go Team would communicate to the Go community at large, information related  to where and in what direction(s) it is taking Go, and what directions the team has decided NOT to take Go . 

I think the idea of a relatively small team of people deciding what Go will / will not morf into, is a sound one considering the what goes on within the C++ world,  

I also think it important that the Go team utilize some mechanism for screening input from the Go user community regarding changes / enhancements to the language, new packages etc.

An important measure of Go's value as a useful language is measured by the size of Go user community, which in my opinion is very much related what Go offers developers to make their life easier vs other languages.      

Gerald Henriksen

unread,
May 23, 2019, 8:51:05 PM5/23/19
to Rob Pike, golan...@googlegroups.com
The link provided in the blog post would seem to indicate otherwise.

If one scrolls down the list the following 2 entries are of interest:

Golang™ programming language
Go™ programming language

https://www.google.com/permissions/trademark/trademark-list/

Gerald Henriksen

unread,
May 23, 2019, 8:52:53 PM5/23/19
to golan...@googlegroups.com
On Fri, 24 May 2019 07:40:52 +1000, you wrote:

As a follow up, should make clear the fact that Google has trademarked
it is a good thing in my opinion for the community, as it prevents
somewhat else acting in a malicious manner and trademarking it and
forcing the community to change the name.

Pat Farrell

unread,
May 23, 2019, 10:24:41 PM5/23/19
to golang-nuts
On Thursday, May 23, 2019 at 9:18:25 AM UTC-4, lgo...@gmail.com wrote:

Before I became a GO nut, I did 20 years of commercial Java. I became a big fan of Google's Guava library.
Guava was open source, but was driven by Google's needs. Outside contributions were rare. I got used to it.

I wonder if being "community driven" is really a good thing. GO was invented by a tiny team with strict ideas. This is in strong contrast to Java or C++, which are bloated and overly complex languages.

There are times I'd rather not have something, say generics, rather than pollute the simplicity of the tool to add features that the community wants. IMHO, YMMV, etc. 

Rob Pike

unread,
May 24, 2019, 2:49:18 AM5/24/19
to Gerald Henriksen, golang-nuts
If that's true - and it might well not be - it's a surprise to me. When launching the language we explicitly made sure NOT to trademark it.

-rob

Lucio

unread,
May 24, 2019, 4:30:02 AM5/24/19
to golang-nuts
Well, the two enries are listed at the given URI, quite far apart and in the opposite order.

Could be a mistake or a bureaucratic glitch.

Lucio.

ste...@yakdata.com

unread,
May 24, 2019, 7:34:16 AM5/24/19
to golang-nuts
I am a consumer of Go. As far as I am concerned, it has been a wonder of modern computing. And I have been programming for almost 40 years.

As a cloud computing and data science polyglot, Go has become my go to language for systems control and critical web “glue” projects. It has been a joy to learn, with very little about it’s structure and syntax that made me scratch my head.

Most impressive is the efficiency, speed and scalability baked into this project. So whether the core team is at Google or not, the value of the core team originally being at Google in these areas is most apparent and appreciated.

Thank you to the many who created, evolve and maintain Go. Numerous people who likely will never comment here appreciate it. Of that I am confident.

Best regards,
Stephen McDaniel
Principal Data Scientist
YakData, LLC

Gerald Henriksen

unread,
May 24, 2019, 9:22:59 AM5/24/19
to golan...@googlegroups.com
On Fri, 24 May 2019 01:30:02 -0700 (PDT), you wrote:

>Well, the two enries are listed at the given URI, quite far apart and in
>the opposite order.

The list is alphabetical.

andrey mirtchovski

unread,
May 24, 2019, 10:40:56 AM5/24/19
to Rob Pike, golang-nuts
On Fri, May 24, 2019 at 12:49 AM Rob Pike <r...@golang.org> wrote:
>
> If that's true - and it might well not be - it's a surprise to me. When launching the language we explicitly made sure NOT to trademark it.
>

Go appears to be trademarked, as well as the new design of the Go
logo. Golang doesn't seem to be. Hopefully these links work:

http://tmsearch.uspto.gov/bin/showfield?f=doc&state=4801:7mlvuo.5.15
http://tmsearch.uspto.gov/bin/showfield?f=doc&state=4801:7mlvuo.5.14

Filing dates for both are August 2018, owner of the trademarks is Google.

Michael Jones

unread,
May 24, 2019, 11:52:08 AM5/24/19
to andrey mirtchovski, Rob Pike, golang-nuts
It is very good to have registered the marks to prevent abuse. Once owned, the owner then has the ability to share as freely as desired, but in a structured way (a la open source licenses) while holding questionable uses at bay.

In my work this kind of control has demonstrated its importance. In the creation of OpenGL ist SGI t was essential to have it mean something specific API and conformance wise; in inventing Google Earth and growing it and Google Maps to a billion unique monthly users it was important to control the brands, including Keyhole's KML which I gave to the OGC; now as a senior exec at Niantic, it seems more important than ever that Pokémon Go is a carefully controlled name and mark--every knock-off product seems to want to use our kind of "Go" as a marketing leverage (including "AR GO" from Google, a Niantic investor, sigh).

May be a surprise to the Go team, but not to Kent Walker...
Mark Image
Word MarkGO
Goods and ServicesIC 009. US 021 023 026 036 038. G & S: Computer programs and downloadable computer programs that implement a computer programming language for use in developing, building and managing other software. FIRST USE: 20091110. FIRST USE IN COMMERCE: 20091110
Standard Characters Claimed
Mark Drawing Code(4) STANDARD CHARACTER MARK
Serial Number88100955
Filing DateAugust 31, 2018
Current Basis1A
Original Filing Basis1A
Owner(APPLICANT) Google LLC LIMITED LIABILITY COMPANY DELAWARE 1600 Amphitheatre Parkway Mountain View CALIFORNIA 94043
Type of MarkTRADEMARK
RegisterPRINCIPAL
Live/Dead IndicatorLIVE


Mark Image
Word MarkGO
Goods and ServicesIC 009. US 021 023 026 036 038. G & S: Computer programs and downloadable computer programs that implement a computer programming language for use in developing, building and managing other software
Mark Drawing Code(3) DESIGN PLUS WORDS, LETTERS, AND/OR NUMBERS
Design Search Code26.17.01 - Bands, straight ; Bars, straight ; Lines, straight ; Straight line(s), band(s) or bar(s)
26.17.06 - Bands, diagonal ; Bars, diagonal ; Diagonal line(s), band(s) or bar(s) ; Lines, diagonal
Serial Number88100957
Filing DateAugust 31, 2018
Current Basis1B
Original Filing Basis1B
Owner(APPLICANT) Google LLC LIMITED LIABILITY COMPANY DELAWARE 1600 Amphitheatre Parkway Mountain View CALIFORNIA 94043
Description of MarkColor is not claimed as a feature of the mark. The mark consists of the stylized word GO with three small lines to the left of the word.
Type of MarkTRADEMARK
RegisterPRINCIPAL
Live/Dead Indicator

--
Michael T. Jones
michae...@gmail.com

Space A.

unread,
May 24, 2019, 4:36:39 PM5/24/19
to golang-nuts
Hi Pat,

I also have some (quite a lot) years of Java, and absolutely agree with everything you said.

And +1 to Ian's opinion on how free software projects must be driven.

Axel Wagner

unread,
May 27, 2019, 1:35:31 AM5/27/19
to Ian Lance Taylor, golang-nuts
This is a bit of an aside, I agree with everything Ian said, but:

On Thu, May 23, 2019 at 7:59 PM Ian Lance Taylor <ia...@golang.org> wrote:
If a language is to change over time, this specification or
implementation must change.  Somebody has to decide how changes will
be made.  All successful languages have a small set of people who make
the final decisions.  Many people will provide input to this decision,
but no successful language--indeed, no successful free software
project of any sort--is a democracy. 
Successful languages pay
attention to what people want, but to change the language according to
what most people want is, I believe, a recipe for chaos and
incoherence.  I believe that every successful language must have a
coherent vision that is shared by a relatively small group of people.

As I said, that is my opinion, but I think it's true.  I would be
interested to hear of a counter-example.

I also believe that every successful free software project has a small set of final deciders, but I don't think it's correct to say that thus, no successful free software project is a democracy. Representative democracy is still democracy - and indeed, any modern democracy I'm aware of, is a representative one. And Debian is undeniably successful and very easily defended to be a representative democracy. There is a limitation on voting rights (only Debian Developers can vote), but it's akin to the limitation of passports and the set of Debian Developers is hardly "small".

This just as a specific counter because you asked for counter examples :) Personally (opinion!), I tend to think that it rather supports your larger point of democratic software development being a recipe for chaos and incoherence - but YMMV of course.
 
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.

Space A.

unread,
May 27, 2019, 3:45:07 AM5/27/19
to Axel Wagner, Ian Lance Taylor, golang-nuts
Debian users vote for someone to become Debian Developer and give him right to vote? If no, how can it be "representative"?


пн, 27 мая 2019 г. в 08:35, 'Axel Wagner' via golang-nuts <golan...@googlegroups.com>:
You received this message because you are subscribed to a topic in the Google Groups "golang-nuts" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/golang-nuts/6dKNSN0M_kg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to golang-nuts...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfFhOF0kiNsUfZkMc71SoJ8M5Y2Rqx1TnG9Yhc5aORMXBA%40mail.gmail.com.

Axel Wagner

unread,
May 27, 2019, 4:09:42 AM5/27/19
to Space A., Ian Lance Taylor, golang-nuts
The actual organizational structure of Debian is pretty complex. You can think of Debian Developers (DD) as "people who can submit to Debian" (so the people with approval rights in gerrit, in analogy to the Go project). The people who steer the project and are final deciders on Debian (so the "core Go team" from Ian's message) are the Debian Project Leader (DPL) and the Technical Committee (TC) (with different responsibilities).

The process to become a DD is based on contribution and some endorsement from existing DDs and it's very open. The DDs then elect representatives for the roles of DPL and TC. They can also push General Resolutions, which every DD votes on.
So, in analogy to a modern democracy, DDs would be "citizens" and the DPL and TC are "the government" and the Debian project combines elements of representative democracy (by electing "the government") and direct democracy (via General Resolutions).

Anyhow, I didn't want this to become a discussion of Debian organizational structure. Anyone interested in it can probably google around a bit and there are far more qualified people than me to talk about it. I just think it provides a decent example of how a democratic and successful open source project could look. And that, IMO, it's a negative example (but YMMV).

Matt Farina

unread,
May 27, 2019, 3:16:16 PM5/27/19
to golang-nuts
This whole conversation illustrates the difference between open source and open governance. Go is open source but the governance is controlled by Google. This compares to something like Kubernetes that is both open source and open governance.

Should Go be open governance? It sounds like this is a question some want to discuss. Open governance is just a different topic than open source.

Liam

unread,
May 27, 2019, 3:31:22 PM5/27/19
to golang-nuts
I filed an issue requesting that the Go team issue RFPs to both communicate directions they plan to go in, and solicit community input about them. It was declined.

proposal: Go 2: establish RFP/RFC process for language feature proposals

Part of my reasoning was that the Go 2 Error Handling Draft Design lacked a discussion of "requirements". IMHO a well-developed set of requirements (and revised with community input) would have been more valuable than a design proposal which fulfills unspecified requirements.

Ian Lance Taylor

unread,
May 27, 2019, 4:03:55 PM5/27/19
to lgo...@gmail.com, golang-nuts
On Thu, May 23, 2019 at 8:50 PM <lgo...@gmail.com> wrote:
>
> Ian: I find many of your comments related to how the Go team functions very interesting,
> I for one would find it helpful if 2 or 3 times a year the Go Team would communicate to the Go community at large, information related to where and in what direction(s) it is taking Go, and what directions the team has decided NOT to take Go .
>
> I think the idea of a relatively small team of people deciding what Go will / will not morf into, is a sound one considering the what goes on within the C++ world,
>
> I also think it important that the Go team utilize some mechanism for screening input from the Go user community regarding changes / enhancements to the language, new packages etc.
>
> An important measure of Go's value as a useful language is measured by the size of Go user community, which in my opinion is very much related what Go offers developers to make their life easier vs other languages.

Thanks for the note. We do try to communicate plans for the language
and standard library packages, broadly on the Go blog and more
specifically on the golang-dev mailing list. E.g.,
https://blog.golang.org/go2draft,
https://blog.golang.org/go2-here-we-come .

Naturally it's a lot harder to say which directions the team has
decided not to take Go. One way to see that is to follow the issue
tracker for bugs marked Go2
(https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Ago2).
That is a list of changes either rejected or still being considered.
Of course, a rejected issue doesn't always mean that some similar
change will not be adopted; sometimes it only means that that
particular change is rejected, but a different, better change that
addresses the same problems might still be accepted. I don't really
see a benefit to a broader announcement of ideas that we aren't going
to do. For one thing, it might change.

In general we are always interested in hearing new proposals for
changes, using the proposal process described at
https://golang.org/s/proposal. Of course, before writing a new
proposal, it helps to look to see whether there are similar previous
proposals.

Ian

Ian Lance Taylor

unread,
May 27, 2019, 4:04:59 PM5/27/19
to Axel Wagner, golang-nuts
On Mon, May 27, 2019 at 1:35 AM Axel Wagner
<axel.wa...@googlemail.com> wrote:
>
> This is a bit of an aside, I agree with everything Ian said, but:
>
> On Thu, May 23, 2019 at 7:59 PM Ian Lance Taylor <ia...@golang.org> wrote:
>>
>> If a language is to change over time, this specification or
>> implementation must change. Somebody has to decide how changes will
>> be made. All successful languages have a small set of people who make
>> the final decisions. Many people will provide input to this decision,
>> but no successful language--indeed, no successful free software
>> project of any sort--is a democracy. Successful languages pay
>> attention to what people want, but to change the language according to
>> what most people want is, I believe, a recipe for chaos and
>> incoherence. I believe that every successful language must have a
>> coherent vision that is shared by a relatively small group of people.
>>
>> As I said, that is my opinion, but I think it's true. I would be
>> interested to hear of a counter-example.
>
>
> I also believe that every successful free software project has a small set of final deciders, but I don't think it's correct to say that thus, no successful free software project is a democracy. Representative democracy is still democracy - and indeed, any modern democracy I'm aware of, is a representative one. And Debian is undeniably successful and very easily defended to be a representative democracy. There is a limitation on voting rights (only Debian Developers can vote), but it's akin to the limitation of passports and the set of Debian Developers is hardly "small".
>
> This just as a specific counter because you asked for counter examples :) Personally (opinion!), I tend to think that it rather supports your larger point of democratic software development being a recipe for chaos and incoherence - but YMMV of course.

Thanks. That's an interesting counter-example. I do tend to think of
distros somewhat separately from more focused free software projects,
but I probably shouldn't.

Ian

Axel Wagner

unread,
May 27, 2019, 4:28:21 PM5/27/19
to Matt Farina, golang-nuts
On Mon, May 27, 2019 at 9:16 PM Matt Farina <matt....@gmail.com> wrote:
This whole conversation illustrates the difference between open source and open governance. Go is open source but the governance is controlled by Google. This compares to something like Kubernetes that is both open source and open governance.

I'm not sure whether I agree with this characterization. There is, AFAIK, approximately no codified process in the Go project that would single out Google or Google Employees. To a degree, that's because there aren't that many codified processes and the ones there are, are kept a bit vague (in favor of a consensus-driven culture). But also, I'd argue, because the process isn't actually that closed.

Ian outlines several reasons why it isn't - and why it might appear that way nevertheless.
But if, hypothetically, Google would successfully hire anyone doing core-team-level work on Go and if, hypothetically, anyone working on Go would immediately lose interest once they don't work at Google anymore, you'd end up in a world where a) anyone in the Go team works at Google, but b) I would find it hard to claim the governance isn't open, as anyone can just do the necessary level of work and become part of the Go team. Just like in an "open governance" model. i.e. you'd end up with "you work at Google because you are a decider for Go", not with "you are a decider for Go because you work at Google".

So, the question is how far these hypotheticals deviate from reality. And that's just hard to talk about in any founded way, because we don't have a lot of obvious examples of people either not accepting an offer to work on the Go team fulltime *or* quitting Google and then stopping (or not stopping) to be on the Go team.

Now, there are some ways in which processes are more or less Googler-specific. AIUI the proposal review meeting is internal only, for example. But AIUI, no one has yet excluded the possibility of opening that up to non-Googlers who are still qualifying… i.e. it's not *codified* as being Googler-specific, it just never came up that a non-Googler qualified for an invite.

Anyway, as I said: I genuinely don't know whether I'd consider Go open governance or not. But, TBQH, the assertion that it's *not* should at least address why Ian's points aren't convincing (because in its essence, that question is *exactly* what he was debating pretty in-depth).

Should Go be open governance? It sounds like this is a question some want to discuss. Open governance is just a different topic than open source.

--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.

Wojciech S. Czarnecki

unread,
May 27, 2019, 4:41:32 PM5/27/19
to golan...@googlegroups.com
On Mon, 27 May 2019 12:31:22 -0700 (PDT)
Liam <networ...@gmail.com> wrote:

Rust was irreparably damaged by delivering custom painted ponies to the
most vocal and enough stubborn "representatives of the whole community".
I personally wishes Go team will guard the future of Go free from such fate,
as they did for past years.

> a well-developed set of requirements (and revised with community input)
> would have been more valuable than a design proposal which fulfills
> unspecified requirements.

Then ones who abode to guidelines and requirements would **demand**
that someone at Google should immediately implement their proposal
'because it was much work to made this proposal in line with RFC process'.

Unlike many other open sourced projects the Go compiler and tools are self
contained and produce working set from a single script call.

So now my opinion is that the only real way of proposing changes to
Go is with one's work: git clone, git checkout -b quipintedpony, work, test,
**document**, **explain why and what** then post ANNounce.
Let community (and the dev-team) really see merit in your proposal.

P.S. My personal feeling (I am on this list from pre 1.0 IIRC) is that Go team
listen, read, then take the very nut of one or more proposals and either improve
on it or — on the way — they come to the other solution that learns from
proposal's shortcomings. See dev list archive around GC improvements.

TC,

--
Wojciech S. Czarnecki
<< ^oo^ >> OHIR-RIPE

Matt Farina

unread,
May 27, 2019, 7:08:16 PM5/27/19
to Axel Wagner, golang-nuts

I'm not sure whether I agree with this characterization. There is, AFAIK, approximately no codified process in the Go project that would single out Google or Google Employees. To a degree, that's because there aren't that many codified processes and the ones there are, are kept a bit vague (in favor of a consensus-driven culture). But also, I'd argue, because the process isn't actually that closed.

Three things I've considered:

1) when a company runs a project without much publicly documented process but does as they choose, isn't that a sign of a company run project?
2) The go team at Google has had processes that are not public. One example is the proposal review process. There has long been a group at Google that decides these. For a long time this wasn't documented publicly but happened. The public documentation on it came after the decision on go modules.
3) how has no one outside of Google qualified for the core team and why aren't more companies who are heavy users in on owning it? I've heard stories (not mine to share) of more outside engagement not happening for Go.

I'm not nocking on Google for doing what they do. It's a business decision. I get it and I can understand a climate where it might change. I'm just trying to be aware of what's happening.

I do sometimes wonder what the small decision making core team would look like with people from multiple companies with differing concerns on it. But, that's just wondering.

I use Go. Gonna start something new in go soon, too.

--
Matt Farina

Go in Practice - A book of Recipes for the Go programming language.

Code Engineered - A blog on cloud, web, and software development.

Axel Wagner

unread,
May 27, 2019, 8:18:38 PM5/27/19
to Matt Farina, golang-nuts
On Tue, May 28, 2019 at 1:08 AM Matt Farina <matt....@gmail.com> wrote:
Three things I've considered:

1) when a company runs a project without much publicly documented process but does as they choose, isn't that a sign of a company run project?

Ian mentioned that "Google" as a company doesn't actually choose to do a lot. The Go team is largely autonomous in their decision making and isn't being influenced by executives.
So, to put it another way: If the only role the company plays is to provide paychecks to some Go developers, does it actually exercise or have any significant level of ownership?
 
2) The go team at Google has had processes that are not public. One example is the proposal review process. There has long been a group at Google that decides these. For a long time this wasn't documented publicly but happened. The public documentation on it came after the decision on go modules.

Note that the documentation still says "some members of the Go team". Not "the Google-employed members of the Go team" (i.e. not everyone at Google has access to those meetings) and not "a Google-internal set of people" (i.e. people outside Google aren't categorically excluded from them).

A charitable interpretation of this might be that some members of the Go team started, at some point, to semi-regularly meet informally to churn through the proposals. As it was informal and as everyone involved was working at the same company and was paid for this work, it made sense to do so during business hours in a meeting room at the office. When a project came up that was driven by people outside of Google, the need arose to specify better how proposals are reviewed and decided on, so the previously informal or semi-formal meeting was codified.

Personally, I don't see how this charitable interpretation would contradict claims that any process can be opened to people outside of Google when the need arises. On the contrary, it seems to confirm that; after all, the meeting was formalized and publicized based on the need of including outsiders in the process.
 
3) how has no one outside of Google qualified for the core team

I don't think this is true at all. There are several people who got hired into the Go team from outside of Google directly. See above hypothetical (and Ian's point): Google tends to try to hire people they think are qualified to work on Go. And it tends to succeed.

Seems a pretty reasonable answer to that question.
 
and why aren't more companies who are heavy users in on owning it?

As a concrete example: Cloudflare pretty heavily uses Go. When a cloudflare-employee started stepping up to work more and more on the Go crypto stack, they got hired by Google to do it fulltime. At least from the outside, that seems to what happened with Filippo Valsorda.

So, again, the explanation Ian gave seems pretty reasonable: Doing core work on Go is a fulltime job, Google seems willing to foot the bill for that fulltime job and people seem willing to let them.

Matt Farina

unread,
May 27, 2019, 9:17:21 PM5/27/19
to golang-nuts

Ian mentioned that "Google" as a company doesn't actually choose to do a lot. The Go team is largely autonomous in their decision making and isn't being influenced by executives.
So, to put it another way: If the only role the company plays is to provide paychecks to some Go developers, does it actually exercise or have any significant level of ownership?
 

I see a couple ways to look at the Go team. One is as a team that is independent of Google and is staffed with people who work at Google. The other is as a department within Google. As Google owns the trademark, Go sites are under the Google policies, only Google employees are on the team, there have been internal processes that are not public, and the governance isn't documented publicly I'm led down the road of it being a department withing Google. Like the GMail team is an organization within Google.

Then there is the issue of ownership, which provides the right of control. When it comes to this, I'm not entirely clear. I happy to believe Ian that senior execs have not exercised control over the project. That doesn't mean Google doesn't own the project. Has it relinquished it's right to control? Have the Googlers on the Go team relinquished control to members in the community? Google engineers have retained control including Russ who is a Principal Engineer (exec level?).

When I say I'm not clear that's because I'm reminded of a Steve Francia talk at a DrupalCon recently. He talked about Go and the community structure. What he would like to see. I don't see that happening in the community or with the Go team. I'm not sure of the relationship of the Go team to the community or the ongoing intent. For reference, the video is up at https://www.youtube.com/watch?v=EJo9tPXGPo8
 
2) The go team at Google has had processes that are not public. One example is the proposal review process. There has long been a group at Google that decides these. For a long time this wasn't documented publicly but happened. The public documentation on it came after the decision on go modules.

Note that the documentation still says "some members of the Go team". Not "the Google-employed members of the Go team" (i.e. not everyone at Google has access to those meetings) and not "a Google-internal set of people" (i.e. people outside Google aren't categorically excluded from them).

The Go team is only made of Googlers. Why is that? What does one need to do to join the Go team and not be at Google? None of this is publicly available knowledge. It's currently treated as a department within Google.
 
 
3) how has no one outside of Google qualified for the core team

I don't think this is true at all. There are several people who got hired into the Go team from outside of Google directly. See above hypothetical (and Ian's point): Google tends to try to hire people they think are qualified to work on Go. And it tends to succeed.

So, to join the Go team one needs to be hired into Google? So, Red Hat (as an example) can't have someone on staff who is on the Go team? That kinda speaks to the point that this is a Google project. If it wasn't someone from Microsoft, Red Hat, or one of the many other companies who are invested in Go could be on the core team without going to be employed by Google.
 

As a concrete example: Cloudflare pretty heavily uses Go. When a cloudflare-employee started stepping up to work more and more on the Go crypto stack, they got hired by Google to do it fulltime. At least from the outside, that seems to what happened with Filippo Valsorda.

That's fantastic. This shows some open source in action. It also highlights that this isn't open governance. If it did, Filippo joining the core team would have been a separate event from joining Google.


So, again, the explanation Ian gave seems pretty reasonable: Doing core work on Go is a fulltime job, Google seems willing to foot the bill for that fulltime job and people seem willing to let them.

I bet there are others who are willing for foot the full time bill for core Go work. The current state of things doesn't allow for that.

If this sounds like I'm arguing for open governance, that wasn't my intent. I'm just trying to continue the point that kicked all of this off. The Go is Google's project. It does not have open governance. If this is ok or not is an exercise for others to make.
 

Russ Cox

unread,
May 28, 2019, 11:53:09 AM5/28/19
to Matt Farina, Axel Wagner, golang-nuts
On Mon, May 27, 2019 at 7:08 PM Matt Farina <matt....@gmail.com> wrote:
1) when a company runs a project without much publicly documented process but does as they choose, isn't that a sign of a company run project?
2) The go team at Google has had processes that are not public. One example is the proposal review process. There has long been a group at Google that decides these. For a long time this wasn't documented publicly but happened. The public documentation on it came after the decision on go modules.

This is demonstrably false. We launched the proposal process at Gophercon in 2015, well before modules. We did it explicitly to open the process of contributing ideas - as opposed to code - and make it more accessible to new contributors. You can see the full commit history of the process description online. I tried to streamline the doc to make it more approachable in 2018, but I did not make semantic changes in that edit.

3) how has no one outside of Google qualified for the core team and why aren't more companies who are heavy users in on owning it?

It's unclear what you mean by "core team." If you mean the set of people who can approve (+2) and submit code changes, then as Ian said, there are more people outside Google than inside Google at this point.

On Mon, May 27, 2019 at 9:17 PM Matt Farina <matt....@gmail.com> wrote:
As a concrete example: Cloudflare pretty heavily uses Go. When a cloudflare-employee started stepping up to work more and more on the Go crypto stack, they got hired by Google to do it fulltime. At least from the outside, that seems to what happened with Filippo Valsorda.

That's fantastic. This shows some ope