開放源碼定義與開放源碼促進會

從時間進程的角度來看,「開放源碼 (open source)」一詞的出現較自由軟體來得晚。九0年代末期,自由軟體逐漸商業化,但是不少人將「自由軟體 (free software)」中的 ”free” 誤以為是免費的意思,使得自由軟體商業化遭遇許多阻礙,因此有人提議另選一個詞來替代自由軟體,最後「開放源碼 (open source)」一詞雀屏中選,並且仿照自由軟體,由當時 Debian 計畫的核心領導人 Bruce Perens 主筆撰寫出開放源碼定義 (Open Source Definition)(註一)。此外,還成立開放源碼促進會 (Open Source Initiative, OSI) 來管理開放源碼定義以及審核條款,只要一份條款被審核通過是符合開放源碼定義,就可以稱之為開放源碼授權條款,採用開放源碼條款散布授權的軟體即是開放源碼軟體,若一份商業產品中包含有開放原碼軟體,其包裝上可以標上開放源碼促進會的證明標章,認識這個標章的消費者就可以知道產品中有使用到開放源碼軟體,進而因為開放源碼軟體特有的優點而購買產品。

目前開放源碼的定義共有十點,內容如下:

 

一、自由再散布 (Free Distribution)

使用者可以自由重製程式,並且隨意地散布或販售這些程式。現行商業軟體大多收取高額授權金,程式的散布流通性因此降低,為了避免這樣的障礙,條款不得針對使用者重製與散布程式的行為要求支付授權金或類似的費用。

這樣的要求屏除賺取短期金錢利益的企圖,因為透過程式是可以賺取長期利潤的,這樣的利潤不在於程式授權金,而是在於程式相關服務所產生的利潤,例如:客製化利潤、升級服務利潤、書面資料出版利潤、嵌入式硬體銷售利潤等等。

 

二、原始碼 (Source Code)

原始碼是下面第三點修改程式與產生衍生著作的基礎,所以原始碼的取得必須沒有障礙,取得的原始碼必須容易修改。

程式必須包含原始碼,而且條款必須允許程式以原始碼或編譯過的形式來散布。若程式的散布未包含原始碼,則必須提供一個大眾化的方式讓他人可以取得原始碼,若想要因此收費,所收費用也不得超過合理重製程式所需花費。若是透過網路讓他人下載原始碼,則不可以收取任何費用。

使用者所取得的原始碼必須是修改程式的最優先形式。若為了增加他人修改程式的困難,而處心積慮地混淆原始碼原貌,是不被允許的。像預先處理程式 (preprocessor) 所產生的中間碼等,這類在編譯完成之前各種中間形式的程式碼,都不符合此點的要求。

 

三、衍生著作 (Derived Works)

一個沒有後續維修的程式所能發揮的功用相當少,而允許修改是後續維修的必要條件,所以條款必須允許使用者可以修改程式,並且因此產生衍生著作。若是條款要求這些修改及衍生著作必須採用與原程式相同的內容來散布,也是可以的,不過這並非開放源碼定義的強制性要求,只是程式著作權人可以選擇這樣的授權內容。像 BSD 條款允許他人將程式原始碼完全封閉起來,但 GPL 就完全不允許,而要求所有修改與衍生著作都必須採用 GPL 授權。

 

四、原創作者者原始碼的一致性 (Integrity of The Author's Source Code)

修改過的程式有可能被誤認為是程式原創作者自行修改的結果,為了避免這樣的誤解造成程式原創作者聲譽上的影響,條款可以限制原始碼不得以修改過的形式來散布,不過這樣的限制只可能在下列的情況下被允許:

(一)為了讓程式在建置過程中 (at build time) 可以被修改,要允許修正檔 (patch files) 與原始碼一起散布,

(二)若修改部分已經結合到程式中,必須明示他人可以散布這樣建置完成的程式,

(三)條款可以要求修改過的衍生程式必須加上不同的名稱或版本號,用來跟原始程式做區別,不過這當然並非強制性。

這樣的規定將程式原始部分與後續修改部分分開,不致產生混淆,而就算是修改過的程式,只要加上不同於原始程式的版本號或名稱,即可區別,將可不致影響原創作者的聲譽。

 

五、不得對任何人或團體有差別待遇 (No Discrimination Against Persons or Groups)

為了讓開放源碼這樣的運作模式發揮到極致,必須讓不同背景的個人與團體都可以對程式有所貢獻,因此一份開放源碼的條款不會有將任何個人或團體屏除在開放源碼運作過程之外的規定。

有些國家對於特定種類的軟體有出口管制規定,若在條款中提醒使用者遵守這些規定,並不構成這裡所謂的差別待遇。

 

六、對程式在任何領域內的利用不得有差別待遇 (No Discrimination Against Fields of Endeavor)

這一點的內涵如字面所示,不過主要的用意是在於:避免條款中出現禁止開放源碼程式被商業利用內容。開放源碼社群歡迎商業使用者的加入,而不是將其屏除在外。

 

七、授權條款的完整散布 (Distribution of License)

條款所授與的權利不可受到限制,取得程式者必須完整地取得條款所授與的權利。例如:在條款之後附加保密協議 (non-disclosure agreement),其中規定,拿到程式者不得將程式的任何資訊散布給他人,這樣的附加條款等於限制取得程式者再散布程式,違反授權條款的完整散布。

 

八、授權不得專屬於特定產品 (License Must Not Be Specific to a Product)

程式使用者所享有的權利,不得因為該程式是否屬於某特定軟體的一部分而有差異。若該程式自特定軟體中抽離,並且繼續採用原來的條款單獨散布,使用者所享有的權利,跟程式與特定軟體一同散布時相同的話,就樣的授權內容就符合這點的規定,反之則否。

此點是預防性的內容,防止使用者所享有的權利僅限於程式被包含在特定產品中,進而影響到第一點規定的自由再散布特性。

 

九、授權不得限制其他軟體 (License Must Not Restrict Other Software)

條款不得針對一同散布的其他軟體有所限制,例如不得規定在同一散布媒介上的其他軟體也必須是開放源碼軟體。

必須注意的是,本點與第四點規範的情況不同,第四點是針對修改程式產生衍生著作的情況而言,本點是針對程式尚未被修改,僅單獨與其他不同程式或軟體放在一起散布的情況而言。因此 GPL 符合這一點,因為若單純將 GPL 程式與其他程式或軟體放在一起散布的話,GPL 並不要求其他程式或軟體也必須要採用 GPL 授權。

 

十、授權必須技術中立 (License Must Be Technology-Neutral)

授權不得以特定技術或介面模式為前提。這點主要是為了避免條款被限制在網際網路或圖形化使用環境下才可以成立,例如條款規定採用「點選即視為同意 (click -wrap)」的程序作為使用者接受條款的要件,這樣的規定阻礙程式透過紙本形式散布,因此不符合技術中立要件的要求。

 

開放源碼定義的原文抽象模糊,因此在應用上當然也有模糊不清之處,在經過許多申請案例的討論後,目前各點的內容均已經有大致的判定方向或範圍,不過在實際案例中,還是有少數條款的內容與上述定義略有出入。

 

【參考資料】

  1. 開放源碼定義原文請見:OSI,The Open Source Definition (Annotated)
  2. Bruce Perens 自己對於開放源碼定義的註解:The Open Source Definition

 

註一:Perens 當時是根據 Debian Free Software Guidelines (DFSG) 為基礎,修改之後完成開放源碼定義的第一版。DFSG 內容請見:https://www.debian.org/social_contract#guidelines





分類: 基本觀念