2011年12月15日 星期四

Opensource License研究心得

最近takeshi在研究關於Opensource License的相關資料,以前都只管用而已,現在是真的需要瞭解一下了...話說真的不是普通的複雜ㄚ...花了幾天,研究了一堆參考資料,到現在還是一知半解...,不過算是可以稍微分享一下心得啦,順便也當作是在作筆記,以後忘記了還可以回來看看:p

免責聲明
以下資訊是個人的讀書心得,不保證正確ㄛ,所以各位朋友真的要拿去作啥東東的話,還是要再去跟專業人士作確認會比較好ㄛ

使用工具
takeshi在研究東東時,有時會用到心智圖軟體,如以下所附心智圖圖片,takeshi目前用的是這套XMind,心智圖檔案在這裡;不過真的有需要的朋友再去下載就好了,只是稍微淺嚐即止的話,就繼續往下看唄~~

介紹
1. 先直接附上心智圖圖片如下

2. 簡略說明
takeshi就從右邊的"分類"項目起 ,接著是左下的"授權種類"項目,作一些簡略說明與介紹。

2.1 分類
2.1.1 自由軟體 (Free Software):Richard Stallman發起的一種軟體授權模式,目前由自由軟體基金會(Free Software Foundation)維護,保障軟體的使用者擁有以下四大自由。
  • 自由之零:為了任何目的執行程式的自由。
  • 自由之一:研究程式如何運作的自由,並且將程式修改符合本身需求。程式碼的近用是實現這個自由的先決條件。
  • 自由之二:再次散佈程式的自由,以幫助你的鄰居。
  • 自由之三:改進程式的自由,並將這些改進回饋給社群,讓整個社群均可以因此而受益。程式碼的近用是實現這個自由的先決條件。
這裡的Free指的不是免費,而是自由(Freedom)!我們常聽到的Linux就是自由軟體ㄛ

2.1.2 專屬軟體 (Proprietary Software)
目前市面上的商用營利軟體以專屬軟體為大宗 ,像是大家都很熟悉的OS Windows,就是其代表。

2.1.3 免費軟體 (Freeware)
通常只讓使用者有免費執行該程式的自由,而不及於其他諸如修改、散佈、商用等自由(不完全的四大自由)。像防毒軟體小紅傘個人免費版就是其代表,假如用戶想要使用其他進階版本,就要另外收費囉!

2.1.4 共享軟體 (Shareware)
其實就是試用軟體 (trial-ware)啦,現在很多軟體都有提供30天免費試用,等期限到了會自動詢問使用者要不要購買授權。

2.1.5 公共財軟體 (Public Domain Software)
作者自願放棄著作權,所以法律上的意義是沒有人擁有這個財產的產權,所以任何人都可以使用,不必取得任何人的同意。總而言之,它是比自由軟體還要更自由的軟體類型呢!takeshi對這一塊就沒那麼熟悉了,不知網友們有沒有好的例子呢?

2.1.6 開放源碼軟體 (Open Source Software)
也被簡稱為「開源軟體」,在作法上,這類型的軟體跟自由軟體一樣,都保障使用者的四大自由;它們之間的不同是在觀念,自由軟體是要保障使用者的四大自由,是從道德上的角度去看待軟體;而開源軟體則是認為由開源社群去發展和維護軟體,是比較有效率和品質的作法,所以它是從品質的角度去看待軟體。

不過網路上也有很多社群是把它們統稱在一起,如free/open source software (FOSS) 或 free/libre/open source software (FLOSS) 等。

2.2 授權種類
這世界上的授權種類太多了!takeshi只就平常容易接觸到的GPL和Apache授權作介紹囉~

2.2.1 GNU General Public License, version 2.0 (GPL-2.0)
也就是自由軟體所採用的授權啦!要使用者完全遵從四大自由規範,屬於約束力和感染力超強的授權(對商業應用不友善)!只要你的程式使用到GPL授權的程式(不論是透過動態或靜態連結),你的程式也必須要遵從GPL的授權。

換句話說,假如你寫的程式,以後是要當產品來賣並且不想公開原始碼,最好不要用到GPL授權的元件,因為你的程式會被迫成為GPL授權。假如你認為程式本身開源沒關係,你們是要賣的是服務的話,那就沒問題囉。另外像mySQL、或是ZK Framework等軟體也是GPL系列的授權,但對於商業客戶是可以轉換成商用授權的,所以它們是採用雙授權模式(Dual License)。

還有一點很重要的是,GPL-2.0和LGPL-2.1跟Apache License-2.0是不相容的ㄛ,也就是說你的程式不能同時使用GPL/LGPL-2.0和Apache License-2.0的軟體元件,但GPL-3.0和LGPL-3.0跟Apache License-2.0則是相容的(因為3.0多了附加條款,見下節)。

2.2.2 GNU General Public License, version 3.0 (GPL-3.0)
仍是延續保障四大自由的主要精神,加上一些修改來符合產業現況。主要有...
  • 附加條款 (Additional Terms)
用來提高跟其他自由軟體授權的相容性,所以GPL/LGPL-3.0可以相容於Apache License-2.0了。
  • 專利授權條款
之前的GPL/LGPL-2.0並沒有針對專利授權的相關條款,但現在3.0版本已經明定,要將程式含有的專利使用權利也要一起授權出去,以保障使用者的自由。

2.2.3 GNU Lesser General Public License, version 2.1 (LGPL-2.1)
相對於GPL授權的高感染性,以至於在商業應用的推廣上,很多人都避而遠之;FSF為了能進一步提高自由軟體的市佔率,因此提出了一個感染力較低的折衷授權方案,它就是LGPL!

LGPL主要是針對函式庫(Library)軟體元件為授權標的,如果第三方程式僅是單純地連結(定義粉模糊...)至LGPL授權的函式庫,那麼該第三方程式可以不採用GPL/LGPL授權;據takeshi找到關於"連結"定義的參考資料,是這樣說的...
  • 動態連結:程式與LGPL2.1函式庫之間可取代的連結關係,若喪失這個連結關係,則該程式仍具大部份的功能,僅部份的功能在表現上沒有連結之後優異;此類型被定義為「使用函式庫」,該程式可以不接受GPL授權。
  • 靜態連結:程式與LGPL2.1函式庫之間必然的連結關係,若喪失這個連結關係,則該程式喪失大部份的功能;此類型被定義為「基於函式庫」,該程式必須接受GPL授權。
看完之後還是霧傻傻啦...所以各位朋友們真的要使用LGPL-2.1的函式庫時,最好還是要找人問清楚比較好ㄛ

LGPL-2.1和GPL-2.0是相容的,且LGPL授權可以轉換成GPL授權(從低約束力轉成高約束力),但不允許反轉(從高約束力轉成低約束力)ㄛ!

2.2.4 GNU Lesser General Public License, version 3 (LGPL-3.0)
LGPL-3.0算是給商業應用的使用者帶來一大利多ㄛ,它的重大改版如下
  • 大幅度縮小的感染範圍
就如在上一節講到的「動態連結」和「靜態連結」的使用方式,都不會被LGPL感染囉!

  • 明示使用
加強了對使用者如何明確地幫使用到的LGPL函式庫打廣告;其實它跟上一條修改條款是一對的,也就是說,FSF給你更低的約束,但條件是你要好好幫他們打廣告:p
  • 使用範例,述明 LGPL3 的諸般義務性要求
比起上一版的模糊不清的"連結"定義,這次的版本給出了四種範例來明確說明其連結或是結合等關係,然而這些關係中,現在也只有去直接修改LGPL函式庫,才會被感染囉。

2.2.5 Affero General Public License, version 1 (AGPL-1.0)
GPL的加強版,具有極高度感染力,專門針對ASP廠商,如Google、Yahoo!等;大部分的自由軟體授權針對「散佈」的定義,是針對程式的物理性移動(拷貝給別人,etc),但AGPL包含程式如果是在客戶端執行也算在內,如網路應用程式在客戶端執行等;因為現行大部分的ASP業者對Internet提供服務,其後端都採用了大量的GPL程式,但卻不必對外開放他們的原始碼(因為基於GPL授權),但FSF並不支持此狀況,故提出了AGPL授權,來約束ASP業者;當然,ASP業者也可以選擇不要使用這些AGPL授權的軟體元件啦。

2.2.6 Apache License, version 2.0 (Apache 2.0)
Apache License從名稱就可以看得出來,它就是由大名鼎鼎的Apache Software Foundation所推出的授權啦!它可是對商業非常友善的授權ㄛ(約束力和感染力粉低),只要你在保有歸屬聲明(Attribution Notice)的前提之下,你就可以對Apache授權的軟體元件作再修改、自己決定要不要公開原始碼、甚至可以對它作重授權(sublicense);即使是此軟體元件有包含專利,Apache授權也要求原著作人必須連同專利使用權利也必須一起授與出來,在法律上保障使用者的自由。

不過它只跟GPL/LGPL-3.0相容,也就是說,你的專案可以同時使用這兩種授權的軟體元件,但Apache-2.0和GPL/LGPL-2.*就不被允許ㄛ...

3. 參考資料
takeshi這次作的這番研究,主要的參考資料是從 中研院 自由軟體鑄造場的法律源地 得來的(另外就是相關授權的英文原版),他們既專業,又是免費服務ㄛ!

各位繳了那麼多稅,也是該用一下了吧:p



沒有留言:

張貼留言