1. 程式人生 > >開發人員應留意的開源軟體許可證簡介

開發人員應留意的開源軟體許可證簡介

作為一個Java開發人員,開發中總會依賴很多的專案(jar包),一般來說這些專案大部分都是開源的,但是開源不等於隨意使用甚至商用。開源軟體都有著自己的許可證,不同的許可證自然約束也是不同的。稍不留神,可能會自討苦吃。

先引用百度百科的開源軟體的定義:

開源軟體定義Version 1.9

開源不僅僅表示開放程式原始碼。從發行角度定義的開源軟體必須符合如下條件:

1. 自由再發行

許可證不能限制任何團體銷售或贈送軟體,軟體可以是幾個不同來源的程式整合後的軟體發行版中的其中一個原件。許可證不能要求對這樣的銷售收取許可證費或其他費用。

2. 程式原始碼

程式必須包含原始碼。必須允許發行版在包含編譯形式的同時也包含程式原始碼。當產品以某種形式發行時沒有包含原始碼,必須非常醒目的告知使用者,如何通過Internet免費的下載原始碼。原始碼必須是以當程式設計師修改程式時優先選用的形式提供。故意地擾亂原始碼是不允許的。以預處理程式或翻譯器這樣的中間 形式作為原始碼也是不允許的。

3. 派生程式

許可證必須允許更改或派生程式。必須允許這些程式按與初始軟體相同的許可證發行。

4. 作者原始碼的完整性

只有當許可證允許在程式開發階段,為了調整程式的目的將“修補檔案”的發行版與原始碼一起發行時,許可證才能限制原始碼以更改後的形式發行。許可證必須明確地允許按更改後的原始碼所建立的程式發行。許可證可以要求派生的程式使用與初始軟體不同的名稱或版本號。

5. 無個人或團體歧視

許可證不能都有針對任何個人或團體制在專門奮鬥領域內的任何人使用該程式。例如不能限制程式應用於商業領域,或者應用於遺傳研究。

6. 對程式在任何領域內的利用不得有差別待遇

該條款的主要目的是禁止許可證中含有使開放原始碼軟體無法在商業上使用的規定。我們需要商業使用者參與我們的工作,而不讓他們感到被排除在外。

7. 許可證發行

伴隨程式所具有權力必須適用於所有的程式分銷商,而不需要這些團體之間再附加許可證簽字蓋章。

8. 許可證不能特製某個產品

如果程式是某個特殊的軟體發行版中的一部分,伴隨該程式所具有的權力不能只以來於這一發行版。如果程式是從那一發行版中摘錄出來的,使用或發行時用的都是那個程式的許可證,分銷程式的所有團體都應擁有與初始軟體版所允許的所有權力。

9. 許可證不能排斥其他軟體

許可證不能限制隨該許可證軟體一起發行的其他軟體。例如,許可證不能要求所有與之一起發行的其他軟體都是開源軟體。

10. 許可證例項

GNU GPL、BSD、X Consortiun和Artistic許可證都是我們認為符合開源軟體定義的許可證。MPL也是一樣。

上面的定義可能比較書面和晦澀。一般在產生法律糾紛的時候會有作用,我們主要關注的是我們所使用專案的所遵循的許可證協議。說白了就是我們的產品是否需要開源,能不能商用。概括如下: 按照使用條件的不同,開源軟體許可證可以分為三類(嚴苛程度遞減)

  • 使用該開源軟體的程式碼再散佈(redistribute)時,原始碼也必須以相同許可證公開。代表許可型別:GPL, AGPL。
  • 使用該開源軟體的程式碼並且對開原始碼有所修改後再散佈時,原始碼必須以相同許可證公開。代表許可型別:LGPL, CPL,CDDL, CPL,MPL等。
  • 使用該開源軟體的程式碼(包括修改)再散佈(redistribute)時,沒有特殊限制,只需要明記許可。代表許可型別:ASL, BSD,MIT等。

一般Java開源人員常用的Spring,Apache-commons系列的專案等,都是屬於ASL協議的。所以我們可以隨意使用,但是玩意你用到了什麼專案是GPL協議的,那你就得小心考慮了:)筆者是吃過苦的:)。