Vue 3.0 公開代碼後,引發國外一場撕逼大戰

前言

在2019年10月5日,尤小右公開了 Vue 3.0 的源代碼。開發者技術前線第一時間報道:Vue 3.0 終於來了!官方凌晨開源代碼。

想了解 vue 3.0 源碼的同學,可以訪問上述鏈接。

作為現階段的主流前端框架之一,Vue 受到了大家的強烈關注。

源碼公開後不久,社區內就有源碼解析的文章出現,甚至還有培訓課程打出了《從0實現 Vue 3.0 響應式源碼》的噱頭。

儘管有一些“學不動了”的自嘲,社區裡對 Vue 3.0 源碼開放事件,總體上是一個非常正面的態度。

在這種背景下,我注意到了兩段爭論,一個來自國外社區,一個來自國內;它們圍繞不同的主題,卻恰好擁有相同的內核。頗有意思,我認為值得分享給大家。

下面開始我們的八卦環節:

一、什麼是恰當的開源?

在 Twitter 上,Vue.js 官方賬號,發佈了源碼公開的消息。

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

有一位開發者留言:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

他問難道在此之前源碼不是公開的,這合理嗎?

尤小右回覆:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

解釋說,影響到用戶的變更部分,已經通過 RFCs 進行過討論。在代碼相對穩定之前,保持私密,可以更專注的做實驗和迭代技術細節。

然後,另一位開發者跳出來:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

他說 TypeScript 項目裡,所有代碼和工作流程都是開放的,即便是 TS 的作者 Anders Hejlsberg 也是通過一樣公開的方式貢獻代碼,這比 Vuejs 團隊做的好得多,並聲稱這才是恰當的 OSS(開源軟件)。

尤小右回覆:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

首先表達了對 TS 團隊的敬意,然後指出對方並不能定義何謂恰當的 OSS (開源軟件)。

對方繼續回覆:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

此處他進行了一次偷換概念。第一次回覆時,他以 TS 團隊的做法為基準,明確了什麼是恰當的 OSS 方式。

在進行辯解時,他掐掉了 Proper 的形容詞,表示他沒有對什麼是 OSS 進行定義。

然後他開始轉移話題,說他只是認為將潛在的貢獻者拒之門外,對項目幫助不大。

尤小右對此作了一番陳述:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

大意如下:

1)從第一天起就開放源碼,並不一定是好事,特別是對高曝光率的項目而言。

2)在項目早期,API 等設計還在不斷變化的階段,有非常高的溝通成本。容易引發混亂。

3)從昨天源碼開放後,就收到大量 PRs,花費了大量的時間去審查代碼,去解釋和回覆問題。

4)基於上述經驗,設想一下,如果從第一天開始就這樣,那這個項目很難有實質進展。

5)Vue 並沒有等所有部分徹底完成之後,才公開代碼。在前期有公開 RFCs 討論,目前公開後,也仍有很多可貢獻代碼的地方。

6)成為 Vue 核心團隊的成員,不是靠裙帶關係,而是基於他們過去對項目的貢獻。

對方回覆:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

他沒有正面回覆現實問題,只是繼續表示:Vue 之所以在某個開發階段,通過保持代碼私密以降低干擾,是因為無法通暢溝通,所以需要排除其他人。儘管對目前而言,是一個有效方案。但他希望將來變成一個容納所有人的更好方案。

至於怎麼解決溝通成本問題,怎麼提高溝通效率,他沒有提及。

我們暫時不做評論,且來看看另一個案例。

二、怎麼才算是足夠 TypeScript?

Vue 3.0 源碼公開後,有人在知乎提了一個問題:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

其中一個回答說:

我的看法,any太多,一點都不TypeScript。嘗試改了一下發現any套著非any,牽一髮而動全身…

評論裡還有一些 TS 愛好者,在答主的基礎上,繼續加以吐槽。甚至有好事者在未曾看過源碼的情況下,憑空表示早就猜到 Vue 對 TS 支持不好云云。

這類不友好的言論,在某種程度上激怒了尤小右。他回覆:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

對方表示,尤小右的回覆屬於人身攻擊。

尤小右回覆如下:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

對方繼續回覆:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

他的說法,相當於暗示 Vue 目前使用的是“類型實踐的最低配置”。當然,Vue 並非這種情況。尤小右繼續反問對方,什麼叫一點也不 TypeScript?

這位答主其實是 Vue 3.0 的貢獻者,他無意抹黑或抨擊 Vue。因此,後續他修改了回答的內容,刪減了容易引起其他人誤會的措辭。

當前版本的回答內容如下:

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

想了解全部內容,可以訪問下面的鏈接:

https://www.zhihu.com/question/349203766

三、兩種看待事物的視角

在大概瞭解了上面兩則爭論內容後,我們停下來,想一下,他們之間有什麼共同點?

