Hello everyone, I am fried fish.
I have a friend who has heard about various games and various domestic cloud products in recent years, and the "localization" of various enterprises has been mentioned on the table, and it is clear that they want to do such things.
As a contemporary programming language, the Go language is often said to be endorsed by Google when it is promoted:
Then here comes the problem!
Assuming some conflicts, will the Go language be completely controlled by Google and form a monopoly ?
Today, Jianyu will join you to understand the personal attitude and operation of the development team of the Go language.
has been discussed
In 2019, some people complained about the community flexibility and autonomous control of the Go language on twitter because of Go generics. Hope to be able to implement an OpenGo like OpenJDK for Java.
as follows:
Want the community to implement generics themselves instead of waiting for the official team to do it. From the real situation, in fact, there are already projects similar to OpenGo in the community, as follows:
- albrow/fo : Implemented functional programming features, last commit in 2019.
- goodlang/good : Support pulling PRs from GitHub, last commit was 2016.
- tinygo-org/tinygo : Embedded programming, Go compiler developed with LLVM for microcontrollers, WebAssembly (Wasm), command line tools, etc.
- cosmos72/gomacro : Interactive Go interpreter and debugger with generics and macros, last commit June 2021.
In the open source community, in terms of the number of OpenGo projects and the submission history of the projects, there is no very strong demand, the activity is not high, and it may not be 100% necessary.
In the enterprise, a "customized" version exists. Individual enterprises maintain their own copy of Go, and some functional changes will be made, such as modifying the Go runtime. However, these functions are not necessarily universal, and are subject to internal review and compliance before being made public.
gunpowder smoke
After the aforementioned twitter, a blogger Chris Siebenmann expressed a more violent opinion on the Go language, publishing a critical article " Go is Google's language, not ours ".
The article mentions that "Go is Google's language, not the community's". An important case is cited, which is Go module dependency. At that time, the Go community was leaning towards Dep in the early years, and the official team also gave a lot of communication.
Since Russ Cox strongly promoted Go modules (predecessor vgo) at that time, it caused a lot of controversy and discussion in the community, which was used as the basis for this attitude.
That is: "Building consensus in the community is far less important than convincing the Go core team if some important feature is to be accepted by Go".
After sorting, the core basis has three points, which are as follows:
- The voice of the community is not important to Go development. For example: the history of Go modules (actually Dep is controversial...).
- The Go core team is all hired by Google, the features of Go are finally established by the Go core team, and Go can only be theirs when they no longer work for Google (can't be sure who belongs to).
- Go trademarks, etc. are owned by Google. For example: https://golang.org domain name belongs to Google.
These are the reasons why the author believes that the Go language is controlled by Google.
official reply
Obviously the official Go team has heard the voice of the community, and several core members participated in the discussion in " Interesting public commentary on Go... " in golang-nuts.
Mainly for Russ Cox and Ian Lance Taylor, they gave a lot of lengthy answers, which are extremely rare in all communication at ordinary times, affirming the idea of Go language and community co-construction and openness.
It mainly involves the following aspects:
- Go code is open source.
- Go is not controlled by Google.
- The case of Go committers.
- Go community communication.
Code is open source
In fact, Ian Lance Taylor believes that Go language is indeed the open source , and has the following arguments:
- All source code is open: including all source code, all infrastructure-supported source code, is freely available and can be reused and modified by anyone.
- Freedom to push in new directions: The most fundamental freedom for software is the freedom to fork. The freedom to push an existing project in a new direction, aka OpenGo.
Not controlled by Google
There is a clear objection to the claim that "Go is Google's language", which means "Google makes the final decision on various language decisions".
Since Go was developed by people who worked at Google, the people who originally developed it inevitably included people at Google, and no one in the core team has left Google to go to other companies, so there are many Google employees in the core team. Phenomenon.
There are more people who can Approve (approve) in the Go project than non-Googlers .
The Go language is Google's, you can expand it to see:
- Arguably "yes", he was really developed while at Google by people who worked at Google.
- It can be said "wrong", because the community also has many people with Approve power, and the Go project is very diverse.
It depends on how you understand and define this concept.
What is Google's role
Russ Cox explicitly answers this question in " Go, Open Source, Community ". Google's role is constantly changing as the Go language continues to evolve.
as follows:
- Before open source release: Google paid for all Go development.
- After the open source release: Many Go developers started to contribute their development time to participate in the development of the Go language.
Mainly supporting the Go community, coordinating, making sure changes work better together, keeping Go true to the original vision, and funding Go development efforts.
Funding more is like sponsoring open source products. Just like Amazon announced its sponsorship of Rust language development two years ago.
Submitter's situation
In the early years of statistics, with CONTRIBUTORS as the benchmark data and email as the statistical dimension, the list of Go submitters has also changed significantly.
The numbers are compared as follows:
- In 2019: 59 Googlers and 51 non-Googlers. Google has the majority.
- In 2021: 309 Googlers, 2426 non-Googlers. Non-Googlers are in the majority.
In 2019, the two were basically flat.
In 2021, the number of developers who are already non-Google contributors will increase, which is enough to show that the community is open to a certain extent.
In 2022, theoretically there will be more.
community communication
In my observation, in Go issues, proposal, golang-nuts, golang-dev, gophers slack medium channel.
People on the Go core team frequently check community feedback and exchanges to better listen to the community's opinions.
In golang tools monthly calls, mailing lists, and Slack channels are open to all, with minutes and recordings of meetings.
Those who are interested can attend and study regularly to contribute to the development of the Go language.
At the Go Commiter level, there are regular exchange meetings every year, and a lot of information can be obtained. I've heard it from Ou Shen before, and it's still interesting.
realistic thinking
In fact, any open source product will have its own core team. In all product design, thousands of people are always different. If anyone can join in, the product will quickly become a "big ball of mud" and end in failure.
Looking forward to today's open source world, many products were initially developed by individuals, and subsequently received a lot of sponsorship, or started a company, and then continued to operate.
There are also many concerns that GitHub does not allow certain software code to be used.
In fact, the creator's open source license is allowed. Some companies will back up more domestically, or fork a copy early for development and re-build a shell.
This avoids extreme situations.
Summarize
After our reading and analysis, it is not difficult to see. The core team of the Go language is very welcome to the community to build and communicate, and has made practical actions.
In their understanding, the Go project is not absolutely controlled by Google (expressed against this statement), and management has not given them any requirements. On the contrary, Google has provided a lot of funding, but also to promote better coordination of the Go project.
I think that individual messages are more or less incomprehension and disagreement with the design philosophy of the Go language, and some different voices are formed. This is actually a good thing for the development of the Go language.
What do you think of the development of the Go language and the positioning of Google , welcome to communicate and discuss :)
If you have any questions, please feedback and exchange in the comment area. The best relationship between is to achieve with each other. Your likes is the biggest motivation for Fried Fish create, thank you for your support.
The article is continuously updated, you can read it on WeChat search [brain fried fish], this article GitHub github.com/eddycjy/blog has been included, to learn Go language, you can see Go learning map and route
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。