開源協議(GPL,LGPL, BSD,Apache等)以及開源協議的區別
開源協議 : 世界上有關開源許可証,大概有上百種。
最為常見有(LGPL, Mozilla, GPL, BSD, MIT, Apache)。
修改源代後 | 新增程式碼是否使用 | 每修改的檔案是否 | 是否對需要對原始碼 | 衍生軟體的廣告是否 | |
是否可以閉源 | 同樣的許可証 | 需要放置版權說明 | 提供說明文件 | 可以使用你的名字促銷 | |
LGPL許可証 | NO | NO | NO | ||
Mozilla許可証 | NO | NO | Yes | ||
GPL許可証 | NO | Yes | NO | ||
BSD許可証 | Yes | NO | Yes |
||
MIT許可証 | Yes | NO | |||
Apache許可証 | Yes | yes |
GPL
GPL授予程式接受人以下權利,或稱“自由”:
*以任何目的執行此程式的自由
* 以學習程式工作機理為目的,對程式進行修改的自由(能得到原始碼是前提)
* 再發行復製件的自由
* 改進此程式,並公開發布改進的自由(能得到原始碼是前提)
相反地,隨版權所有軟體的終端使用者許可證幾乎從不授予使用者任何權利(除了使用的權利),甚至可能限制法律允許的行為,比如逆向工程。
GPL與其他一些更“許可的”自由軟體許可證(比如BSD許可證)相比,主要區別就在於GPL尋求確保上述自由能在複製件及演繹作品中得到保障。它通過一種由Stallman發明的叫copyleft的法律機制實現,即要求GPL程式的演繹作品也要在GPL之下。相反,BSD式的許可證並不禁止演繹作品變成版權所有軟體。
GPL不會授予許可證接受人無限的權利。再發行權的授予需要許可證接受人開放軟體的原始碼,及所有修改。且複製件、修改版本,都必須以GPL為許可證。
這些要求就是copyleft,它的基礎就是作品在法律上版權所有。由於它版權所有,許可證接受人就無權進行修改和再發行(除合理使用),除非它有一個copyleft條款。如果某人想行使通常被法律所禁止的權利,只需同意GPL的條款。相反地,如果某人發行軟體違反了GPL(比如不開放原始碼),他就有可能被原作者起訴。
copyleft利用版權法來達到與其相反的目的:copyleft給人不可剝奪的權利,而不是版權法所規定的諸多限制。這也是GPL被稱作“被黑的版權法”的原因。
許多GPL軟體發行者都把原始碼與可執行程式捆綁起來。另一方式就是以物理介質(比如CD)為載體提供原始碼。在實踐中,許多GPL軟體都是在網際網路上發行的,原始碼也有許多可以FTP方式得到。
copyleft只在程式再發行時發生效力。對軟體的修改可以不公開或開放原始碼,只要不發行。注意copyleft只對軟體有效力,而對軟體的輸出並無效力(除非輸出的是軟體本身)。不過這在GPL版本3中可能會有改動。
MPL
MPL是The Mozilla Public License的簡寫,是1998年初Netscape的 Mozilla小組為其開源軟體專案設計的軟體許可證。MPL許可證出現的最重要原因就是,Netscape公司認為GPL許可證沒有很好地平衡開發者對原始碼的需求和他們利用原始碼獲得的利益。同著名的GPL許可證和BSD許可證相比,MPL在許多權利與義務的約定方面與它們相同(因為都是符合OSIA 認定的開源軟體許可證)。但是,相比而言MPL還有以下幾個顯著的 不同之處:- MPL雖然要求對於經MPL許可證釋出的原始碼的修改也要以MPL許可證的方式再許可出來,以保證其他人可以在MPL的條款下共享原始碼。但是,在MPL 許可證中對“釋出”的定義是“以原始碼方式釋出的檔案”,這就意味著MPL允許一個企業在自己已有的原始碼庫上加一個介面,除了介面程式的原始碼以MPL 許可證的形式對外許可外,原始碼庫中的原始碼就可以不用MPL許可證的方式強制對外許可。這些,就為借鑑別人的原始碼用做自己商業軟體開發的行為留了一個豁口
- MPL許可證第三條第7款中允許被許可人將經過MPL許可證獲得的原始碼同自己其他型別的程式碼混合得到自己的軟體程式。
- 對軟體專利的態度,MPL許可證不像GPL許可證那樣明確表示反對軟體專利,但是卻明確要求原始碼的提供者不能提供已經受專利保護的原始碼(除非他本人是專利權人,並書面向公眾免費許可這些原始碼),也不能在將這些原始碼以開放原始碼許可證形式許可後再去申請與這些原始碼有關的專利。
- 對原始碼的定義
而在MPL(1.1版本)許可證中,對原始碼的定義是:“原始碼指的是對作品進行修改最優先擇取的形式,它包括:所有模組的所有源程式,加上有關的介面的定義,加上控制可執行作品的安裝和編譯的‘原本’(原文為‘Script’),或者不是與初始原始碼顯著不同的原始碼就是被原始碼貢獻者選擇的從公共領域可以得到的程式程式碼。” - MPL許可證第3條有專門的一款是關於對原始碼修改進行描述的規定,就是要求所有再發布者都得有一個專門的檔案就對原始碼程式修改的時間和修改的方式有描述。
LGPL
GNU寬通用公共許可證,簡稱LGPL(GNU Lesser General Public License),被用於一些(但不是全部)GNU程式庫。這個許可證以前被稱為GNU庫(Library)通用公共許可證。
LGPL是GPL的變種,也是GNU為了得到更多的甚至是商用軟體開發商的支援而提出的。與GPL的最大不同是,可以私有使用LGPL授權的自由軟體,開發出來的新軟體可以是私有的而不需要是自由軟體。所以任何公司在使用自由軟體之前應該保證在LGPL或其它GPL變種的授權下。
Apache License
Apache License是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵程式碼共享和尊重原作者的著作權,同樣允許程式碼修改,再發布(作為開源或商業軟體)。需要滿足的條件:
* 需要給程式碼的使用者一份Apache License
* 如果你修改了程式碼,需要再被修改的檔案中說明
* 在延伸的程式碼中(修改和有原始碼衍生的程式碼中)需要帶有原來程式碼中的協議、商標、專利宣告和其他原來作者規定需要包含的說明
* 如果再發布的產品中包含一個Notice檔案,則在Notice檔案中需要帶有Apache License。你可以在Notice中增加自己的許可,但不可以表現為對Apache License構成更改
Apache License也是對商業應用友好的許可。使用者也可以在需要的時候修改程式碼來滿足需要並作為開源或商業產品釋出/銷售。
BSD
BSD授權許可證(FreeBSD Copyright Information)具有多種授權許可證。總的來說你可以對軟體任意處理,只要你在軟體中註明其是來自於那個專案的就可以了。也就是說你具有更大的自由度來處置軟體。如果你對軟體進行了修改,你可以限制其他使用者得到你修改的軟體的自由。
BSD授權許可證沒有實現"通透性"自由,也就是其不保證軟體原始碼開放的連續性。這樣如果你希望採用別人開發的BSD軟體,進行一些修改,然後作為產品賣,或者僅僅保密自己的做的一些除了軟體開發以外的工作,那麼你就可以從中得利。
當一個非程式設計師僅僅理解一個程式的功能,但是不瞭解程式是如何做的時,即使你沒有在開發軟體中做任何工作那你就可以通過高超的市場技巧將軟體賣給該使用者。比如拿最流行的桌面作業系統作為例子,你就能很好的理解一個沒有很好的程式技巧的軟體公司只要具有高超的市場營銷策略同樣可以將垃圾賣給客戶。如果你不具有很強大的程式設計能力,但是具有很強的市場能力和能將其他開發者的軟體包括到自己的系統,而同時不將自己的修改開放出來將是非常強大的能力。從賺錢為目的的商務角度看來,如果你使用了BSD授權許可證的軟體,那麼你就可以任意進行。你可以更好地控制你的OS系統,並且防止其他人拷貝你的商業產品。
MIT
MIT是和BSD一樣寬泛的許可協議,作者只想保留版權,而無任何其他了限制.也就是說,你必須在你的發行版裡包含原許可協議的宣告,無論你是以二進位制釋出的還是以原始碼釋出的.
有許多團體均採用MIT許可證。例如著名的ssh連線軟體PuTTY與X Windows System (X11)即為例子。Expat, Mono開發平臺庫,Ruby on Rails, Lua 5.0 onwards等等也都採用MIT授權條款。