從尤小右對他們的首次回覆中,可以看出端倪:你不能定義/規定XXX。

這是一個切中要害的回覆。

他們,不管有意還是無意,都是在按照自己的標準,劃一條線,然後做非黑即白的區分。或是定義這屬於恰當的或不恰當的 OSS,或是規定這足夠 TypeScript 或者一點也不 TypeScript。

然而實際上,不管是開源還是 TS,它們其實是漸進的、有層次的,呈現的不是非黑即白,而是一段光譜。

Vue 3.0 公開代碼後,引發國外一場撕逼大戰

不管是開源方式,還是 TypeScript 含量,Vue.js 既不是在光譜的最左端,也不是在光譜的最右端。

Vue 既非徹底的不開源,也非無時無刻都開放源碼(事實上,要做到開源光譜的最右端,成本是極高的,開發者可能得一直通過直播的方式編寫所有代碼,而不能先私自編寫,commit/push 到倉庫後才公開)。

Vue 既非完美的 TypeScript 代碼,也非任性 any 的 TS 代碼。

在 Pre Alpha 階段,代碼有一些不足,在意料之內,也在計劃之內:“Vue 並未等待所有東西都完備後才開源,仍留有許多可貢獻代碼的地方”。

非黑即白的思維,在技術領域很盛行。這兩段爭論所呈現的,只是其中的九牛一毛。

光是 FP 和 OO 這兩個,就可以排列組合出多種非黑即白的話題,比如:這是FP,這不是 FP,這不夠 FP,或這不是純 FP,這不夠純 FP,這不夠純 FRP,這不是 OO,這是 OO,這不夠 OO 等等。

如果將非黑即白叫做 01 思維,那麼光譜視角,應該叫 0~1 思維,它呈現的是有層次的漸進過程。

在上面的兩段爭論中,Vue 和 Vue 作者很容易通過反駁和用實力,得到澄清。但是,不是所有項目,所有人,都像 Vue 和 Vue 作者那樣強大,有能力去肅清非議。

有許多弱小的項目和開發者,飽受歧視。

設想你是一個小透明,你在 GitHub 上新建了一個賬號和倉庫,將自己未經嚴格測試,甚至跑都還跑不起來的代碼,發佈上去。

然後有一個人對你說:我在剛工作的時候,我就學會了,代碼沒有嚴格的單元測試,代碼覆蓋率沒到 99%,代碼 commit messages 不規範,都不好意思放到 GitHub。

你試圖反駁說:這些要求太高了。

他更嚴厲的質疑:這也叫高要求?這不是最基礎的常識嗎?你平時怎麼工作的?

你敗下陣來,默默刪除了自己的倉庫。默默對自己說,我只是一個弱雞,我沒資格開源。

同時你發現,在其它方面,也有很多既得利益者,利用先發優勢,用資格論,對你進行自信心的打擊。

你不敢讓人知道你在學習什麼技術,不敢給其他人看你寫的代碼。

你覺得自己實力不行,不配去看官方文檔,不配去問大神問題,不配去看英文材料,不配去看論文,不配獲取一手材料,不配發表意見,不配開源代碼,不配寫文章。

你覺得自己只配從非官方的渠道,看二手的,三手的,非嚴肅的內容;看不懂也沒關係,也沒人嘲笑你:這麼簡單,寫得這麼清楚,你都看不懂?

最後你發現,你永遠學不會真正的技術。你覺得自己果然不適合這個行業。

不。

不是這樣的。

你可以隨意開源,即便跑不起來,即便沒有單元測試,即便你連什麼是代碼覆蓋率都不知道。

你可以去寫 TypeScript,即便僅僅是把 .js 後綴改成 .ts。對剛開始的你而言,不改一行代碼,你也已足夠 TypeScript。

你可以在光譜的最左端停留,這是你的起點。等你變強之後,你可以提升你的項目的完成度和質量,往光譜的右側移動。

每個人都需要經歷起步階段。所有項目都有希望變得更好,不管當前處於哪個階段。

你可以去看官方文檔,你可能發現,它裡面的第一句話是:本文檔不要求提前知道 XXX 技術,本文檔對於初學者也適用。

你可以去問大神問題,你可能發現,對方比你想象的更樂意幫助你。

你可以去看英文材料,可以去讀論文,在合理合法範圍內,你可以自由的做任何事。

不必桎梏於某些人劃定的界線,即便這個人是所謂的大佬。

普朗克有一句名言:新科學的發展,不是靠使其對手看見真理之光,而是等待對手全死光,新一代熟悉新科學的人成長起來。

歡迎大家關注我的頭條號,私信“python",學習資料包免費分享給需要的朋友,另有python學習交流群,可以交流學習拓展人脈。


分享到:


相關文章: