当前位置: 首页 > 后端技术 > Python

网友:Go 你是 Google 的,Go:我不是

时间:2023-03-26 16:34:01 Python

网友:Go 你是 Google 的,Go:我不是♀?♀大家好,我是煎鱼。我有一个朋友,近几年听说各种博弈、各种国内云产品等发力,各企业的 “国产化” 被提到了台面上,明确要去做这类事情。作为当代编程语言风口的 Go 语言,在宣传时,常常会说是 Google 背书:那么问题来了!假设出了一些冲突,Go 语言是否会被 Google 完全控制,形成垄断呢?今天煎鱼就和大家一起来了解 Go 语言的开发团队对此的个人态度和运行情况。早有讨论在 2019 年时,就有人因为 Go 泛型的事情在 twitter 上吐槽 Go 语言的社区灵活度和自主控制。希望能够像 Java 的 OpenJDK 一样,实现一个 OpenGo。如下:想要社区自己实现泛型,而不是等待官方团队来做。从真实情况来讲,其实社区上早就有类似 OpenGo 的项目了,如下:albrow/fo:实现了函数式编程的特性,最近一次提交是 2019 年。goodlang/good:支持从 GitHub 上拉取 PR,最近一次提交是 2016 年。tinygo-org/tinygo:嵌入式编程,结合 LLVM 开发的 Go 编译器,用于微控制器、WebAssembly (Wasm) 和命令行工具等。cosmos72/gomacro:具有泛型和宏的交互式 Go 解释器和调试器,最近一次提交是 2021 年 06 月。在开源社区,OpenGo 的项目数和项目的提交历史来看,并没有非常强强的诉求,活跃度不高,可能不是 100% 必要的。在对企业内,“定制” 版是存在的,个别企业维护了自己的一份 Go,会一些功能变动,例如:对 Go 运行时进行修改。但这些功能不一定通用,且需内部审查合规才能公开。硝烟四起在前文所提到的 twitter 后,一名博主 Chris Siebenmann 对 Go 语言表达更猛烈的意见,发表了一篇♀?♀的批判文章。文内提到 ”Go 是 Google 的语言,而不是社区的“。举出了一个重要的案例,那就是 Go 模块依赖,当时早年 Go 社区正倾向于 Dep,官方团队也是给予了不少沟通。由于当时 Russ Cox 强推 Go modules(前身 vgo),引起了社区大量争议讨论,被作为该态度的依据。也就是: ”如果希望某些重要的特性被 Go 接受,那么在社区中建立共识远没有说服 Go 核心团队重要“。整理后,核心依据共有三点,分别如下:社区的声音对于 Go 的开发来说并不重要。例如:Go modules 的历史事件(其实是 Dep 有争议...)。Go 核心团队都被 Google 雇佣,Go 的特性由 Go 核心团队最终确立,只有当他们不再为 Google 工作时,Go 才有可能是他们的(无法确定归属于谁)。Go 商标等均归属于 Google。例如:https://golang.org 域名归属于 Google。以上是作者认为 Go 语言是由 Google 控制的原因。官方回复显然 Go 官方团队听到了社区的声音,在 golang-nuts 中的♀?♀有多名核心成员参与了讨论。主要为 Russ Cox 和 Ian Lance Taylor,做了大量长篇幅的回答,是平时所有沟通里都极为少见的,肯定了 Go 语言与社区共建、开放的想法。主要涉及如下方面:Go 代码是开源的。Go 不由 Google 控制。Go 提交者的情况。Go 社区沟通。代码是开源的实际上 Ian Lance Taylor 认为 Go 语言确实就是开源的,有以下几点论点:所有的源代码开放:包括所有的源代码、所有基础设施支持的源代码,都是免费提供的,任何人都可以重复使用和修改。拥有推向新方向的自由:对于软件来说,最基本的自由是 fork 的自由。可以将一个现有的项目推向新的方向的自由,也就是 OpenGo。不是 Google 控制对 ”Go 语言是 Google 的语言“ 的说法进行了明确的反对,这种说法的意思是 ”Google 做出各种语言决策的最终决定“。由于 Go 是由在 Google 工作的人开发的,所以最初开发的人不可避免地包含在 Google 的人,核心团队目前也没有人离开 Google 去其他公司,所以造成了核心团队又不少 Google 的员工的现象。在 Go 项目中可以 Approve(批准)的人,非 Google 的人多于 Google 内部的人。Go 语言是 Google 的,可以展开来看:能说是 “对”,他确实是由在 Google 任职的人在 Google 时开发出来的。能说是 “不对”,因为社区也有许多有 Approve 权力的人,Go 项目非常的多元化。就看你怎么理解和定义这个概念了。Google 的角色是什么在♀?♀中 Russ Cox 明确的回答了这个问题。Google 的角色在 Go 语言的不断发展中,也在不断地转变。如下:开源发布之前:Google 为所有 Go 开发支付了资金费用。开源发布后:许多 Go 开发者开始贡献他们的开发时间,参与到 Go 语言的开发中。主要在支持 Go 社区、进行协调、确保更改能够更好地协同工作,并使 Go 忠实于最初的愿景、资助 Go 开发工作。资助更多的就像开源产品的赞助一样。就跟前两年亚马逊宣布赞助 Rust 语言的开发一样。提交者的情况在早年统计时,以 CONTRIBUTORS 为基准数据,电子邮箱作为统计维度,Go 提交者名单上的也有了明显的改变。人数对比如下:在 2019 年:有 59 名 Google 人和 51 名非 Google 人。Google 人数居多。在 2021 年:309 名 Google 人,2426 名非 Google 人。非 Google 人数居多。2019 年,两者基本持平。2021 年,已经是非 Google 的开发者贡献人数更多了,也足矣说明社区的一定程度开放。2022 年,理论上会更多。社区沟通以我的观察,在 Go issues、proposal、golang-nuts、golang-dev、gophers slack 中等渠道。Go 核心团队的人都是高频的查看社区反馈和交流情况,以此更好地听取社区的意见。在 golang tools 中,每月电话、邮件列表和 Slack 频道都对所有人开放,且有会议记录和录音。有兴趣的可以定时上去参加和学习,为 Go 语言发展出一份力。在 Go Commiter 层面,每年都会定期举办交流会,能得到很多信息。之前也听欧神讲过,还是有些意思的。现实思考实际上,任何开源产品都会有自己核心团队。在所有的产品设计中,千人总是千面的。若是谁都可以合进来,这个产品很快就会变成一个 “大泥球”,以失败而告终。展望当今开源界,很多产品一开始都是个人研发,后续接受到大量的赞助,又或是开办起了公司,再继而去运营。也有许多人担忧 GitHub 不给使用某些软件代码。实际上,创造方的开源协议是允许使用的。一些企业更多的会在国内备份,又或是早早在内部 fork 了一份进行开发,重新套一层壳。以此避免极端情况的发生。总结经过我们的阅读和分析,其实不难看出。Go 语言的核心团队,对于社区共建、交流是非常欢迎的,且做出了实际的行动。在他们的理解中,Go 项目不由 Google 绝对控制(表示反对这种说法),管理层也没有给出他们任何要求。相反,Google 提供了许多的资助,还促使 Go 项目更好的协同。我认为个别消息更多是对 Go 语言的设计哲学或多或少的不理解、不认同,才形成一些不同的声音。这其实对 Go 语言发展是好事。你对 Go 语言的发展和 Google 的定位怎么看呢,欢迎大家交流和讨论:)若有任何疑问欢迎评论区反馈和交流,最好的关系是互相成就,各位的点赞就是煎鱼创作的最大动力,感谢支持。文章持续更新,可以微信搜【脑子进煎鱼了】阅读,本文 GitHub github.com/eddycjy/blog 已收录,学习 Go 语言可以看 Go 学习地图和路线,欢迎 Star 催更。推荐阅读Go 和 Golang 有什么关系开发 Go 的原因