圍繞開源的系列思考——國家篇

開源社 發佈 2020-03-25T01:18:56+00:00

6.開源組織,各種非營利組織,尤其是是開源基金會的興起1999年3月,Apache軟體基金會2000年,Linux 基金會2000年8,GNOME 基金會2003年7月,Mozilla 基金會2004年2月,Eclipse 基金會2005年2月,軟體自由法律中心2005年11月,

| 作者:莊表偉

| 編輯:王皓月

從穿越小說聊起

我非常喜歡看各種網絡小說,其中最大的一類,自然是穿越小說。其中又可以細分為很多類型。按照穿越回到的時代,從遠古到近現代的都有,這其中有一個很小的分類,是回到大約20世紀70年代末、80年代初的。那些主人公,大機率都是要搭上改革開放的順風車,賺取巨額紅利的了。比如搶先去上海,購買股票認購證之類。

不過,有一本我個人非常喜歡的穿越改革工業文《大國重工》,非常硬核,主人公馮嘯辰沒去賺那種投機取巧的暴利,卻一心一意的想要幫助咱們國家的工業,尤其是重大裝備製造業,獲得更好的發展。

事實上,所有穿越回到過去的人物,手頭最大的兩個武器,無非是超越於時代的知識技能,以及對於歷史發展方向(甚至某些歷史大事的關鍵線索)的把握。

於是我常常會想:作為一個軟體工程師,我非常了解軟體開發、軟體工程、開源軟體等等相關知識和技術。如果我穿越回到 IBM PC 剛剛發明的1981年,或者是穿越到GPL 首次發布的1989年,再或者是穿越到 Linus 剛剛開始寫 Linux 的1991年,我可以(能夠、應該)做些什麼呢?如果我不僅希望自己個人發財,還希望咱們國家的軟體產業更好的發展,還希望咱們國家的開源能夠有更好的發展,我又可以(能夠、應該)做些什麼呢?

追趕曲線與距離的關係

說實話,在各類穿越小說中,越是靠近現代的穿越,就越是難寫。重生到30年的改革穿,自然是最難的。個人 YY 式奮鬥的模式還好寫一些,妄圖用現代思維,改造歷史,推動歷史發展進程的小說,就更加難寫。

具體到改革開放這40年,為什麼更加難寫呢?因為,在這40年里,中國的發展思路已經很難更加正確了。積極學習西方發展的先進經驗,積極引進西方先進的科學與技術,努力在認清現實,理解差距的前提下,奮力追趕。

為啥西方可能走彎路,而我們卻能夠走直線呢?因為西方領先了我們100~200年,他們走過的彎路,我們不必再走。

問題在於,有不少新興產業,比如軟體產業,西方也不過是出現了60年(1959年正式提出),軟體工程至今不過51年(1968年提出),個人計算機以及相關軟體產業的爆髮式增長,至今不到40年,開源軟體的概念(1998年提出),至今不過21年。

追趕成熟產業,我們可以不走彎路。而追趕新興產業,我們多半就會跟在後面走彎路,要想追上去,何其困難?

經驗曲線與人月神話

軟體產業作為一個新興產業,與傳統產業,尤其是製造業,有哪些區別呢?最近我在讀的另一本書《戰略簡史》,其中提到了「波士頓經驗曲線」,給了我深刻的啟發。

1960年,波士頓諮詢公司(Boston Consulting Group)的布魯斯·亨得森(Bruce D. Henderson)首先提出了經驗曲線效應(Experience Curve Effect)。簡單的描述是:當生產的累積數量增加後,相對應的平均成本下降。一般而言,形成經驗曲線的原因有三項,分別是:

學習效果:由於重複工作所帶來的學習效果。

科技進步:從事一項工作一段時間後,較容易進行生產製程改善。

產品改善:生產產品一段時間後可以清楚了解顧客偏好,經過設計改善,可以在不影響功能下,使零件減少。

這個經驗曲線,能不能應用於軟體產業呢?一家軟體公司,開發第一個軟體,到開發第10個軟體,他的生產成本,是不是能夠逐漸下降呢?

作為業內人士,我們經常聽到的卻是這種說法:

「大多數大型軟體項目都沒有達到預期的目標,交付推遲,預算超支,功能不完善。許多軟體項目徹底失敗了。」 — —FDD

「當前,軟體開發的情況並不理想。很多系統最終不能交付,或者最終交付的系統經常性地發生延期或者超出預算;系統常常不能滿足用戶的需要,其結果是不得不一遍又一遍地開發。」 — —AM

「許多軟體項目,或許應該說大部分軟體項目實際的開發周期比預期的要長,實際的花費比預期的要多,實現的功能比預期的要少。這造成了嚴重的質量問題。 — —某一本 CMM 的書籍

在1974年出版的《人月神話》這本書里,我們可以看到這種論斷,甚至在40年之後出版的紀念版本中,這些論斷依然正確!

沒有銀彈」:沒有任何技術或管理上的進展, 能夠獨立地許諾十年內使生產率、 可靠性或簡潔性獲得數量級上的進步。

不要相信人月神話」:當你向一個複雜的項目投入更多的人力時,反而會進一步延長工期!

如果不能正確認識軟體這個行業的本質,我們將永遠陷在「焦油坑」之中,就別再奢望什麼成本逐步下降的經驗曲線了。

《大教堂與集市》的觀點

回顧行業的發展,似乎情況並沒有那麼糟糕。我們的確在開發越來越複雜的軟體,我們的開發效率也越來越高了。

在《大教堂與集市》這本開源聖經中,作者 Eric S·Raymond 更是自豪的宣稱:有一種與傳統軟體開發模式(大教堂模式)截然不同的全新的模式:集市模式。如果開發的協調者有一個至少和網際網路一樣好的通訊媒介,而且懂得如何不通過強迫來領導,多個頭腦不可避免地優於單個頭腦。

這一論斷,與人月神話的觀點,看起來正好相反啊!怎麼解釋呢?社區開發固然可以選擇集市模式,企業開發,也可以選擇集市模式嗎?好的通訊模式容易實現,不通過強迫來領導,在一個企業里,現實嗎?

2000年,Tim O'Reilly 就發明了一個新的詞彙:Inner Source。按照 Wikipedia的說法:InnerSource is the use of open source software development best practices and the establishment of an open source-like culture within organizations. The organization may still develop proprietary software, but internally opens up its development.

將開源的開發模式應用於企業內部,並且在企業內部營造類似於開源社區的文化。這樣會帶來眾多的益處,這就是:內源。

參考:

https://en.wikipedia.org/wiki/Inner_source

開源對於軟體產業的貢獻

必須承認,真正在企業內部踐行內源的企業,還是非常罕見的。不過,開源對於軟體產業,也不僅僅是在開發模式方面,更加重要的貢獻,還是得回到經驗曲線來談。

在此,我想提出一個假說:在一個行業的早期發展階段,是很難有穩定的經驗曲線的,原因在於這個行業還非常的不成熟,沒有摸索出一套行之有效的,積累經驗,持續改進的方法。即使到了今天,我們依然可以認為,軟體開發這個行業,雖然已經有了很多激動人心的重大進展,但是卻還沒有成為一個成熟的,能夠穩定發展的行業。在這40~50年的時間裡,軟體開發使用各種隱喻來套用在自己的工作實踐中:比如建築工程,比如手術團隊,比如流水線,比如工匠作坊。

所有這些隱喻,都可以算作是盲人摸象的心得,用來指導軟體開發的實踐改進,往往只是緣木求魚。到了今天我們回看過去的進展,也許只有3個方向的改進,是切實有效的:

  • 敏捷疊代式的開發(本質上就是小步試錯,以降低試錯成本,快速逼近正確答案)
  • 可復用的原始碼(本質上就是減少重複勞動,不必每個項目都重頭開始寫代碼)
  • 有工具支撐的 DevOps(本質上就是在軟體開發的每一個環節,都不斷改進工具,提高效率)

在這三個方向之後,第二、第三條事實上都是靠開源支撐起來的。開源項目,開源框架,開源組件,開源模板,開源的項目管理工具,開源的開發工具,開源的測試工具,開源的運維工具,甚至誇張一點說,現在軟體行業的眾多基石,幾乎全都是開源的。

這正是軟體行業,積累經驗的方式。開原始碼與開源工具,凝聚了軟體開發、系統架構,項目管理等諸多經驗,使得企業不用付出高昂代價,不用自行摸索,不用從零開始。

現在,我們已經很難想像一家公司,完全不採用任何開源的技術,不引入任何的開原始碼,完全靠自己公司的員工,一行一行的寫出自己的軟體來了。

開源極大的提升了軟體產業的生產效率,極大的降低了軟體產業的生產成本。所以人們才會斷言:軟體正在吞噬世界,而開源正在吞噬軟體。

開源為何能夠走到今天?

如果用這個問題,去問美國政府:你們是如何發展美國的開源產業的?估計他們會一臉懵。或者更加困難的是:我們都不知道該去問美國政府的哪個部門。咱們還是只能回顧歷史,去看看當年究竟發生了哪些重要的事件,以及這些事件的前因後果。

