美文网首页
几种开源license介绍

几种开源license介绍

作者: 抬头看月亮 | 来源:发表于2018-07-05 16:19 被阅读0次

    先上一个乌克兰程序员Paul Bagwell的分析图:


    image.png

    //该图应该是出自阮一峰博文

    咱们日常使用情况可以从3个维度来分类:

    1. 是否有对源代码的修改
    2. 开发语言,java /c++, javascript
    3. 暂且卖一关子

    在此要先说下copyleft的概念:the software is copyrighted, but instead of using those rights to restrict users like proprietary software does, we use them to ensure that every user has freedom.

    也就是说copyright 保护作者的专有权利,而copyleft 允许他人任一修改和分发作品,加入了法律上的分发条款,前提是这些条款不能改变(举栗:你用了GPL,那你的软件也要遵循GPL协议分发)。

    那有哪些开源license是copyleft呢? 答案是GPL, LGPL, AGPL, EPL……等等。

    ==============GPL(General Public License)=================

    2007年6月29日,GPL v3发布。

    GPL规定举例:

    1. 如果你修改了源代码且要商用,那你的系统中修改的这部分也必须开源。(这点后面会经常提到)
    2. 要求放置协议说明

    GPL条款规定它的derivative work也必须是GPL.(JAVA怎样算derivative work 请看下面LGPL介绍中的第二段)

    ==============LGPL(Lesser General Public License)============

    image.png

    ===========BSD(Berkeley Software Distribution License)========

    GPL强迫后续版本必须一样是自由软件,BSD的后续版本可以选择要继续是BSD或其他自由软件条款或封闭软件等等 (https://zh.wikipedia.org/wiki/BSD%E8%AE%B8%E5%8F%AF%E8%AF%81)

    这点从一开始的图里可以看到,BSD 和后面将要介绍的MIT 以及Apache 2.0 在修改源代码后可以闭源.

    自由软件定义:(https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6

    • 自由之零:不论目的为何,有使用该软件的自由。
    • 自由之一:有研究该软件如何运作的自由,并且得以修改该软件来匹配用户自身的需求。获取该软件之源码为达成此目的之前提。
    • 自由之二:有重新散布该软件的自由,所以每个人都可以借由散布自由软件来敦亲睦邻。
    • 自由之三:有改善再利用该软件的自由,并且可以发表修订后的版本供公众使用,如此一来,整个社区都可以受惠。如前项,获取该软件之源码为达成此目的之前提。

    如果再分发的话,需要放置协议说明。

    ===========MIT=========================================

    MIT许可协议之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X许可协议”(X License)或“X11许可协议”(X11 License)(https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89)

    同样的,如果分发的话,需要放置协议说明。

    ==========Apache 2.0=====================================

    Apache 2.0 也是一个比较好的license,和BSD以及MIT不同的是, Apache 2.0要求:如果对源代码有修改,需要在说明里列出具体对源代码做了哪些修改。

    同样的,如果再分发的话,需要放置协议说明。

    ==========EPL(Eclipse Public License)========================
    https://resources.whitesourcesoftware.com/blog-whitesource/top-10-eclipse-public-license-questions-answered

    EPL 也是copyleft license, 好像不太妙,我的软件用了EPL license的软件,也要遵循EPL了吗?且宽心,EPL是弱copyleft license.

    如果仅仅是用的二进制文件,而不是源代码(一般此类情况发生在你有兴趣对源代码做了修改),那是不需要开源你的代码的。

    说到这里,要做一总结。GPL, LGPL,BSD, MIT, Apache 2.0, EPL 都可以商用。但是尽量不要修改源代码,修改的话就要复杂一些,看看具体license是怎么对修改规定的。

    还记得最开始的时候卖的那个关子么?分类维度之三,分发方式。

    我们平时开发的时候,作为java developer 难免会import各种各样的jar包,LGPL 特别对java做了说明,认为import这种做法就表明我们的产品是衍生品,就要遵循LGPL license。

    但是,幸运的是,GPL, LGPL 认为web应用不属于分发,属于internal use,所以就不受这些规则的限制啦。这个观点是在google上别人提问看到的,另外一种license也可以从侧面证明这个认知,那就是AGPL.

    AGPL(Affero General Public License) 就是为了对web服务约束而生的 (https://www.gnu.org/licenses/agpl-3.0.en.html),要求web应用发布的时候,也要把代码给开源了。除此外,它的约束和GPL v3是一样的。

    声明:本文仅从作者自己的理解出发,实际使用时还请咨询律师 :)

    相关文章

      网友评论

          本文标题:几种开源license介绍

          本文链接:https://www.haomeiwen.com/subject/lompuftx.html