美文网首页
几个主流开源License的区别

几个主流开源License的区别

作者: ntjsz | 来源:发表于2019-12-25 19:00 被阅读0次
    Paul Bagwell的分析图(阮一峰 译)

    关于“新增代码”

    网上流传的这张图片实际上容易产生一些误导,关键在于“新增代码是否采用同样许可?”中的“新增代码”。

    GPL

    GPL全称GNU General Public License,一般要求derivative work必须使用同样的GPL

    LGPL

    LGPL最初是GNU Library General Public License的缩写,原本是基于GPL,为适用于类库而开发的版本。LGPL同样要求derivative work必须使用同样的LGPLGPL

    但此License中区分了两个概念,work based on the librarywork that uses the library

    A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

    如果程序不包含LGPL的work或derivative work,仅仅是将其作为库使用,则该程序不属于derivative work,也就不必遵守LGPL的要求,可以自由选择License。derivative work的含义是非常广泛的,不仅仅是程序源代码,还包括编译结果,可执行程序,相关文档等。因此想要自由使用许可,发布的工程中连库的二进制版本也不能包含。

    不过此License的发布者Free Software Foundation (FSF)发现,GNU Library General Public License的命名方式会误导大家,使大家认为library代码应该优先使用LGPL而非GPL。实际上,FSF是希望能使用GPL开源的工程就使用GPL,有特殊的目的才去使用LGPL,即使工程是作为library使用的。因此,LGPL后更名为GNU Lesser General Public License,以便减少误解。

    由此可见,图中的“新增代码”在LGPL下意味着使用该库的编写的新代码,而不是对LGPL许可的原代码的修改或新增。

    MPL

    MPL全称Mozilla Public License。在基于MPL项目构建的Larger Work中,MPL的部分依旧是MPL,其它的新增代码可以使用其他协议,而且这个Larger Work整体也可以是其他协议,但其中MPL部分的代码要依旧开源。

    由此可见,在MPL下,图中的“新增代码”与平时的理解是一样的。

    结语

    BSD,MIT,Apache,GPL,LGPL,MPL等都是当下使用的主流许可,各个许可其实各自有着详细而复杂的规定。各自的细则都在最新的许可内容中定义了,本文章以及网上流传的各个文章都不一定正确,也不够全面。

    《Understanding Open Source and Free Software Licensing》,该书比较全面的阐述了各个主流许可的规定,从copyright和patent的角度分析了各个许可,值的参考。该书的下载地址。不过此书的成书时间较早,部分许可有做微调,需要以最新版的许可为准。

    相关文章

      网友评论

          本文标题:几个主流开源License的区别

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