目前最方便找到的線索,還是英文的 Wikipedia :

https://en.wikipedia.org/wiki/History_of_free_and_open-source_software

1.在開源出現之前,美國商人之間,就已經有了分享技術的做法(1911年起)

1911年,亨利·福特發起成立了一個新的協會,後演變為汽車製造商協會。該協會使得美國所有汽車製造商之間的專利,得以免費公開共享,到二戰前,這些製造商之間共享了92項福特專利和其他公司的515項專利。

簡評:通過分享技術,建立的商業聯盟

2.在學術界,長期存在開放與合作的文化,後來這些文化被進一步發展為:黑客文化(1950~1960年代)

軟體的原始碼,通常被視作在「公共領域共享的成果」,就像所有其他的學術成果一樣,在企業界與學術界之間,共享流通。更多信息,可以參考《黑客——計算機革命的英雄》一書。https://book.douban.com/subject/6860890/

簡評:正是這種學院派文化,為後來 Richard Stallman 反對閉源軟體的自由軟體運動,埋下了伏筆。

3.在版權與專利領域的重大進展,使得基於軟體的商業模式,得以出現

  1. 1976年2月3日,比爾·蓋茨發表《致愛好者的公開信》,譴責軟體盜版行為
  2. 1976年10月19日,美國國會修改《版權法》,把計算機軟體納入版權保護範圍
  3. 1978年1月1日,新《版權法》生效
  4. 1981年,美國最高法院對《Diamond v. Diehr》案件的宣判,確立了軟體專利合法,肯定了軟體智慧財產權

簡評:也許很多人會覺得,這是歷史在開倒車。但是在我看來,如果沒有版權和專利對於軟體的保護,計算機軟體這個行業都不會出現,因為沒有任何人能夠賺到錢,全世界的程式設計師總數,可能到現在都不會超過幾萬人。但是,在這些法律設施具備之後,的確有越來越多的商業公司,宣布將自己的軟體閉源了。

4.Richard Stallman 發起自由軟體運動

  1. 1983年9月27日,發起 GNU 計劃,
  2. 1985年10月,建立自由軟體基金會
  3. 1989年1月,發布 GPL,提出 Copyleft 概念

簡評:乍一看,Copyleft 當然要比 Copyright 「高尚」,但事實上,如果一個國家沒有嚴格執行保護 Copyright 的政策,Copyleft 也不會那麼有價值。這是一個硬幣的兩面。

5.Open Source 運動興起

  1. 1991年,Linus 開始開發 Linux 作業系統內核
  2. 1997年,Eric S. Raymond 首次發表《大教堂與集市》
  3. 1998年1月,Netscape 公司宣布將 Navigator 瀏覽器的原始碼開源,在加利福尼亞州帕洛阿爾托舉行的戰略會議上,Open Source 這個詞彙,首次出現
  4. 1998年4月,Tim O'Reilly將原本計劃召開的《Freeware Summit》改名為《Open Source Summit》,在此次峰會上,Open Source正式定名
  5. 1998年,開源軟體促進會正式成立

簡評:從自由軟體,到開源軟體,這其中的變化,使得技術分享的文化與商業利益之間,有了更多妥協/調和的可能性。

6.開源組織,各種非營利組織,尤其是是開源基金會的興起

  1. 1999年3月,Apache 軟體基金會
  2. 2000年,Linux 基金會
  3. 2000年8,GNOME 基金會
  4. 2003年7月,Mozilla 基金會
  5. 2004年2月,Eclipse 基金會
  6. 2005年2月,軟體自由法律中心
  7. 2005年11月,圍繞Linux的專利聯盟,開放發明網絡(Open Invention Network)成立

參考:

https://opensource.com/resources/organization

簡評:開源興起背後,其實是一批企業的興起,比如 VA Linux 和 Red Hat 於1999年進行的 IPO,股價大幅飆升,使得開源有利可圖,成為現實。在此之後,開源技術與商業正式攜手,基金會和專利聯盟,則是企業間技術協作的「正確姿勢」。

國家應該做些什麼?

簡單的梳理過去幾十年開源發展的歷史,我們可以發現三個關鍵詞:

教育,尤其是高校教育,更重要的是,支撐高校教育背後的「學術傳統」。

法律,尤其是保護智慧財產權的法律,更重要的是,能夠保護技術、保護創新的法律執行力,才能凸顯出分享的可貴,與奉獻的偉大。

基金會,尤其是企業間因為共同的利益而自發成立的基金會,才能使企業更好地支持和扶植開源技術。

話不多說,點到為止吧。

關鍵字: