以前写过一篇文章(那些年用过的开源项目(一)),列出了不少当年用过的开源项目。如今有这么多的开源项目可供咱们选择,这要得益于当前很是积极的开源氛围,然而,尽管开源项目不少,咱们在项目中选择的时候,必定要注意它的开源许可协议,不然可能会引发一些法律的问题。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