以前寫過一篇文章(那些年用過的開源項目(一)),列出了不少當年用過的開源項目。如今有這麼多的開源項目可供咱們選擇,這要得益於當前很是積極的開源氛圍,然而,儘管開源項目不少,咱們在項目中選擇的時候,必定要注意它的開源許可協議,不然可能會引發一些法律的問題。html
以前看過一幅圖,很是清楚的給出了幾個常見的開源許可協議(GPL、BSD、MIT、Mozilla、Apache和LGPL)的區別,以下:linux
圖片來源程序員
https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.htmlapache
關於各個許可協議的具體定義,你們均可以網上查閱。關於如何選擇,根據個人經驗,對於商業軟件開發,通常來講,BSD、MIT、Apache這三個許可協議比較安全;其它三個須要仔細考慮。瀏覽器
下面具體扒一扒各個許可協議:安全
Apache許可協議,如今是2.0版本,具體協議的定義參考https://www.apache.org/licenses/LICENSE-2.0。eclipse
對於Java開發人員來講,這個license應該不陌生,Apache和Spring下面的開源項目都是基於這個開源許可協議。ide
BSD的全稱是Berkeley Software Distribution,從名字能夠看出它跟美國的伯克利大學有關。這個許可協議出現的歷史背景跟unix操做系統有很大關係,後面會提到的GPL許可協議也跟unix操做系統有關係,可見一個東西的出現都有它歷史的相關性。當時,unix操做系統是一個受版本保護的商業操做系統,其全部權歸AT&T貝爾實驗室全部,爲了推廣unix系統,貝爾實驗室免費把unix操做系統的源碼分發給各個大學和研究機構使用研究,後來在伯克利大學,就出現了一個unix系統的BSD發行版本,這就是BSD的來源。不少人提到BSD,都會想到Bill Joy這個元老級程序員,這裏有一篇關於他的文章(那些神同樣的程序員),你們能夠查閱。工具
以前用過的antlr和NSubstitute,都是BSD許可協議。操作系統
MIT的全稱是Massachusetts Institute of Technology,美國的
麻省理工學院,又一個跟美國大學有關的開源許可協議,因此能夠看出美國大學早些年代在計算機領域的影響力有多大。
以前用過的autofac和Newtonsoft.Json,都是MIT許可協議。
GPL的全稱是GNU General Public License,它是早期出現比較嚴格的開源許可協議,可是它的出現有很重大的歷史意義。正如上面有提到過,unix操做系統是受版權保護的,正是如此,貝爾實驗室還和不少機構打過官司,其中就包括伯克利大學。BSD unix的出現,對操做系統是否開源產生了巨大的影響,一部分人擁護閉源,表明人物就是Bill Gates,後來建立了Windows系統;另一部分人擁護開源,表明人物是Richard Stallman,後來建立了GNU工程。GNU建立的初衷就是反版權,所以就出現了GPL開源許可協議。
GNU(GNU's Not Unix!)工程原本是想開發一個自由的操做系統,可是後來因爲操做系統內核開發速度較慢,同時Linux內核發佈了,因而GNU工程就決定複用Linux內核加上本身的一些工具類庫,發佈了GNU/Linux操做系統,這也是如今各類linux操做系統發行版(好比:Debian、RHEL、CentOS等)的原型。
因此這些日常用到的Linux操做系統就是你們用過的基於GPL許可協議的開源軟件。
LGPL的全稱是Lesser General Public License,輕量級通用公共許可證,顧名思義,它就是GPL的寬鬆版。
以前用過一個library:flying saucer,就是這個許可協議,這個許可協議用於商業軟件開發的話,須要仔細評估。
我想你們對Mozilla很熟悉的地方就是MDN和firefox瀏覽器,起初firefox是網景Netscape公司的一個產品,Mozilla是網景公司設立的一個組織,用於支持Firefox的開發。後來,網景被收購以後,Mozilla基金會成立用於繼續支持firefox開發,Firefox以Mozilla開源許可協議開源。
除了上面提到的,Java開發人員確定還熟悉另一個開源許可協議Eclipse,以前用過的eclipselink就是這個許可協議,它也是屬於風險比較小的一個協議。
更多的開源許可協議,你們能夠查看下面官方網址:
https://opensource.org/licenses/alphabetical