「開放原始碼」(Open source)是一種軟體工程的方式,藉由將程式原始碼開放給不特定人觀看、傳播和修改,來吸引開發者加入,以加速軟體的開發和改良軟體的品質,並以授權書(license)明定原程式作者、衍生程式作者、和其他人之間的權益。在二十一世紀此共同創作的模式擴大到文件、音樂、照片、影片等數位創作的領域。

/!\ 建構中

This page is not complete, you may expand it by clicking here.

典故

開放式的共同開發模式由來以久,但 open source 一詞直到 1998 年 2 月 3 日才拍版定案。

在 1998 年網景公司瀏覽器大戰中已經顯露敗象,從 NCSA 的 Mosaic 開放式軟體發跡的網景覺悟到,或許要回要開放的道路上才能扳回一城。在此之前,Eric S. Raymond發表了《教堂與市集》、《智域中拓荒》、《神鍋》等一系列文章,從軟體工程、社會學和心理學等角度剖析自由軟體的聯合開發模式和社群文化,對於此模式為何能開發出高品質的軟體提出許多深入的見解,其中的名句有:

網景請了 Eric S. Raymond 當顧問,討論該如何將原始碼釋出。

因應這件事,許多自由軟體的倡導者認為這是第一個知名公司支持自由軟體的案例,要趁機提倡自由軟體,因而在美國加州 Palo Alto 舉行了一個策略會議。因為自由軟體的英文 free software 的 free 同時有免費的涵義,與會者認為以營利為目的、要向股東負責的商業公司多因此觀望而裹足不前,在會場大家就開始討論要用什麼新名詞來代表這類軟體。

Michael Tiemann 提出 "sourceware",Christine Peterson 提出 "open source",Eric Raymond 支持 open source 一詞,在現場投票的結果,通過了 open source 一詞,就此確定下來。

開放原始碼定義

原文:1.9 版

開放原始碼不僅僅是允許他人取用原始碼而已,其軟體的散佈必須滿足以下的條件:

  1. 免費再散佈(Free Distribution)
    授權書中不得限制任何人將軟體當成某軟體總集的一部分販售或饋贈給他人,也不得因販售行為要求授權費或其他費用。

    • 原理:藉由限制授權書必須允許軟體的免費再散佈,我們消除掉為了近利而失去遠利的因素。若不這麼做,開放原始碼協力者會受到很大的壓力要他叛離。

  2. 原始碼(Source Code)
    程式必須含有原始碼,也必須允許原始碼和編譯後形式的散佈。若原始碼未隨某產品散佈,則必須有完善公開的方式讓他人以不高於重製費用的成本取得原始碼,最好是由網際網路免費下載。原始碼必須是程式師得以修改該程式的優先形式,刻意將原始碼弄得難以理解是不允許的,preprocessor 或 translator 產生的中間格式是不允許的。

    • 原理:因為不經修改無法演進程式,我們要求能取用未模糊化的原始碼。既然我們的目的是讓軟體的演化容易發生,我們要求,程式的修改必須很容易。

  3. 衍生著作(Derived Works)
    授權書必須允許他人對程式的修改和衍生程式,也必須允許他人以相同的授權書散佈修改過的程式。

    • 原理:只有讀原始碼的能力並不足以支持獨立同儕評鑑和快速的人擇式演化,要讓快速演化發生,人們需要能散佈實驗性的改作。

  4. 原作者原始碼的完整性(Integrity of The Author's Source Code)
    授權書得限制他人散佈修改過的原始碼,但只有在允許散佈編譯時期用的補丁(patch)的條件下才可以。授權書必須明確地准許從修改過的原始碼編譯出軟體來。此外,授權書得要求衍生程式使用和原軟體不同的名稱或版號。

    • 原理:鼓勵大量改良是件好事,但是使用者有權利知道他用的軟體由誰負責。作者和維護者則有對等的權利知道他們負責的是什麼,以保護他們的名譽。 因此,開放原始碼授權書必須保證取用原始碼沒有困難,但得要求散佈的是未加料的原始碼加上補丁,如此人們可以取得「非官方」的修改、同時又可和基準原始碼分清楚。

  5. 不得對任何人或團體有差別待遇(No Discrimination Against Persons or Groups)
    授權書不得對任何人或團體有差別待遇。

    • 原理:為了從過程中得到最大的好處,最大多樣性的人和團體應該有資格貢獻到開放原始碼中,因此我們禁止任何開放原始碼授權書把任何人排除在外。 有些國家對某些軟體有輸出限制,符合本定義的授權書得警告受權者這些限制,並提醒他們要守法;但不得自行加上這類的限制。

  6. 對程式在任何領域的使用不得有差別待遇(No Discrimination Against Fields of Endeavor)
    授權書不得限制任何人在任何領域使用該程式,比方說,不得禁止商業使用或在基因研究中使用。

    • 原理:這項條款的主要意涵是防止禁止商業使用的授權陷阱,我們要商業使用者加入我們的社群,不是排擠他們。

  7. 授權書的散佈(Distribution of License)
    附於程式的權利必須讓所有收到該程式的人享有,而不需另外授權。

    • 原理:這項條款的主要意涵是防止軟體被保密協定等間接方式封閉起來。

  8. 授權條款不得專屬於特定產品(License Must Not Be Specific to a Product)
    附於程式的權利不得因該程式屬於某發行套件而改變。如果從發行套件中抽出該程式、並依該程式的授權書使用或散佈,所有收到該程式的人應該和收到發行套件的人有相同的權利。

    • 原理:這項條款封鎖掉另一族的授權陷阱。

  9. 授權條款不得限制其他軟體(License Must Not Restrict Other Software)
    授權書不得對一起散佈的其他軟體做出限制,舉例來說,授權書不得堅持在同一媒介上一起散佈的程式一定要開放原始碼。

    • 原理:開放原始碼軟體的散佈者有權選擇軟體。
      對,GPL 符合這個要求。和 GPL 程式庫連結的軟體只有在形成單一程式時才會繼承到 GPL,若只是一起散佈則不受限。

  10. 授權條款必須技術中立(License Must Be Technology-Neutral)
    授權書中不得有暗示任何單一技術或介面風格的條款。

    • 原理:這個條款是針對會要求簽名或同意在授權人和受權人之間建立契約的授權書的而訂的。要求所謂的「按下同意」的授權條款會和 FTP 下載、CD-ROM 精選、web mirror 等軟體散佈方式產生衝突;這種條款也可能阻礙程式碼的再利用。符合本定義的授權書必須允許以下的可能性:(a) 軟體的再散佈會在 web 之外的不支援「按下同意」方式的管道發生,(b) 所涵蓋的程式(或被再利用的部分)可能會在不支援彈出式對話窗的非圖形介面環境中執行。

有一些軟體將原始碼公開出來,但其授權書不符合《開放原始碼定義》,因此不能說是開放原始碼的軟體。一個知名的例子是微軟 Windows CE,在 2006 年 11 月 1 日發表的 CE 6.0 kernel 原始碼,其shared source license 授權書允許受權人觀看、修改、散佈、展示原始碼,但是對原始碼可應用的產品有所限制(不得用在非 Windows CE 之外的平台),違反上開之第八款,所以不是開放原始碼軟體。

倡導組織

世界各地倡導開放原始碼的組織很多,其中第一個就是 Eric Raymond 和 Bruce Perens 成立的非營利組織 Open Source Initiatives(OSI)。Bruce Perens 於 1997 年 6 月依據 Debian 的 Free Software Guidelines 制定了開放原始碼定義來為開放原始碼軟體授權提供嚴謹的定義。

開放原始碼授權書

至 2006 年 10 月為止,有 58 種授權書通過 OSI 認定符合開放原始碼定義,而獲得了開放原始碼標章。然而授權書種類的過度增長反而造成開發者不知該如何選擇,因此 OSI 於 2005 年發表了 License Proliferation Statement,並成立了 LP 委員會,啟動減少授權書的行動,希望很少人用的授權書的提出者自願性地將之廢除。

開放原始碼軟體之取得

開放原始碼軟體的作者通常必定會把軟體和原始碼放在網際網路上供人下載。有的會有自己的網站(如 Linux kernelApacheMozilla等等),但更多的專案則是放在專為開放原始碼服務的主機代管網站上,其中最知名的是 SourceForge。有關開放原始碼軟體的新版發佈的消息,則可在 freshmeat 找到。

若是從作業系統開始就是開放原始碼的,如 Linux 和 BSD,則大部分常用的開放原始碼軟體會在安裝作業系統時一併安裝起來,節省很多工夫和時間。最常見的開放原始碼作業系統包括 Red HatFedoraUbuntuDebianSuSEMandrivaFreeBSDOpenBSDOpenSolaris 等等。

與自由軟體之間的爭論

最早致力於提倡自由軟體的 Richard M. Stallman 基於以下理由對 open source 一詞是反對的。

  1. 自由軟體追求的是自由的精神/原則/哲學,開放原始碼講究的是軟體的品質,他認為高品質是自由精神的結果,而原則比結果重要。
  2. 不熟悉 open source 的人望文生義,可能以為只要把原始碼開放出來就算是 open source 了,這反而會造成更大的混淆。

詳見 Richard Stallman 的文章 Why "Free Software" is better than "Open Source",但也如同文章中所說的,自由軟體和開放原始碼是兩個在原則上不同、但在實際對議題或軟體的建議上相去不遠的陣營,這兩個陣營不互相為敵,共同的敵人是版權專屬軟體。

因此,雖然有人贊成自由軟體的理念而反對開放原始碼(如 Richard Stallman),也有人贊成開放原始碼的方法論而反對自由軟體近乎基本教義派的作法(如 Eric Raymond),但是實際上符合自由軟體定義和開放原始碼定義的軟體,交集遠遠大於差集,許多人並不選邊站。

外部連結


CategoryConcept CategoryMethodology

開放原始碼 (last edited 2007-04-24 04:02:53 by PingYeh)