脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - Go 是社区驱动吗?哪种模式更好?

Go 是社区驱动吗?哪种模式更好?

2024-04-07 14:49脑子进煎鱼了 Golang

整体看来,似乎没有完美的答案。因为几乎所有所谓的成功的顶级项目,背后都一定有各大公司的影子,只是或多或少罢了。Go 这一门编程语言的模式,可能也是一种比较另类的成长方式。现在被抨击的点,有些也是直接太狠直接

本文继续基于对两篇文章的前因后果的补充,基于《Is Golang truly community driven and does it really matter?》,煎鱼对内容有所调整和补充。

快速背景

几年前在 Hacker News 社区,针对 Go 的一个问题引发了激烈的辩论:“Go 是 Google 的语言,而不是社区的”。

这个讨论最初是由在多伦多大学计算机科学系工作的 Chris Siebenmann(下称:他)发起的。

Go 是社区驱动吗?哪种模式更好?图片

他在博客文章中写道:“Go 有社区贡献,但它不是一个社区项目。它是 Google 的项目。”

为什么 Go 不是社区的语言

Chris 明确指出,社区的声音对于 Go 的发展并不重要,我们必须接受这一点。他认为:Google 是 Go 社区贡献的守门人;只有 Google 独自决定什么是被接受的,什么不被接受。

如果开发者想要一些重要的特性被接受进 Go,与其与社区建立共识,远不如说服 Go 核心团队重要。

他引用了一个例子:Google 的 Go 核心团队成员之一(指的是现在的 Go 核心团队负责人 rsc)放弃了社区一直在努力开发的 Go 依赖管理系统(指的是 dep 等),并引入了一个新的、相对激进的不同模型,也就是现在的 Go Module。

注:这里讲的是好多年前,Go 还没有官方的模块管理。社区自发的有 godep 等各种工具。一开始谈好要基于某一个社区工具继续开发转成官方的。结果后面 rsc 等觉得不好用,最终自研了官方的模块管理,直接一纸之下取代了。

期望和对比管理方式

Chris 期望的是:Go 核心团队要关心社区,并希望他们参与建设,但要限制在一定的程度的参与度。他希望 Go 核心团队能坦率地诚实地说明情况,而不是假装并误导人们。

他进一步补充说:“只有当 Go 核心团队成员开始离开 Google,并尝试继续积极参与决定 Go 的方向时,我们才能确定 Go 是一个社区驱动的语言。”

他将 Go 与 C++ 进行了比较,称后者是一个真正的社区驱动语言。

Go 是社区驱动吗?哪种模式更好?图片

他说 C++ 有多个主要实现,这些都是真正的社区项目,C++ 的方向由一个开放标准委员会决定,成员分布相对分散。

Go 是社区驱动吗?哪种模式更好?图片

社区驱动还是企业所有的区别

开发人员中一直流传着这样一种观点:一些开源编程项目只是主要由一家公司驱动的商业项目。

我们看一下业内的顶级开源项目,它们中的大多数都有某种企业合作、支持,甚至直接的资金援助。

例如:

  • 苹果的 Swift;
  • 甲骨文的 Java、MySQL;
  • 微软的 Typescript;
  • 谷歌的 Kotlin、Go、Android、MongoDB、Elasticsearch;

仅举几例。这就引出了一个问题:企业对开源项目的所有权到底意味着什么?

仁慈的独裁有两种结果。

如果某个项目基于社区建议进行修改,而修改又是个坏主意,企业团队可以进行干预,阻止修改。

但另一方面,反过来看,即使核心团队的少数成员不同意,也可以阻止社区的好想法得到实施。

社区观点

Chris 的帖子在 Hacker News 上引起了开发者的广泛关注,他们既支持也反对提出的观点。

以下是摘取的有一定观点的评论:

  • 网友 A:拥有一个社区并与它合作很重要,但尤其是对于编程语言来说,必须有一个清晰的概念,哪些特性应该实现,哪些不应该——仅仅为了使社区感觉良好而接受社区贡献将是错误的方式。
  • 网友 B:许多人喜欢 Go 是因为它是一种有观点的语言。我不确定一个社区运行的语言会创造出像那样的东西,因为意见太多。许多人声称代表社区,但不是那些不分享他们观点的社区。没有明确的领导者,我担心技术方向和品味将变成政治,这似乎更不确定和风险。

总结

整体看来,似乎没有完美的答案。因为几乎所有所谓的成功的顶级项目,背后都一定有各大公司的影子,只是或多或少罢了。

Go 这一门编程语言的模式,可能也是一种比较另类的成长方式。现在被抨击的点,有些也是直接太狠直接推翻社区导致的。

另外结合 Go 的发展历程来看,如果 Go 不是诞生于 Google 团队内部,可能发展和当红的也不会那么顺利,与云原生的结合可能也会没有那么深。

原文地址:https://mp.weixin.qq.com/s/l4vUCYmo-kz5wdiORYKU7A

延伸 · 阅读

精彩推荐
  • GolangGolang迭代如何在Go中循环数据结构使用详解

    Golang迭代如何在Go中循环数据结构使用详解

    这篇文章主要为大家介绍了Golang迭代之如何在Go中循环数据结构使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职...

    AirStar9302022-11-30
  • GolangGolang 实现简单随机负载均衡

    Golang 实现简单随机负载均衡

    均衡算法又分为 随机,轮询,加权轮询,哈希,而随机负载均衡算法就是本文的重点,需要的朋友们下面随着小编来一起学习学习吧...

    锐玩道5992021-08-09
  • Golang使用Go语言实现配置文件热加载功能

    使用Go语言实现配置文件热加载功能

    这篇文章主要介绍了使用Go语言实现配置文件热加载功能,以及配置文件热加载包的实现思路,需要的朋友可以参考下 ...

    python修行路6142020-05-14
  • GolangGo语言变量创建的五种方法

    Go语言变量创建的五种方法

    这篇文章主要介绍了Go语言五种变量创建的方法,本文给大家提到了匿名变量的优点,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下 ...

    Python编程时光4972020-06-04
  • Golang在 Go 中管理多个数据库连接

    在 Go 中管理多个数据库连接

    在 Go 中管理多个数据库连接是软件开发中常见的难题。按照本文概述的步骤并利用所提供的示例代码,可以有效地处理各种数据库类型,同时保持代码的整...

    爱发白日梦的后端8982023-10-31
  • GolangGo语言Context应用全攻略:异步编程利器

    Go语言Context应用全攻略:异步编程利器

    在 Go 语言中,Context(上下文)是一个非常重要的概念,特别是在处理请求时。允许在请求的整个生命周期内传递数据、控制请求的取消、处理超时等。本...

    Go先锋6752023-11-06
  • Golang给 Go 提问题?充分了解 Go 提案流程

    给 Go 提问题?充分了解 Go 提案流程

    Go 提案的整体流程规范是比较明确的,但其并不是每个标签(栏)都一定会用到。从实际的情况来看,会根据 issues 讨论的激烈和复杂度还决定是否使用 “...

    陈煎鱼5072023-10-31
  • GolangCentOS 32 bit安装golang 1.7的步骤详解

    CentOS 32 bit安装golang 1.7的步骤详解

    Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。在发布了6个rc版本之后,Go 1.7终于正式发布了。本文主要介绍了在CentOS 32 bit安装...

    zgljl20123372020-05-04