自由軟件&開源軟件
自由軟件 Free Software
關乎道德的社會運動,捍衛開發者為任何目的開發的運行程序的自由,研究程序運行原理並修改的自由,以免費或者收費的方式再發布軟件拷貝的自由,改進程序並把改進后的版本發布給公眾的自由
開源軟件 Open Source Software
開源軟件的源代碼可以任意獲取,任何人都能查看修改和分發,本質是一種軟件的開發方式
開源協議
當你選擇了一款開源軟件的同時,也選擇了遵守該軟件的開源協議,常見的開源協議如下
協議簡稱 | 協議名 | 最新版本 | 制定組織 |
---|---|---|---|
GPL | General Pulbic License | 3.0 | Free Software Foundation |
MPL | Mozilla Pubklic License | 2.0 | Mozilla Foundation |
LGPL | Lesser General Public License | 3.0 | Free Software Foundation |
MIT | MIT License | MIT | |
BSD | Berkeley Software Distribution | Berkeley | |
ASL | Apache License | 2.0 | Aache |
GPL協議
- 全稱:General Pulbic License
- 特點:我開源,你用我,你開源(類似於病毒傳染)
- 詳情地址:https://www.gnu.org/licenses/gpl-3.0.en.html
MPL協議
-
全稱:Mozilla Pubklic License
-
特點:有限的文件感染性
-
場景:
1.在A的基礎上修改得到A+,A+也必須以MPL協議開源
2.可以通過接口程序隔斷傳染
LGPL協議
- 全稱:Lesser General Pulbic License
- 特點:我開源,你僅僅Call我,你不需要開源;我開源,你改我且用我,你開源
- 詳情地址:https://www.gnu.org/licenses/lgpl-3.0.en.html
MIT協議
- 全稱:MIT License
- 特點:我開源,你用我,留名就行
- 詳情地址:https://mit-license.org/
BSD協議
- 全稱:Berkeley Software Distribution
- 特點:著作權是原作者的,不能用原作者名宣傳
- 詳情地址:https://opensourece.org/lienses/BSD-3-Clause;https://opensourece.org/lienses/BSD-2-Clause;
ASl協議
- 全稱:Apache License
- 特點:商業友好,發布時需增加說明
- 詳情地址:https://www.apache.org/lienses/LICESE-2.0
如何判斷選擇你的軟件開源協議
常用的開源軟件開源協議
Linux
GNU GPL (GNU General Public License GNU通用公共許可證)
-
復制自由:允許把軟件復制到任何人的電腦中,並且不限制復制的數量。
-
傳播自由:允許軟件以各種形式進行傳播。
-
收費傳播:允許在各種媒介上出售該軟件,但必須提前讓買家知道這個軟件是可以免費獲得的;因此,一
般來講,開源軟件都是通過為用戶提供有償服務的形式來盈利的。 -
修改自由:允許開發人員增加或刪除軟件的功能,但軟件修改后必須依然基於GPL 許可協議授權。
Spring家族
-
該軟件及其衍生品必須繼續使用 Apache 許可協議。
-
如果修改了程序源代碼,需要在文檔中進行聲明。
-
若軟件是基於他人的源代碼編寫而成的,則需要保留原始代碼的協議、商標、專利聲明及其他原作者聲明的內容信息。
-
如果再發布的軟件中有聲明文件,則需在此文件中標注 Apache 許可協議及其他
許可協議。
Mysql
MySQL是遵守雙重協議的,一個是GPL授權協議,一個是商用授權協議(注釋:為解決其他企業用MySQL軟件牟利或引用了MySQL的源代碼而不想開源)
OpenJDK
JDK的開源版本,采用的協議是GPL with Classpath Exception,查了一下,大概的意思是:就是你用它的模塊,比如Java代碼里面,常見的import語句,是吧,比如import java., javax., javafx.* etc.等等,這些都屬於exception里面的,也就是說,你只是import這些類庫,並且使用它們的話,不受GPL協議影響,你大可以在此基礎之上,制作自己的軟件,並且閉源發布。但是如果你更改了java.base.jmod模塊的源代碼的話,那你的代碼就會被GPL傳染上,要求必需開源,否則就違背了Open JDK的開源協議。
其他基於Apache開源協議的項目
這是apache官網的項目列表,其中我框出了我們通常聽到或者用到的
其他基於GPL開源協議的軟件
如果你經常使用linux的話,你會發現很多你熟悉的軟件,比如grep,gcc,gtk++
其他基於MPL開源協議的軟件
火狐瀏覽器(firefox)
其他基於BSD開源協議的軟件
chromium(谷歌瀏覽器開源版),像國內360瀏覽器,以及最近很火微軟發布的新瀏覽器edge就是采用該項目進行開發