開源軟件運動爲什麼流行起來?

作者 | 周荔人       責編 | 歐陽姝黎

相信看完本篇文章,你就會明白。

另起爐竈

兩位 “天降猛男” 成立了 Open Source Initiative ,中文爲開放源碼促進會,簡寫爲 OSI 。

他們認爲自由軟件運動缺乏市場營銷活動,自由軟件運動的目的不僅僅是爲了市場份額,更重要的目的是宣傳自由軟件思想,這是開源運動興起的第一個原因。

第二個原因是自由軟件這個詞教育成本很高。在雷蒙德的個人博客中,他對於自由軟件的缺點有了很詳細的記錄:

“它有兩個問題。首先,這令人困惑;‘自由’一詞非常模糊,自由軟件基金會必須不斷努力的宣傳。‘免費’是‘不收錢’的意思嗎?還是說‘任何人都可以自由修改’,還是其他什麼?其次,這個詞讓許多公司類型感到緊張。”

這點對於初期尋找投資的紅帽公司的影響尤爲顯著,當跟投資人說:“我們的商業模式是銷售免費(free)軟件” 的時候,投資人的表情無不透露出大大的疑惑。

他們在討論如何創立一個新的品牌,來引導這場運動。最後克里斯汀 · 彼得森提出了 “open source” 這個詞,受到了大家的一致好評,中文翻譯就是 “開源軟件”,開源軟件這個詞在這次會議上被首次創造出來。

在這次會議不久,1998 年 2 月 5 日,埃裏克 · 雷蒙德和硅谷的一些 Linux 用戶集思廣益,最後確定這個詞語,並且要求以前使用自由軟件的地方,都要改成開源軟件。

開源軟件

開源模型

開源文化

Debian 開源指南

……

1998 年 2 月底,在雷蒙德和布魯斯的倡議下,成立了 Open Source Initiative,縮寫爲 OSI,中文翻譯爲開放源代碼促進會。他成立的目的有以下幾個:

  1. 宣傳開源軟件思想,提高人們對開源軟件的認識。

  2. 建立開源軟件和各社區溝通的橋樑。

  3. 定義開源,防止開源思想和精神被濫用。

雷蒙德擔任 OSI 的第一任主席,直到 2005 年退休。

一場轟轟烈烈的開源運動正式開始了。

網景:

第一個將商業產品開源的公司

1997 年 5 月 21 日,雷蒙德在 Linux Kongress 上發表《大教堂與集市》這本書。

1998 年 1 月 22 日,受《大教堂與集市》書中描寫的軟件開發模式影響,網景公司正式宣佈開源其網景通訊家套件開源,項目名稱爲 Mozilla。以此來對抗被微軟的 IE 瀏覽器不斷出蠶食的瀏覽器市場。

網景這家公司當時的問題在於,當時網景的產品需要微軟的技術支持才能夠正常運行。網景通訊家運行在 Windows 上,這是必不可少的一個部分。但是後面,微軟根據其微軟網絡計劃,發佈了 IE 瀏覽器。

網景通訊家和 IE 瀏覽器誰是親兒子,大家應該門清兒。

網景的產品要根據 Windows 的產品策略做調整,在 IE 發佈之後,這種調整意味着網景不斷流失的市場份額。

說起來容易做起來難,Mozilla 的開源之路困難重重。

林納斯說:“對於那些以公司自身資源爲起點建立和維護開源運動的,對外開放是繞不過去的大問題。公開源代碼,嘴上說起來簡單,但往往都會陷入一種二元社羣結構:公司內部的’我們’和公司外的’他們’”。

大量的決定如果只是在公司內部的咖啡桌上達成一致,而不是對外公開,外部人員就算有天大的想法往往會被否定。

這說的就是網景。

在項目剛開源不久,網景公司內部的 “我們” 和公司外部 “他們” 就對立起來了。

公司內部有一些反對陣營聲稱,他們不會接受外部人員的那些小補丁。

開源不是將代碼開放就不管了,重點是管理和運營社區。而網景恰恰是前者,他們只開放了一大堆源代碼,真正參與到代碼構建中的也只有網景的人。

而且這些源代碼相當老舊,難以維護。被開放出來的源代碼幾乎都被廢棄了。

開源等於重寫。

開了一個寂寞。

而且更大的問題是,網景僅僅將開發版本的源代碼公開了出來,但是在公開源碼的過程中,這個版本就已經出了很多問題,開發版本的 Bug 很多。

此外,在開源許可證方面,網景通訊家使用的不是 GPL 授權。他們魔改了 GNU GPL ,如果你想更改了網景通訊家的源碼,你需要使用魔改後的 NPL (Netscape Public License)許可,如果你要爲網景通訊家新增程序,你需要使用的是 MozPL(Mozilla Public License)。

最後,網景通訊家的代碼並不全部屬於網景公司,例如 Java 部分就是 Sun 公司授權給他們用的。

結果可想而知,網景公司在開源初期不但沒有把項目做大,反而引來了很多負面新聞。

