open source授權條款比較表 2.3






http://www.openfoundry.org/tw/comparison-of-licenses

授權條款比較表 2.3

原 始 程 式 
您要求他人再散布程式時必須提供原始碼嗎?您允許他人對程式進行再授權嗎?您願意將程式所包含的專利授權出來嗎?若是散布程式時,不包含原始碼在內,而是另外提供原始碼,此時您允許收取散佈原始碼的費用可以高於散布成本?
MIT
BSD
zlib / libpng
Apache 1.1
Apache 2.0
Artistic
CPL 1.0
MPL 1.1
LGPL 2.1
GPL 2.0


修 改 程 式 
您允許程式被修改後使用不同的授權條款嗎?承左題,您願意在什麼狀況下允許使用者選擇符合自己需求的授權條款呢?
0. 使用者只能採用原本的授權條款。
2. 我希望使用者選擇我所指定的授權條款。
3. 只要不和原本採用的授權條款相違背,使用者可以自行決定授權內容。
您要求程式被修改後必須公開原始碼嗎?您要求後續修改者修改程式時必須附加修改說明文件嗎?
MIT3
BSD3
zlib / libpng3
Apache 1.13
Apache 2.03
Artistic3
CPL 1.03
MPL 1.12
LGPL 2.10
GPL 2.00


http://www.openfoundry.org/tw/compatibility-of-licenses

相容性

自由軟體授權條款相容性這裡所謂授權條款相容性主要是指下面兩種情況:
  1. 程式開發者採用一個以上不同程式的模組,結合開發成為另外一個程式,這些被採用模組的授權條款內容間並不相互衝突,這些授權條款就具有相容性。
  2. 程式開發者修改程式,被修改的部分有採用其他程式的模組,這個被採用模組原本所適用的授權條款與被修改程式的授權條款間並不相互衝突,這些授權條款就具有相容性。

以下將就自由軟體鑄造場在授權指引中所提供的十一個自由軟體授權條款為對象,說明這些授權條款間的相容性:


(一)BSD、MIT與zlib/libpng:
此三個授權條款給與被授權人相當大的使用空間,幾乎可以和其他任何一個軟體授權條款相容,被授權人甚至可以不提供原始碼,如同專屬軟體一般,僅提供可執行形式來散布程式。適用這三個授權條款的程式,可以與授權指引當中其他任何一個授權條款的程式相結合來開發另一個程式,而無須擔心授權條款之間不相容。而因為這三個授權條款較為寬鬆,所以若與其他授權條款同在一個程式裡的時候,大多採取其他較為嚴格授權條款,來作為整體程式之授權條款。必須注意的是,MIT 允許被授權人可以基於授權人的地位向他人再授權,與 BSD、zlib/libpng 不同。
至於所開發出來的程式究竟可以採用哪一種授權條款,還可以分為兩種情況:
  1. 所開發出來的程式沒有一個統一適用全部程式碼的授權條款,各部分程式碼保留原來各自的授權條款。
  2. 所開發出來的程式統一採用較為嚴格之授權條款,BSD、MIT 或 zlib/libpng 因為授權內容較為寬鬆,所以即使隨著所適用的程式碼繼續保留,但被授權人在使用程式時必須依照較嚴格授權條款之內容。
(二)MPL:
依照 MPL 的規定,適用 MPL 的程式可以多重授權:
1、程式的最初開發者可以特定部分程式碼(特定程式碼)與授權條款(特定授權條款),被授權人可以自這些特定授權條款中選擇一個做為特定程式碼的授權條款。目前適用 MPL 做為授權條款的代表程式為 Mozilla,Mozilla 是採用 MPL/GPL/LGPL 三重授權模式 (triple license)。至於哪些授權條款被特定,開發者可以在附隨於程式的說明文件中查知;哪些部分程式碼被特定,也可以在該特定程式碼的文件中查知,或者自行聯絡最初開發者詢問。
根據這樣一個多重授權模式,任何一位程式貢獻者若是修改 MPL 程式,這時候:
  1. 若所做的修改並沒有受到其他授權條款拘束時,所做的修改仍必須適用 MPL 或者是最初開發者所特定的授權條款。
  2. 若所做的修改已經受到其他授權條款拘束時,只要經最初開發者的同意,所做的修改就可以適用其原有授權條款。
