5W1H聊開源之What——開源協議有哪些?
原創
最后编辑:李晓琳 于 2021-07-13 11:43:06
964次查看
本篇目錄
開源許可協議是指開源社區爲了維護作者和貢獻者的合法權利,保證軟件不被一些商業機構或個人竊取,影響軟件的發展而開發的協議。開源協議規定了用戶在使用開源軟件時的權利和責任,雖然不一定具備法律效力,但是當涉及軟件版權糾紛時,也是非常重要的證據之一。
软件在追求“自由”的同时,不能牺牲程序员的利益,否则将会影响程序员的创造激情,因此世界上现在有 90 多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益(详细列表见: https://opensource.org/licenses/alphabetical)。
對于准備編寫一款開源軟件的開發人員,也非常建議先了解一下當前最熱門的開源許可協議,選擇一個合適的開源許可協議來最大限度保護自己的軟件權益。
由寬松到嚴緊排序,常用的開源許可證有:
MIT許可證
BSD許可證
Apache許可證
LGPL許可證
GPL許可證
MIT、BSD 许可证都源自大学,体现了简单、开放和包容的特点。
MIT、BSD、Apache 三者都支持闭源的后续开发。
作者只想保留版权,而无任何其他限制。也就是说,无论是以二进制发布的还是以源代码发布的,都必须在发行版里包含原许可协议的声明,。采用MIT協議的应用案例有JQuery、Rails 等。

BSD 协议也很宽松,给予了使用者很大自由,基本上允许用户“为所欲为”:用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售。前提是需要满足下面三个条件:
BSD代碼鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由于允許使用者修改和重新發布代碼,也允許使用或在BSD代碼上開發商業軟件發布和銷售,因此是對商業集成很友好的協議,很受大公司的歡迎,因爲可以完全控制這些第三方的代碼,甚至在必要的時候可以修改或者二次開發。

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样适用于商业软件,鼓励代码共享和尊重原作者的著作权,同样允许代码修改,但它更重视专利权。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业産品发布/销售。现在热门的 Hadoop、Apache 家族、SVN、MongoDB 等项目都是基于该许可协议研发的。

GPL協議来源自由软件联盟GNU,GPL/LGPL都侧重于代码及衍生代码的开源与免费使用。GPL是传染性开源,只要软件中包含了遵循 GPL 协议的産品或代码,该软件就必须也遵循 GPL 许可协议,也就是必须开源免费,不能闭源收费,因此这个协议并不适合商用软件。
遵循 GPL 协议的開源軟件数量极其庞大,包括 Linux 系统在内的大多数的開源軟件都是基于这个协议的。
软件在追求“自由”的同时,不能牺牲程序员的利益,否则将会影响程序员的创造激情,因此世界上现在有 90 多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益(详细列表见: https://opensource.org/licenses/alphabetical)。
對于准備編寫一款開源軟件的開發人員,也非常建議先了解一下當前最熱門的開源許可協議,選擇一個合適的開源許可協議來最大限度保護自己的軟件權益。
由寬松到嚴緊排序,常用的開源許可證有:
MIT許可證
BSD許可證
Apache許可證
LGPL許可證
GPL許可證
MIT、BSD 许可证都源自大学,体现了简单、开放和包容的特点。
MIT、BSD、Apache 三者都支持闭源的后续开发。
GPL、LGPL 传染性开源,编译的代码里用了这里的代码,都必须开源。
具体选择可以参照乌克兰程序员 Paul Bagwell的这张分析图(阮一峰、小鱼周凌宇翻译):
MIT協議
MIT 是十分宽松的许可协议,来源于大学,可以说是史上最为简洁和慷慨(permissive)的开源协议之一。- 用戶可以拿自己的代碼做任何想做的事情;
- 用戶在項目副本中要包含版權聲明和許可聲明;
- 用戶無需承擔任何責任。
作者只想保留版权,而无任何其他限制。也就是说,无论是以二进制发布的还是以源代码发布的,都必须在发行版里包含原许可协议的声明,。采用MIT協議的应用案例有JQuery、Rails 等。
BSD協議

- 如果再发布的软件中包含源代码,则源代码必须继续遵循 BSD 许可协议。
- 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD協議。
- 不允許用原始開源代碼軟件的名稱、作者名字或機構名稱進行市場推廣。
BSD代碼鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由于允許使用者修改和重新發布代碼,也允許使用或在BSD代碼上開發商業軟件發布和銷售,因此是對商業集成很友好的協議,很受大公司的歡迎,因爲可以完全控制這些第三方的代碼,甚至在必要的時候可以修改或者二次開發。
Apache協議

- 如果修改了程序源代碼,需要在文檔中進行聲明;
- 若軟件是基于他人的源代碼編寫而成的,則需要保留原始代碼的協議、商標、專利聲明及其他原作者聲明的內容信息;
- 如果再发布的软件中有声明文件,则需在此文件中标注 Apache 许可协议及其他许可协议。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业産品发布/销售。现在热门的 Hadoop、Apache 家族、SVN、MongoDB 等项目都是基于该许可协议研发的。
GPL協議

- 複制自由:允許把軟件複制到任何人的電腦中,並且不限制複制的數量。
- 傳播自由:允許軟件以各種形式進行傳播。收費傳播允許在各種媒介上出售該軟件,但必須提前讓買家知道這個軟件是可以免費獲得的;因此,一般來講,開源軟件都是通過爲用戶提供有償服務的形式來盈利的。
- 修改自由:允許開發人員增加或刪除軟件的功能,但軟件修改後必須依然基于GPL許可協議授權。
遵循 GPL 协议的開源軟件数量极其庞大,包括 Linux 系统在内的大多数的開源軟件都是基于这个协议的。
LGPL開源協議
LGPL 是 GPL 的一个衍生版本,也被称为 GPL V2,该协议主要是为类库设计的开源协议,同样来源于自由软件联盟GNU,可以翻译为更宽松的GPL協議,也属于传染性开源。- 用戶如果只是對LGPL軟件的程序庫的程序進行調用而不是包含其源代碼時,相關的源程序無需開源。
LGPL允许商业软件通过类库引用(link)方式使用LGPL 类库而不需要开源商业软件的代码。这使得采用LGPL協議的开源代码可以被商业软件作为类库引用并发布和销售。GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的産品。

禅道軟件