直到公司內部的一次會議的消極決定傳出來,才讓網景公司痛定思痛,狠心將項目相關的源代碼開放。

整個項目終於變得有活力了。

雖然開源之初困難重重,但是還是有好消息的。在網景開源不到 24 小時的時間裏,一個自稱 “Mozilla 祕密小組(Mozilla Crypto Group)” 的澳大利亞團隊就創建了一個加密模塊。

由於當時的美國的進出口限制,加密算法無法出口。非美國的地區無法使用美國的加密技術。這個小組把這個問題解決了。

還是由於美國進出口限制,這個小組的代碼一旦進了美國,就無法出口了。

作爲 Mozilla 項目開源之初最偉大的一次嘗試,這些代碼並沒有辦法合入 Mozilla。

當時最出名的兩個項目是 Linux 和 Mozilla,這兩個項目代表當時開源圈子的形象,所以在網景開源的一年時間裏,誰都不想對網景做出任何負面的評價。擔心會給開源理念留下壞名聲。

雷蒙德在聽說網景準備開放源 Mozilla 後,在給網景寫的一封信中,也寫了對於網景此舉的擔憂。

“我非常不希望這些不良後果發生,因爲如果網景的嘗試受到挫敗,對於我所由衷信仰的自由軟件文化,會有極端負面的影響。自由軟件模式會落得極不受信賴,使得未來類似的嘗試將難如登天。”

關於網景通訊家這套軟件,如果往深挖的話,你會發現網景通訊家是基於一款開源的瀏覽器項目開發的,項目名稱叫做 NCSA Mosaic, 該項目源碼現在你還可以在 Github 上看到。原本這個項目是伊利諾伊大學厄巴納香檳分校的國家超級電腦應用中心(NCSA)開發,這個是美國的一個國家項目。所以着實有點諷刺。

NCSA Mosaic Github 地址:

https://github.com/alandipert/ncsa-mosaic

大教堂與集市

埃裏克雷蒙德 1957 年 12 月 4 日出生於美國馬薩諸塞州的波士頓。

1976 年開始接觸黑客文化。

他是 20 世紀 80 年代 GNU 最早的一批貢獻者之一,還記得 GNU Emacs 嗎?這個項目最初也是雷蒙德的建議斯托曼開發的。

1997 年以後,雷蒙被廣泛公認爲是開源運動的主要領導者之一。

他是開源運動的主要理論家。

他是開源軟件思想的傳教士。著有《大教堂與集市》一書。

這本書被認爲是開源運動的獨立宣言。

它清晰、透徹和準確的描述了開源運動的理論與實際應用,對開源軟件運動的成功和 Linux 操作系統的廣泛採用起到了至關重要的作用。

理查德斯托曼和林納斯托瓦茲雖然都堅持源碼開放,但是兩者在軟件開發模式上卻大不相同。

斯托曼採用的是封閉開發,GNU Emacs 就是這樣開發出來的。

在 Emacs 最終版發佈之前,所有的代碼僅有斯托曼和其開發團隊能夠看到。開發、測試、發佈的過程均由專業團隊操作。普通的開發者只能等待項目完成後的源代碼。

GNU Emacs 的這種軟件開發模式就是 “大教堂” 模式。

那時的人們認爲,像操作系統這樣的複雜的軟件,都必須在一個小而緊湊的組織範圍內,通過精心的協作才能夠完成。這種模式現在仍然存在於大多數的商業軟件的開發模式中。GNU 工程使用這種模式構建了宏偉的軟件殿堂。

大教堂式的軟件開發模式又拜 Unix 所賜,斯托曼那一代深受 Unix 的開發模式影響。

當時 Unix 推崇 “小工具”、“快速原型法”、“演化式編程”。

**小工具:**程序應該只關注一個目標,並儘可能把它做好。做一件事,做好它。在 Unix 的世界裏,echo 命令其實就是一個工具,有小工具就會有大工具,像 sort 和 diff 命令就是大工具。

**快速原型法:**先做一個可以包含全部功能的最小可行版本,來驗證功能是否符合預期。如果這個最下可行版本 OK,在考慮不斷豐富和完善該程序,否則直接放棄。

**演化史編程:**根據當前業務需要保留程序的功能,應用的過程中不斷迭代,業務變化時擴展、重構、重寫。

林納斯就不一樣了,在編寫完 Linux 0.01 版本後,注意版本號 0.01。

當時的黑客在版本號方面有一些不成文的規定,如果覺得這些版本可以拿的出手,就將它的版本號定爲 1.0,如果覺得程序還 “欠火候”,那麼就將它設定爲 0.01 。

雖然 0.01 版本還是一個 “欠火候” 的版本,但是還是林納斯跑到了 Minix 的新聞組上發了一封郵件,原文如下:

“使用 Minix 系統的朋友們,大家好,我正在編寫一個(免費的)能用在 386(486)AT 機上的操作系統(純粹個人愛好,不像是 GNU 那種大型的專業系統)。打從四月份起,我就開始醞釀這個系統了,現在他它應該快到火候了。因爲我的操作系統和 Minix 系統有點雷同(特別是文件系統的物理排列方式,主要是因爲它實用),所以我希望能夠得到一些你們的反饋意見。在使用 Minix 的過程中,你們有什麼滿意或者不滿意的地方,都歡迎來信提出。”

“我已經移植了 BASH 程序(1.08 版)和 GCC 編譯器(1.40 版),似乎一切正常。也就是說接下來的幾個月我會做出一些實用的東西,所以我想知道,大多數人在系統特性方面有何需求。什麼意見都行,不過我不可能保證每一項意見都能夠實現:-)”

——林納斯

後面的事情你也都知道了。由於 “林納斯比較懶散” 而且“喜歡授權給別人”,Linux 的功能很多是未曾謀面的開發者貢獻出來的。

“多發佈”和 “早發佈” 成爲了林納斯發佈 Linux 的策略,讓大家都可以儘快的體驗到系統的新特性。然後在接下來的幾天內從數以百計的使用者那裏獲得反饋。然後在開發過程中引入使用者的反饋的特性。

MIUI 覺得很贊。

林納斯開發 Linux 的這種軟件開發模式就是集市模式。

《大教堂與集市》對集市模式的哲學思想做了詳細的描述,相信下面的摘抄的一部分話會觸動到你:

  1. 好的軟件作品,往往源自開發者的個人需要。需求是發明之友。

  2. 優秀的程序員知道寫什麼,卓越的程序員知道改寫(重寫)什麼。

  3. 當你對一個程序不再感興趣的時候,你最後的責任就是把它交給一個可以勝任的接棒者。

  4. 如果想讓代碼質量快速提升並且有效排錯,那就把你的用戶當成開發者對待。

  5. 早發佈、常發佈。

  6. 只要眼睛多,bug 容易捉。

  7. ……

但是全書中完全看不到 “開源” 這個詞,因爲該書出版的時候,“開源”這個詞還沒有被創造出來。

上面說了, 1998 年 2 月 3 日纔開源這個詞兒。

在埃裏克雷蒙德的個人博客上有該書的最新版本,關注開源公衆號並回復 “大教堂與集市” 即可獲得網頁鏈接。

理查德斯托曼:

我們和搞開源的不是一回事兒

開源軟件運動脫胎於自由軟件運動,作爲自由軟件之父,理查德斯托曼並不是支持開源運動,並且和開源運動劃清界限。

根據埃裏克雷蒙德的描述,當斯托曼聽到要使用 “開源” 這個詞的時候,他認爲這羣人在冒險,因爲 “開源” 這個詞兒不純粹。

理查德認爲:“自由軟件”和 “開源” 基本上指的是同一範圍的程序。然而,出於不同的價值觀,他們對這些程序的看法大相徑庭。自由軟件運動爲用戶的計算自由而戰鬥;這是一個爲自由和公正而戰的運動。相反,開源理念重視的是實用優勢而不是原則利害。我們因此不贊同開源運動,也不使用開源這個詞。”

你給解釋解釋這兩者有什麼不同。

從斯托曼的話中可以看出,兩者在哲學層面的是不同的。

什麼是自由軟件?自由是人本來應該擁有的一種權利。自由使用軟件是人的一種政治權利,這些自由的權利和言論自由一樣,必須擁有,不可缺少。

自由軟件一定是開源軟件。

什麼是開源軟件?主張實用主義,什麼叫做實用主義?能夠受到商業認可、獲得商業成功就是實用主義。構建性能可靠、強大的軟件,滿足企業需求就是實用主義。軟件就是用來解決企業問題的。用戶可以看源碼嗎?當然可以,但是一些商業機密的代碼也可以是不開源的。

舉幾個部分開源的例子。

遠一點的例子,例如上面提到的 Mozilla 項目。

近一點的例子,例如 Kubernetes Borg 引擎,在開源之初就被谷歌當作商業祕密隱藏起來。當推特的工程師推出精心打造出屬於自己的 Borg 引擎,命名爲 Mesos 。谷歌也是審時度勢推出了一款功能類似 Borg 引擎而已。

開源軟件不一定是自由軟件。

從自由軟件和開源軟件的差異,我們可以發現:

理查德斯托曼是一個理想主義者。

“我一想覺得理想主義者很有意思,但就是有點沉悶,有時候還挺駭人的” 林納斯托瓦茲說。

來看一下我們現在的這個世界吧,開源軟件正在吞噬世界,自由軟件運動還在進行中。

或許理查德斯托曼和埃裏克雷蒙德還會持續爭論下去。

但是作爲開源軟件和自由軟件的受益者,我們應該銘記這段歷史。

我們有自由仰望星空的權利,也有腳踏實地建設這個美麗新世界的義務。

從這個角度出發,一個軟件是自由的、還是開源的,或許並不是那麼重要。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/30S8rl-Nn1h8Bnwj5Bcx1g