2、此外,被授權人可以在散布程式執行形式時,選擇不同於 MPL 的授權條款,只要所選擇的授權條款與 MPL 不相衝突,並且必須讓收到程式執行形式的人可以清楚地知道,程式原始碼與執行形式是適用不同的授權條款,而執行形式的授權條款是由被授權人自己提供的,與最初開發者並沒有關係。
(三)GPL:
GPL 是一個相當嚴格的自由軟體授權條款,為了保障適用 GPL 的程式可以一直維持原始碼開放的狀態,一旦採用 GPL 程式碼開發程式,所開發出來的程式幾乎仍然必須採用GPL來授權。因為這樣的特性,GPL 被稱為是一個「具有如病毒般感染性 (viral)」的授權條款。在開發過程中若有採用到 GPL 程式碼時,所開發出來的程式幾乎都必須適用 GPL 做為授權條款,因此 GPL 與其他授權條款的相容性相當的低。
開發者在考慮授權條款相容性時需注意下列幾點:
  • GPL 與 BSD、MIT 以及 zlib/libpng 均相容,不過所開發出來的程式當然必須採用 GPL 做為授權條款。
  • GPL 與 LGPL 相容。
  • 此外 LGPL 與 GPL 間有一個特殊的轉換關係。LGPL 程式被授權人可以將 LGPL 程式重製物 (copy) 轉換成適用 GPL 來授權,被授權人必須將程式中與此相關的聲明做修改,讓收受者可以知道這份程式重製物是適用 GPL 做為授權條款的。此種轉換為單向,也就是 LGPL 程式重製物轉換為 GPL 授權之後,不可以再轉換為 LGPL 授權。

http://www.openfoundry.org/tw/foss-license-category

授權條款分類表

分類授 權 條 款全       名
BSD類   
  Apache-1.1  Apache Software License 1.1
  Apache-2.0  Apache License 2.0
  BSD-3-Clause  New BSD License
  MIT  MIT License
  Zlib  Zlib/libpng License

GPL類   GPL-2.0 / 3.0  GNU General Public License 2.0 / 3.0
  LGPL-2.1 / 3.0   GNU Lesser General Public License 2.1 / 3.0
  AGPL-3.0  GNU Affero General Public License 3.0

  其他類      CPL-1.0 / EPL-1.0  Common Public License 1.0
  Eclipse Public License 1.0 
  MPL-1.1 / 2.0  Mozilla Public License 1.1 / 2.0
  CDDL-1.0  Common Development and Distribution License 1.0 
  Artisic-2.0  Artistic License 2.0


修改或取用的注意事項

您當然可以修改自由軟體的原始碼,或者是取用原始碼到自己正在撰寫的新程式當中,但是有些規定必須要注意與遵守。由於各授權條款間的內容差異頗大,有時甚至南轅北轍,因此以下所列僅為鑄造場認為較重要的幾點注意事項,並無法涵蓋所有授權條款的完整內容,以及個別的特殊規定。不過,下列前兩項是很基本的的要求,鑄造場建議您一定要遵守,後兩項要求在各條款間的規定就頗有差異,您若仍有疑問或有必要進一步了解相關細節的話,請參考法政中心的各授權條款的中文介紹,或來信鑄造場詢問。

(一)請保留軟體中的標示 (notice)

這是最基本的一項:除非真有必要,否則軟體中的任何標示請不要拿掉,例如著作權標示、軟體不附擔保的說明標示等。雖然並非所有的條款均強制要求保留所有的標示,但是因為不同條款規定略有不同,最保險與簡單的原則就是原封不動地保留所有標示。若您真的需要變動或修改這些標示的話,就有必要詳閱授權條款中關於刪留這些標示的規定。 

(二)標明軟體已經過修改

許多的授權條款會要求,您必須要在修改的檔案中標明這個檔案是被修改過的,並且加上修改日期,有些條款則並未有相關規定。也有像 Artistic 這一系列 的條款,則是要求必須另外附上說明檔案,描述檔案的修改歷程,以及修改後的檔案與原檔案有什麼不同之處等等。 由於這類的規定相當分歧,若您不知道所修改的自由軟體的授權條款規定如何,鑄造場建議您在修改的檔案中至少標明該檔案已被修改過以及修改日期,這樣的標明方式可以讓之後拿到修改軟體的人知道你修改過哪些檔案,算是滿足最低的標示要求。當然最佳的情況下,您若是可以將如何修改檔案說明清楚,對於未來要研究與修改這個軟體的其他人將可以產生很大的幫助。 

(三)要提供取得原始碼的管道

若修改或取用的自由軟體採用 GPL2、GPL3、LGPL2、LGPL3、MPL、CPL、EPL 或 CDDL 等條款授權,原則上,您必須要將修改過的程式或者新結合程式的原始碼提供給他人。但是各條款中對於修改與取用的細部規定不盡相同,所以在合於各授權條款規定的情況下,修改過的自由軟體或取用自由軟體程式碼而新寫出來的程式,也有可能不需要將原始碼再提供給他人。關於這方面的規定,各條款間的差異頗大,若您沒有什麼特殊考慮因素的話,鑄造場建議您可以將所有新增或修改過的原始碼都提供出來,讓有興趣的人可以來研究你的原始碼,一同分享、討論撰寫原始碼的各種心得。若您因為一些因素,不願意或者無法將新增或修改的原始碼提供給他人時,就必須要詳閱各授權條款的細部規定,看不提供原始碼的散布行為是否合於條款規定。若是不符合的話,這時候最好的方式就是將程式保留在自己手上使用,而不要散布您修改過的程式或新程式給其他人。

