2011年1月7日 星期五

常見開源協議(Open Source License)的比較

開放原始碼這樣的想法非常崇高,藉由自由分享各自的程式碼
讓軟體的發展可以更加的快速而且安全
(透明度可以讓全世界一起除錯,而且沒辦法藏後門)

但是對於"自由",大家的想法都不太一樣
比如說,如果有人拿你寫的程式去賣錢呢?
這種顧慮會讓很多開發者不願意分享,所以開源協議就出現了
目的就是,讓作者可以在被保護的狀況下
依照期待(選擇的開源協議)的讓全世界的人一起分享

目前常見的開源協議大都經過Open Source Initiative批准
協議書的全文都可以在Open Source Licenses找到
(從協議的數量就可以看出,這方面也是相當的"自由")
最常見的有GPL, GNU General Public License, LGPL, The GNU Lesser General Public License, BSD License
這些協議的一個共同點,就是再發佈的時候需要伴隨原有的協議

其中最嚴厲(崇尚自由,並要求所有人一起崇尚自由)的是GPL
強硬的要求(傳染)所有"引用/修改/衍生"GPL授權的程式碼的軟體
也必須採用GPL授權,並提供未來開發者同樣的自由,包括
1. 以任何目的執行此程式的自由
2. 再發行複製件的自由
3. 改進此程式,並公開發布改進的自由
基於這樣的規定,所以商業軟體或是不打算公開程式碼的軟體
都不得修改甚至引用GPL授權的程式碼
著名的GPL自由軟體包括Linux核心和GCC

LGPL則是將GPL條件稍微放寬,
如果僅是"引用(Link)"LGPL授權的函式庫
則不需要公開該軟體的程式碼
所以對於商業軟體來說,是可以引用LGPL的函式庫的
但是,對於"修改/衍生"LGPL授權軟體的部分,則同樣必須採用LGPL的授權
也就是一樣需要公開,且提供未來開發者同等的自由
著名的LGPL自由軟體有Mozilla跟OpenOffice.Org

BSD相對來說就寬鬆的多了
主要差異是在"修改/衍生"BSD授權的軟體時
除了版權聲明中仍需包含原來代碼中的BSD協議以外
開發者有權選擇是否要開放原始碼,或是做為商業用途

由此可以看出,如果是公司企業打算要使用開放原始碼的授權軟體的時候
BSD授權軟體可以直接使用甚至修改衍生
LGPL授權軟體則是僅能引用(Link)
GPL授權軟體則是儘量不使用,或是規避GPL的授權範圍
例如避免GPL風險的另類方法所提的方法

--
參考資料
五種開源授權規範的比較 (BSD, Apache, GPL, LGPL, MIT)
GPL 常見問題
自由軟體專案授權方式的轉換(上):不得撤銷原授權條款
自由軟體專案授權方式的轉換(下):新版本號另以更改後的授權方式釋出
在原始碼之外:編譯與安裝資訊的提供
散佈 GPL 衍生程式所須提供的原始碼範圍