大家好,我是炸鱼。我有一个朋友。这几年听说各种游戏、各种国产云产品都在发力,各种公司的“本土化”都被摆上台面,很明显他们会做这样的事情。Go语言,作为当代编程语言的风口,在打广告的时候经常说是谷歌背书:所以问题来了!假设有一些冲突,Go语言会不会被谷歌完全控制,形成垄断?今天建宇就和大家一起了解Go语言开发团队的个人态度和运作。早在2019年,就有人在twitter上抱怨Go语言的社区灵活性和自主可控性,因为Go的泛型。我希望实现一个像Java的OpenJDK那样的OpenGo。如下:我希望社区自己实现泛型,而不是等着官方团队去做。从真实情况来看,其实社区已经有类似OpenGo的项目,如下:albrow/fo:实现了函数式编程的特性,最后一次提交是在2019年。goodlang/good:支持从GitHub上拉PR,最后一次提交是在2016年。tinygo-org/tinygo:嵌入式编程,结合LLVM开发的微控制器Go编译器、WebAssembly(Wasm)、命令行工具等。cosmos72/gomacro:InteractiveGointerpreteranddebuggerwithgenericsandmacros,lastcommitJun2021.在开源社区中,从OpenGo项目数量和项目提交历史来看,没有很强的吸引力,活跃度不高,不一定100%需要。在企业中,存在“定制”版本。个别企业维护自己的Go副本,部分功能会发生变化,如:修改Go运行时。但这些功能不一定是通用的,需要内部审核合规后才能公开。在上述推特之后,博主ChrisSiebenmann对Go语言发表了更猛烈的看法,发表了一篇批判文章《Go is Google's language, not ours》。文章提到“Go是Google的语言,而不是社区的”。举了一个重要的案例,就是Go的模块依赖。当时Go社区早年是偏向Dep的,官方也给了很多交流。由于RussCox极力宣传Gomodules(前身为vgo),在社区引起了很大的争议,并被作为这种态度的依据。即:“如果你想让Go接受一些重要的特性,那么在社区中建立共识远不如说服Go核心团队重要”。经过梳理,核心基础有以下三个:社区的声音对围棋的发展并不重要。示例:Go模块的历史(实际上Dep是有争议的......)。Go核心团队被谷歌聘用,Go的特性最终由Go核心团队建立。只有当他们不再为谷歌工作时,Go才可能是他们的(不确定谁属于他们)。Go商标等归谷歌所有。例如:https://golang.org域名归谷歌所有。以上就是笔者认为Go语言被谷歌控制的原因。官方回复显然Go官方团队已经听到了社区的声音,在golang-nuts的《Interesting public commentary on Go...》几位核心成员参与了讨论。主要是针对RussCox和IanLanceTaylor,做了很多长篇的回答,这在所有的交流中都是极其罕见的,肯定了Go语言和社区的共建和开放的理念。主要涉及以下几个方面:Go代码是开源的。Go不受谷歌控制。Go提交者的案例。去社区交流。代码开源事实上,IanLanceTaylor认为Go语言确实是开源的。他有以下论点:所有源代码都是开放的:包括所有源代码和基础设施支持的源代码,都是免费提供的。任何人都可以重复使用和修改。推动新方向的自由:对于软件来说,最基本的自由是分叉的自由。将现有项目推向新方向的自由,即OpenGo。并不是说Google控制明确反对“GoisGoogle'slanguage”的说法,意思是“Google对所有语言的决定做出最终决定”。由于Go是由在Google工作的人开发的,因此最初的开发人员不可避免地包括Google的人,并且核心团队中没有人离开Google去其他公司,因此核心团队中有很多Google员工。现象。Go项目中能够Approve(批准)的非Google人员比Google内部人员还多。Go语言是谷歌所有的,我们可以展开来看:可以说是“是”,确实是在谷歌的时候在谷歌工作的人开发的。可以说是“错”了,因为社区中拥有Approve权限的人非常多,Go项目更是五花八门。这取决于你如何理解和定义这个概念。Google在《Go, Open Source, Community》中的作用是什么RussCox清楚地回答了这个问题。Google在Go语言的不断发展中扮演的角色也在不断变化。如下:开源发布前:Google为所有Go开发支付了资金费用。开源后:许多Go开发者开始贡献自己的开发时间,参与到Go语言的开发中。主要是支持Go社区,协调,确保变化更好地协同工作,保持Go忠实于其最初的愿景,并资助Go开发工作。资助更像是对开源产品的赞助。就像两年前亚马逊宣布赞助Rust语言的开发一样。早年统计提交者情况,以CONTRIBUTORS为基准数据,以email为统计维度,Go提交者名单也发生了较大变化。以下是数字比较:2019年:59名谷歌员工和51名非谷歌员工。谷歌有很多人。2021年:309名谷歌员工,2426名非谷歌员工。大多数不是谷歌人。2019年,两者大致持平。2021年,已经有更多非谷歌开发者的贡献,足以说明社区在一定程度上是开放的。到2022年,理论上会有更多。社区交流是基于我的观察,在Goissues、proposals、golang-nuts、golang-dev、gophersslack等渠道。Go核心团队的人经常查看社区的反馈和交流,以便更好地听取社区的意见。在golang工具中,月度电话、邮件列表和Slack频道对所有人开放,有会议记录和录音。有兴趣的可以定期上去参与学习,为Go语言的发展贡献一份力量。在GoCommiter级别,每年都会定期召开交流会,可以获取到很多信息。以前听欧神讲过,还挺有意思的。现实的思考事实上,任何开源产品都会有自己的核心团队。在所有的产品设计中,千人千面。如果有人能加入进来,产品很快就会变成一个“大泥球”,以失败告终。展望今天的开源世界,很多产品一开始都是个人开发的,然后得到很多赞助,或者开公司,然后继续经营。还有很多人担心GitHub不允许访问某些软件代码。事实上,创建者的开源协议允许它被使用。有的公司会在国内多备份,或者早点在内部fork一份开发,重新套一个新的shell。以免极端情况的发生。总结经过我们的阅读和分析,不难看出。Go语言核心团队欢迎社区建设和交流,并已采取实际行动。在他们的理解中,Go项目并不在Google的绝对控制之下(对此说法有异议),管理层也没有给他们任何要求。相反,Google提供了大量的资金,也让Go项目更好地协同工作。我认为个别留言或多或少有些难以理解,不认同Go语言的设计理念,形成了一些不同的声音。这对于Go语言的发展来说,其实是一件好事。你怎么看待Go语言的发展和谷歌的定位?欢迎大家交流讨论:)如有任何问题,欢迎在评论区反馈交流。最好的关系是相互成就。您的点赞是炸鱼最大的创造。动力,谢谢支持。文章持续更新中。可以微信搜索【脑补炸鱼】阅读。本文已收录在GitHubgithub.com/eddycjy/blog中。学习Go语言可以看Go学习地图和路线。欢迎星星提醒。推荐阅读Go和Golang有什么关系开发Go的理由
