開源即責任

一開始只想寫篇短文,沒想到寫了不少,但願能夠幫助開發者稍微多瞭解一點軟件行業吧 @kalasoohtml

由於 GitHub 的盛行,「開源」成爲了當下開發者很是「政治正確」的一個行爲。天天在掘金裏,我都會看到不少用戶寫文章說本身開源了這個、開源了那個,同時每一年 GitHub 年度總結裏不斷飆漲的 Repo 數據和 Commit 數據好像昭示着開源生態和文化已經深刻人心。然而,事實並不是如此,甚至你們對於開源的理解,自己就是讓人心寒的。就好像,咱們生活在如此便捷的互聯網時代中,卻並未所以而創造更多。開發是一羣有很強判斷能力的人,我但願藉由此文章幫助你們稍微多理解一些開源。linux

今日事件:Ant Design 聖誕彩蛋

今天一大早就聽到掘金的用戶羣裏不少人在討論,早晨看掘金上用戶就在傳播這個事情。我先把信息簡單的聚合一下:git

Ant Design 聖誕修改圖片

狀況是 Ant Design 項目在 9 月 10 日的一個 commit 中增長了 button 的聖誕彩蛋樣式(見下圖)github

Ant Design 聖誕彩蛋 JavaScript

也就是說在此次 commit 後下載或更新此項目的用戶都會在 isChristmas 12 月 25 日的 button 會自動變成 christmas 樣式redis

Ant Design 聖誕彩蛋 CSS

而這樣突如其來的變化,讓諸多開發者「一臉懵逼」。由於 Ant Design 項目自己已經有很是大量的用戶,在 GitHub 上有超過 3.7 萬的 Star,而 NPM 上也展現每週有超過 30 萬次下載。npm

我這裏就再也不展現更多的關於 Ant Design 的爭論了,你們去知乎、GitHub 看就好。從你們表達和批評之中,我看到的是你們對於開源理解的誤差,這又引起了我天天看掘金上這麼多開發者學習、分享內容背後的動因,感覺到了一種對於開源誤解的巨大偏見,甚至忽略了其背後沉澱的社會意義。服務器

開源即責任 antd

Free Software Movement 與 Open Source(開源)

Free Software Movement (FSM) 是一個社會運動,而非僅僅是一個軟件行業的運行模式。並且背後的推進者是 Richard Stallman 即 GNU Project、Free Software Foundation (FSF) 創建者,開發了 GNU Compiler Collection 及 GNU Emacs 等等諸多知名軟件做者。他在 1983 年創立的 GNU Project 以及他長期強勢推進的 Free Software 精神成爲了 FSM 的開啓的標誌。dom

Richard Stallman

而其中對於 Free Software 的官方定義是:ide

