专栏首页天马行空布鲁斯扒一扒常见的开源许可协议

扒一扒常见的开源许可协议

之前写过一篇文章(那些年用过的开源项目(一)),列出了很多当年用过的开源项目。现在有这么多的开源项目可供我们选择,这要得益于当前非常积极的开源氛围,然而,尽管开源项目很多,我们在项目中选择的时候,一定要注意它的开源许可协议,否则可能会引起一些法律的问题。

之前看过一幅图,非常清楚的给出了几个常见的开源许可协议(GPL、BSD、MIT、Mozilla、Apache和LGPL)的区别,如下:

图片来源 https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

关于各个许可协议的具体定义,大家都可以网上查阅。关于如何选择,根据我的经验,对于商业软件开发,一般来说,BSD、MIT、Apache这三个许可协议比较安全;其它三个需要仔细考虑。

下面具体扒一扒各个许可协议:

Apache

Apache许可协议,现在是2.0版本,具体协议的定义参考https://www.apache.org/licenses/LICENSE-2.0。

对于Java开发人员来说,这个license应该不陌生,Apache和Spring下面的开源项目都是基于这个开源许可协议。

BSD

BSD的全称是Berkeley Software Distribution,从名字可以看出它跟美国的伯克利大学有关。这个许可协议出现的历史背景跟unix操作系统有很大关系,后面会提到的GPL许可协议也跟unix操作系统有关系,可见一个东西的出现都有它历史的相关性。当时,unix操作系统是一个受版本保护的商业操作系统,其所有权归AT&T贝尔实验室所有,为了推广unix系统,贝尔实验室免费把unix操作系统的源码分发给各个大学和研究机构使用研究,后来在伯克利大学,就出现了一个unix系统的BSD发行版本,这就是BSD的来源。很多人提到BSD,都会想到Bill Joy这个元老级程序员,这里有一篇关于他的文章(那些神一样的程序员),大家可以查阅。

之前用过的antlr和NSubstitute,都是BSD许可协议。

MIT

MIT的全称是Massachusetts Institute of Technology,美国的

麻省理工学院,又一个跟美国大学有关的开源许可协议,所以可以看出美国大学早些年代在计算机领域的影响力有多大。

之前用过的autofac和Newtonsoft.Json,都是MIT许可协议。

GPL

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

LGPL的全称是Lesser General Public License,轻量级通用公共许可证,顾名思义,它就是GPL的宽松版。

之前用过一个library:flying saucer,就是这个许可协议,这个许可协议用于商业软件开发的话,需要仔细评估。

Mozilla

我想大家对Mozilla很熟悉的地方就是MDN和firefox浏览器,起初firefox是网景Netscape公司的一个产品,Mozilla是网景公司设立的一个组织,用于支持Firefox的开发。后来,网景被收购之后,Mozilla基金会成立用于继续支持firefox开发,Firefox以Mozilla开源许可协议开源。

除了上面提到的,Java开发人员肯定还熟悉另外一个开源许可协议Eclipse,之前用过的eclipselink就是这个许可协议,它也是属于风险比较小的一个协议。

更多的开源许可协议,大家可以查看下面官方网址:

https://opensource.org/licenses/alphabetical

References

  • https://baike.baidu.com/item/BSD/3794498?fr=aladdin
  • https://baike.baidu.com/item/Mozilla%E5%9F%BA%E9%87%91%E4%BC%9A/10167516?fromtitle=mozilla&fromid=7148071&fr=aladdin

本文分享自微信公众号 - 天马行空布鲁斯(gh_2feda5c053bd),作者:huazailmh

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 那些年用过的开源项目(一)

    近期微软收购github新闻热搜各大媒体,微软,曾经开源的极力反对者,近几年也是积极拥抱开源。我司近来也是积极的拥抱开源,贡献了包括ui5,cloudfoudr...

    Bruce Li
  • Security知识阶段汇总

    去年参与了很多公司组织的security活动,并且给自己team,其他team做过一些security相关的分享,今年公司security相关的活动又陆续开始了...

    Bruce Li
  • 浅析一个sql server数据库事务死锁问题

    一个学生管理系统,数据库是sql server,有一个Web API用于创建student。student对象的表结构如下:

    Bruce Li
  • 性能分析之随机写和顺序写

    在性能分析的过程中,有很多人会去看每秒写多少,可是写多写少,有什么问题呢?这是我们要关注的内容。

    高楼Zee
  • 2021-04-06

    未被 external 修饰的是内部表(managed table),被 external 修饰的为外部表 (external table)

    ChinaManor
  • 使用Docker部署RabbitMQ集群

    本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘。

    Java中文社群-磊哥
  • 技术架构理解:microServices微服务的架构理解、以及模块的理解与核心中间件的理解。

    1.1、借助模型工具,画出对架构的理解,从历史演变开始,到目前落地的、较成熟的架构,描述出对它的理解。通过历史演变,我们知道为什么用这个架构,用这个架构有什么好...

    赵腰静
  • 数据中心联盟第五批大数据产品评测结果出炉,腾讯云大数据斩获多个奖项

    近日,在数据中心联盟组织的第五批大数据产品评测中, 腾讯云大数据平台取得了两项第一名,特别在 Hbase 性能上有非常亮眼的表现,其他各项成绩也名列前茅。本月7...

    云加社区
  • 6 利用Docker .NET应用程序模板制作您的容器应用程序(第2部分)

    在最后一篇文章中,我们用各种模板进行了设置。现在我们需要让他们工作起来了。

    Hi胡瀚
  • Android DataBinding 数据绑定

    引子 几年前,数据绑定在便已在前端界风生水起,Angular.js、React.js、vue.js等热门前端框架都具备这种能力。 数据绑定简单来说,就是通过某种...

    QQ音乐技术团队

扫码关注云+社区

领取腾讯云代金券