On Thu, May 23, 2019 at 9:18 AM <lgod...@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 -- 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+unsubscr...@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.