A program is free software if the program's users have the four essential freedoms:

  • The freedom to run the program as you wish, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help others (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

翻譯成中文爲:

一個程序是 Free Software 須要讓其用戶知足以下的 4 個自由條件:

  • 用戶能夠自由地以任何目的來運行此程序(自由條件 0)
  • 用戶能夠自由地學習和了解程序是如何運行的,並能夠根據需求加以修改。能夠得到源代碼是這個自由條件的前提(自由條件 1)
  • 用戶能夠自由地分享和傳播原軟件來幫助他人(自由條件 2)
  • 用戶能夠自由地分享和傳播你修改後的軟件,進而全部用戶能夠得益於你的修改。能夠得到源代碼是這個自由條件的前提(自由條件 3)

簡言之能夠總結成:The users have the freedom to run, copy, distribute, study, change and improve the software.

FSM 之因此稱之爲一個社會運動,是由於其背後的價值驅動並不是只是技術和效率,而是對於社會理解的不一樣。其邏輯推斷以下:

  • 數字時代軟件行業提高社會效率和價值,即社會發展須要更好的軟件
  • 開放協同下生產出的軟件質量高於商業閉源軟件
  • Free Software 開放了軟件的自由,會創造出更多好軟件,會推動社會更好的發展

而這背後的思惟邏輯自己就是資本主義(生產資料私有化)與共產主義的價值碰撞。固然,Richard Stallman 與他的信徒們由於對於絕對 Free Software 的追求也常被人安以「極端」的頭銜。可是,社會的推進者哪個不極端呢?

Open Source 的誕生

而咱們熟知的開源其實與最先的 FSM 並不是同一個概念,而 Richard Stallman 已經在屢次的公開場合表達了其對於 Open Source 的反感,甚至認爲 Open Source 破壞了軟件行業,並用了 Amoral(不道德)這樣的嚴厲詞彙。

The Cathedral and the Bazaar(大教堂與市集)

而追溯 Open Source 的發展,就必定要提到由 Linux 核心開發者 Eric Steven Raymond 所著做的書 The Cathedral and the Bazaar(大教堂與市集),書中詳細講述了開發者合做的文化,並分析了自上而下的大教堂模式(如 GNU Emacs)與自下而上的市集模式下共享協同的價值(也就是後來被你們熟知的開源開發模式)。而彼時 Netscape 發佈的 Netscape Communicator Internet Suite 也一樣是被 Raymond 的書籍影響開始不斷地開放其源代碼,可是 FSF 成員並不喜歡相似於 Netscape 這樣的商業公司來做爲 Free Software 項目。

Netscape Communicator

於是 Netscape 須要尋求另一種方式去表達基於開源共享源代碼的軟件一樣具備潛在的商業價值,而最終,他們選擇了 Open Source 這個詞彙。然後 Open Source(開源)被 Bruce Perens、Tim O'Reilly(O'Reilly 出版社的建造者)以及諸多項目的開發者(如 Linus Torvalds)使用。

Open Source Initiative

1988 年,Open Source Initiative(OSI)正式成立並創建了與 FSM 徹底不一樣的價值定義,而其中最重要的就是一個開源項目應該包含一個 License,而這個 License 在不違背開源基本精神要求的狀況下,能夠有多種應用方法,甚至能夠商用甚至修改後能夠閉源。

Open Source Licenses

而 Free Software 下的 GNU General Public License (GNU GPL) 則是其中對軟件自由度要求最高最嚴格的一種。

Free Software vs. Open Source

咱們總結一下:

Free Software 與 Open Source 都在推動源代碼共享開放所帶來的價值,可是:

  • Free Software:一種社會運動,要求徹底的自由軟件賦予用戶的精神追求
  • Open Source:一種分享協同的方法論,幫助開發者在實際的軟件開發中與他人協做

而其中最大的衝突來源於,Free Software 的擁躉相信這種精神追求是的,而他們批評 Open Source 只是協同的一種方法,沒有價值取向,不關注對錯,更有甚者將開源做爲其追逐成功、名譽的手段。

開源是爲了更好地協做開發出解決用戶需求的軟件

開源的偏見

行文至此,咱們在後續的內容中再也不深訴 Free Software 與 Open Source 的區別,都以 Open Source(開源)爲統一表達。

藉由上面的講述,你們明白了 Free Software 其實從一開始就與是否免費無關,而是一種對於自由的追求,而開源也絕非僅僅是開放源代碼這麼簡單。惋惜的是,開源的價值在高速的軟件行業發展中已經發生了理解的誤差,不少人對開源的理解成爲了上傳、分享、下載代碼,而這個偏見的影響對於整個行業都是巨大的。

首先,在理解軟件共享這件事情上咱們要跳出開放代碼這個層面,軟件自己的價值是知足需求,讓程序解決問題。而是否選擇開源的本質是可否基於這種開源的方式讓軟件更好地解決問題,解決更大的問題。換言之,開源不是目的,更好地創建一個能夠解決巨大問題的軟件系統是目的,而開源則是在這短暫的軟件行業發展史上成爲了開發者篩選出的最「好」的協做模式。即,將源代碼共享,多人協同,共建實現成爲了當下主流軟件(尤爲是最廣爲人使用的項目,如 Linux、Android、MySQL、Ubuntu、WordPress 等等)服務用戶的開發方式。

所以,開源開發模式,自己是過去數十年軟件行業沉澱下來的一個聚合智慧的開發方式,它的價值也只與這種開放方式下創造的軟件價值相關。不管多麼追求「開源」,若是軟件自己沒有給用戶帶來充足的價值,則開源與否並不重要。