(四)請注意授權條款之間是否相容

自由軟體的原始碼因為可以自由取得與利用,所以您很可能從網路上抓了不同的程式碼,放在同一個程式中使用。這些程式碼的授權條款若都一樣,就可以不必擔心條款的內容有所衝突,若程式碼授權條款不同的話,就必須要注意這些條款的內容是否彼此相容。關於自由軟體授權條款的相容性,您可以參考下列中文資訊:「決定未來程式被利用與發展的方式」; 「授權條款相容性」。 若您有個別的條款相容性問題,歡迎直接與鑄造場聯絡。

商業產品釋出源碼的實用提醒

1.  BusyBox 設定檔

您需要提供 BusyBox 相關的設定資訊,讓他人可以根據這些資訊將 BusyBox 建置成為原始碼的一部分。而隨著 BusyBox 版本的不同,設定資訊相關檔案的名稱也會有所不同:在 BusyBox 0.60.5 及之前的版本,檔案名稱是 Config.h,在 BusyBox 1.00-pre1 及之後的版本,檔案名稱則是 .config。

2. Linux kernel 設定檔

假如您的產品利用到 Linux kernel,您必須要將相關的設定資訊提供出來,讓他人可以根據這些資訊將 Linux kernel 建置成為原始碼的一部分。

3. 額外的 Linux kernel 模組

假如您的產品有利用到額外的 kernel 驅動程式,您可能必須要提供這些驅動程式的原始碼。您應仔細了解這些驅動程式的授權條款內容,以確認是否需要提供原始碼。

4. C 函式庫

假如您的產品利用到 glibc 或 uClibc 函式庫,您必須要提供這些函式庫的原始碼。假如相關的軟體開發套件 (SDK) 只有二進位碼,並且是由您的上游供應商所提供的,此時您需要向上游供應商索取原始碼,以便這些函式庫的原始碼能提供出來。

5. 目的檔

假如您的程式將非自由軟體程式碼連結到 LGPL 2.1 授權的程式碼,那麼您就需要提供目的檔與建置所需要的設定資訊,這代表者編譯描述檔 (Makefile) 等資訊也在提供之列。
例如:
liborz-0.11 採用 LGPL 2.1 授權,您的程式 bar 中的 foo.o 檔案連結利用 liborz-0.11。此時,為了滿足 LGPL 的要求,您必須提供 liborz-0.11 的原始碼、foo.o 的目的檔以及結合這兩者的編譯描述案 (Makefile)。

6. 開機管理程式

許多裝置是包含著 GPL 授權的開機管理程式 (Bootloader) 出貨的,例如: ARMboot、PPCboot、RedBoot 或 u-boot 等。假如開機管理程式 GPL 授權的話,您必須要提供這些程式的原始碼給您的客戶。若這些開機管理程式是您的上游供應商提供的話,上游供應商必須依照 GPL 規定給您原始碼。

7. 工具程式

若您隨著產品裝置或是在網路上散布二進位的工具程式(編譯器、binutils、C 函式庫),您就需要讓他人也可以取得這些工具程式的原始碼。工具程式通常是包含在軟體開發套件 (SDK) 裡面,並且由您的上游供應商提供,因此您可以向他們索取原始碼。

8. 韌體

因為許多不同的產品都是從同一個原始碼樹狀結構 (source tree) 中產生出來,因此韌體中常會包含一些其他裝置才需要的多餘程式,假如這些多餘程式是採用 GPL 或 LGPL 授權的話,當散布韌體時,您也必須提供這些多餘程式的原始碼。此時您有兩種不同的解決方法:您可以如前面所描述的那樣,提供他人原始碼,或者您也可以將這些不會被用到的程式從原始碼樹狀結構中刪除。

GNU Lesser General Public License

From Wikipedia, the free encyclopedia

Differences from the GPL[edit]

The main difference between the GPL and the LGPL is that the latter allows the work to be linked with (in the case of a library, 'used by') a non-(L)GPLed program, regardless of whether it is free software or proprietary software.[1] The non-(L)GPLed program can then be distributed under any terms if it is not a derivative work. If it is a derivative work, then the program's terms must allow for "modification for the customer's own use and reverse engineering for debugging such modifications." Whether a work that uses an LGPL program is a derivative work or not is a legal issue. A standalone executable that dynamically links to a library through a .so.dll, or similar medium is generally accepted as not being a derivative work as defined by the LGPL. It would fall under the definition of a "work that uses the Library". Paragraph 5 of the LGPL version 2.1 states:
A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
Essentially, if it is a "work that uses the library", then it must be possible for the software to be linked with a newer version of the LGPL-covered program. The most commonly used method for doing so is to use "a suitable shared library mechanism for linking". Alternatively, a statically linked library is allowed if either source code or linkable object files are provided.[2]







留言

熱門文章