Go 是社區(qū)驅(qū)動嗎?哪種模式更好?
本文繼續(xù)基于對兩篇文章的前因后果的補(bǔ)充,基于《Is Golang truly community driven and does it really matter?》,煎魚對內(nèi)容有所調(diào)整和補(bǔ)充。
快速背景
幾年前在 Hacker News 社區(qū),針對 Go 的一個問題引發(fā)了激烈的辯論:“Go 是 Google 的語言,而不是社區(qū)的”。
這個討論最初是由在多倫多大學(xué)計(jì)算機(jī)科學(xué)系工作的 Chris Siebenmann(下稱:他)發(fā)起的。
圖片
他在博客文章中寫道:“Go 有社區(qū)貢獻(xiàn),但它不是一個社區(qū)項(xiàng)目。它是 Google 的項(xiàng)目?!?/p>
為什么 Go 不是社區(qū)的語言
Chris 明確指出,社區(qū)的聲音對于 Go 的發(fā)展并不重要,我們必須接受這一點(diǎn)。他認(rèn)為:Google 是 Go 社區(qū)貢獻(xiàn)的守門人;只有 Google 獨(dú)自決定什么是被接受的,什么不被接受。
如果開發(fā)者想要一些重要的特性被接受進(jìn) Go,與其與社區(qū)建立共識,遠(yuǎn)不如說服 Go 核心團(tuán)隊(duì)重要。
他引用了一個例子:Google 的 Go 核心團(tuán)隊(duì)成員之一(指的是現(xiàn)在的 Go 核心團(tuán)隊(duì)負(fù)責(zé)人 rsc)放棄了社區(qū)一直在努力開發(fā)的 Go 依賴管理系統(tǒng)(指的是 dep 等),并引入了一個新的、相對激進(jìn)的不同模型,也就是現(xiàn)在的 Go Module。
注:這里講的是好多年前,Go 還沒有官方的模塊管理。社區(qū)自發(fā)的有 godep 等各種工具。一開始談好要基于某一個社區(qū)工具繼續(xù)開發(fā)轉(zhuǎn)成官方的。結(jié)果后面 rsc 等覺得不好用,最終自研了官方的模塊管理,直接一紙之下取代了。
期望和對比管理方式
Chris 期望的是:Go 核心團(tuán)隊(duì)要關(guān)心社區(qū),并希望他們參與建設(shè),但要限制在一定的程度的參與度。他希望 Go 核心團(tuán)隊(duì)能坦率地誠實(shí)地說明情況,而不是假裝并誤導(dǎo)人們。
他進(jìn)一步補(bǔ)充說:“只有當(dāng) Go 核心團(tuán)隊(duì)成員開始離開 Google,并嘗試?yán)^續(xù)積極參與決定 Go 的方向時,我們才能確定 Go 是一個社區(qū)驅(qū)動的語言?!?/p>
他將 Go 與 C++ 進(jìn)行了比較,稱后者是一個真正的社區(qū)驅(qū)動語言。
圖片
他說 C++ 有多個主要實(shí)現(xiàn),這些都是真正的社區(qū)項(xiàng)目,C++ 的方向由一個開放標(biāo)準(zhǔn)委員會決定,成員分布相對分散。
圖片
社區(qū)驅(qū)動還是企業(yè)所有的區(qū)別
開發(fā)人員中一直流傳著這樣一種觀點(diǎn):一些開源編程項(xiàng)目只是主要由一家公司驅(qū)動的商業(yè)項(xiàng)目。
我們看一下業(yè)內(nèi)的頂級開源項(xiàng)目,它們中的大多數(shù)都有某種企業(yè)合作、支持,甚至直接的資金援助。
例如:
- 蘋果的 Swift;
- 甲骨文的 Java、MySQL;
- 微軟的 Typescript;
- 谷歌的 Kotlin、Go、Android、MongoDB、Elasticsearch;
僅舉幾例。這就引出了一個問題:企業(yè)對開源項(xiàng)目的所有權(quán)到底意味著什么?
仁慈的獨(dú)裁有兩種結(jié)果。
如果某個項(xiàng)目基于社區(qū)建議進(jìn)行修改,而修改又是個壞主意,企業(yè)團(tuán)隊(duì)可以進(jìn)行干預(yù),阻止修改。
但另一方面,反過來看,即使核心團(tuán)隊(duì)的少數(shù)成員不同意,也可以阻止社區(qū)的好想法得到實(shí)施。
社區(qū)觀點(diǎn)
Chris 的帖子在 Hacker News 上引起了開發(fā)者的廣泛關(guān)注,他們既支持也反對提出的觀點(diǎn)。
以下是摘取的有一定觀點(diǎn)的評論:
- 網(wǎng)友 A:擁有一個社區(qū)并與它合作很重要,但尤其是對于編程語言來說,必須有一個清晰的概念,哪些特性應(yīng)該實(shí)現(xiàn),哪些不應(yīng)該——僅僅為了使社區(qū)感覺良好而接受社區(qū)貢獻(xiàn)將是錯誤的方式。
- 網(wǎng)友 B:許多人喜歡 Go 是因?yàn)樗且环N有觀點(diǎn)的語言。我不確定一個社區(qū)運(yùn)行的語言會創(chuàng)造出像那樣的東西,因?yàn)橐庖娞唷TS多人聲稱代表社區(qū),但不是那些不分享他們觀點(diǎn)的社區(qū)。沒有明確的領(lǐng)導(dǎo)者,我擔(dān)心技術(shù)方向和品味將變成政治,這似乎更不確定和風(fēng)險。
總結(jié)
整體看來,似乎沒有完美的答案。因?yàn)閹缀跛兴^的成功的頂級項(xiàng)目,背后都一定有各大公司的影子,只是或多或少罷了。
Go 這一門編程語言的模式,可能也是一種比較另類的成長方式?,F(xiàn)在被抨擊的點(diǎn),有些也是直接太狠直接推翻社區(qū)導(dǎo)致的。
另外結(jié)合 Go 的發(fā)展歷程來看,如果 Go 不是誕生于 Google 團(tuán)隊(duì)內(nèi)部,可能發(fā)展和當(dāng)紅的也不會那么順利,與云原生的結(jié)合可能也會沒有那么深。