2008 年,在互聯網行業快速發展的背景下,GitHub 上線了,這是一個基於 Git 的代碼託管服務。也由於互聯網的高速發展,用戶經過 GitHub 能夠更加高效地執行開源的各項行爲,不管是搜索、閱讀、下載、使用、貢獻代碼都變得無比簡單,與他人協做成爲一種便利。至此,GitHub 取代了 SourceForge、Google Code,「開源」席捲全球。

開源與商業

開源是「免費」的,而「免費」每每是最貴的,免費一樣不是目的,其背後創造的價值纔是。不管是 Free Software 仍是 Open Source,其發展也從未脫離開與商業的關係。

在開源運動的早期,Microsoft、Oracle、IBM 都曾經是開源軟件的公開反對者,甚至不乏批判的聲音。但時間的推移讓咱們看到了開源模式最終得到了勝利,過去一年中,整個軟件行業最大的新聞之一應該就是 Microsoft 收購了 GitHub,前者曾經是開源聯盟的頭號公敵,而現在,卻與 Google, Facebook, Apple, Amazon 等等全部科技巨頭公司一塊兒全力開源各個項目。而基於 GitHub Octoverse 2018 的數據,GitHub 上最熱門的 10 個項目中只有 2 個項目是由社區驅動的,而其他前 8 個項目皆是隸屬於大型科技企業。

Microsoft Acquires GitHub

開源軟件公司

開源絕非僅僅是慈善,開源軟件自己的免費傳播,卻孕育出開源軟件之上的服務(如軟件服務、書籍、教程、諮詢、培訓、展會等)都存在商業價值,早期如 VA Linux、Red Hat 的公司也在 1999 年相繼上市,當下也有 MongoDB 等企業依然在快速發展。開源軟件公司的收入幫助開發者能夠繼續維護、發展、運營整個社區,並面向企業提供高級定製化軟件服務或 SaaS 服務獲取收入

Open Source Companies Valuation

開源基金會

另一個模式,則是開源基金會。成功的軟件項目如 Linux, Apache, FreeBSD 等被大量的企業使用,然後這些項目的發展間接影響着諸多行業的發展。於是,基金會模式成立,即大型企業經過現金贊助來幫助基金會持續維護和推動某1、某一組項目的發展。而這背後就是「赤裸裸」的商業關係了。以 The Linux Foundaton 爲例:

Linux Foundation Corporate Membership

一個企業贊助者能夠得到諸多權力,參與到項目開源戰略的討論並有可能在 Board of Directors 中得到席位並對 Linux 基金會直接產生戰略影響。也正由於此,當一家企業的衆多業務與服務搭載於 Linux 等項目之上,這個權力則變得相當重要!目前在 The Linux Foundation 中,咱們可以提到的世界一級企業都是其贊助者,而中國的華爲、騰訊是其最高級別的白金會員,而 22 名 Board of Directors 中只有一名中國企業表明:來自華爲的 Peixin Hou

大企業爲何選擇開源?

那爲何那些並不以開源軟件盈利的大型科技公司依然決絕地擁抱開源呢?諸如 VSCode, React.js, Kubernetes 是出於怎樣的目的在運營的?咱們都很嚮往硅谷,嚮往全世界最優秀的科技企業,他們不斷地創造「影響世界」的產品和開源項目,幫助全部人提升效率。我總結出其直接緣由是:壟斷與標準

讓咱們看一下當下的開源項目,咱們能夠把項目分爲四類:

  1. 高複雜度 / 高市佔率:大公司項目,商業公司,基金會,社區
  2. 高複雜度 / 低市佔率:科研 => 基金會
  3. 低複雜度 / 高市佔率:社區 => 基金會
  4. 低複雜度 / 低市佔率:低價值

其中 4. 佔據了大多數比例,咱們分析了大公司的開源項目,大多數都在解決高複雜度的問題,同時成功的項目也都得到了極高的市佔率。固然,大公司一樣會產出並不那麼高市佔率的項目,可是咱們的「假設」是他們目標是爲複雜問題提供究極答案。對於一個大企業來講,開源一個高複雜度的項目是一個高成本的行爲,如若項目沒法有效地佔有高市佔率,那麼自己沒法商業變現的開源行動則得不償失,背後的邏輯即是:

一但一個高複雜度的項目得到了高市佔率,開發者則難以遷移

Google 做爲開源項目的絕對領導者,一樣是體會到了開源模式對於高複雜度、高市佔率項目的壟斷性,猶如科技產業中的標準通常,成爲了相關行業捆綁性的技術選擇。而這帶來的收益,直接包含着市場、技術搭建成本、商業服務利益。而大企業偏偏是此類項目最佳推進方:

  1. 大企業有高質量的開發者,開啓高複雜度的項目
  2. 大企業有能力快速宣傳項目
  3. 大企業有成本去持續運營項目,直至壟斷

開源在中國

咱們互聯網發展迅速,緊跟世界潮流,藉由 GitHub 的成功(而且沒有被牆)中國開發者第一世界學習到了代碼共享的服務,咱們也一步步脫離了 CSDN、SourceForge 等代碼下載平臺,開始使用 GitHub,毫無疑問咱們都是開源的受益方。但以前在作掘金的時候,我用 GitHub 的 Open API 下載了數萬箇中國開發者的 GitHub 行爲數據,現實是隻有 15% 的用戶操做過有價值的 commit / pull request,而貢獻給他人項目的用戶則更是百裏挑一。

一樣,中國的開發者開始持續的上傳代碼,天天掘金上都會有許多開發者「開源」出來的新項目。我一直會以複雜度與市佔率兩個象限來評判項目價值,最終帶來的是不可替代性。這也是我想在此文章最後表達的,當咱們決定去上傳代碼並分享的時候,咱們要明白把代碼開放出來開源一個項目的區別。我這裏也就再也不舉例,衆多開源蠻荒時期的 KPI 項目一個一個地出來後,未能解決問題,企業又無心去供養一個非高複雜度的項目時隨時拋棄的現狀。

PingCAP

一切的變化起源於重視,我看到了華爲對開源的重視、阿里巴巴對開源的重視、騰訊對開源的重視、PingCAP 在利用開源模式創建商業公司。但若是咱們的「開源」作不出高「高複雜度 / 高市佔率」的項目,那咱們也終究沒有獲得開源帶來的壟斷收益。

開源的責任

不知道爲何,一會兒寫了這麼多字。由於一直在作掘金,天天和這麼多中國開發者在一塊兒,莫名地有了一些傳播價值地責任感。我這裏再也不對 Ant Design 這件事進行評價,只是但願你們能夠更好地理解開源,和它背後的意義。

而我但願把這篇文章進行最後的總結:

  • 開源是爲了更好地協做開發出解決用戶需求的軟件
  • 一但一個高複雜度的項目得到了高市佔率,開發者則難以遷移

爲何開源即責任?由於一個好的軟件項目是爲了服務好用戶,選擇開源模式,自己就是選擇了一個爲解決複雜問題提供通用(高市佔率)解決方案的途徑。選擇開源模式,即提升了普及項目的速度,也就提升了你的軟件被更多人依賴的可能。這也就是爲何,開源即責任。當數億臺服務器運行着 Linux 服務的時候,那些躺在 Mailing List 裏的一次次爲哪怕一行代碼的長篇爭論,都讓人無比敬畏。

以下敬啓

Btw, Joseph, you're a quality example of why I detest the github

interface. For some reason, github has attracted people who have zero

taste, don't care about commit logs, and can't be bothered.

The fact that I have higher standards then makes people like you make

snarky comments, thinking that you are cool.

You're a moron.

Linus
複製代碼

Ming

2018-12-25 🎄🎄🎄


Acknowledgement

  1. Why Open Source misses the point of Free Software
  2. What is free software?
  3. The Cathedral and the Bazaar
  4. History of free and open-source software
  5. Why Open Source? | Google Open Source
  6. Linux Foundation Membership
  7. How Open Source Became The Default Business Model For Software
  8. Open Source Is Woven Into the Latest, Hottest Trends
相關文章
相關標籤/搜索