一些基本概念
在知道了Copyright、Copyleft、Permissive与CC(Creative Commons)这些较为宏观一些的概念的含义之后,接下来就需要了解一些在开源中常见的基本概念都代表什么意思了。
首先,要清楚在开源许可证中高频出现的引用
、修改
、贡献
和衍生品
这几个名词术语的意思。
所谓引用
指的是不直接使用源代码中的文件,而是将它作为一个第三方的依赖库来进行引用,这种方式有时也称为链接
(Link
)。例如,Java开发中经常通过Maven引入的第三方依赖就是典型的引用
。
而修改
则是直接对源代码文件进行修改,修改完后再重新编译打包使用,这其实就是工程师们常干的二次开发
工作。
贡献
是指由版权所有者(即源代码的原创作者)或由经其授权的个人或法人实体提交的,可以纳入原作品的任何二次创作品,这包括作品的原始版本和对原作品的任何修改、添加或其衍生作品。比如,某位工程师下载了Tomcat的源代码并给它添加了某个新功能,或者修改了其中的某个致命缺陷,此时,就可以在得到原作者许可的前提下,将新增加或修改这部分代码贡献
出来,与之前的源代码合并成新的发行版本。
至于衍生品
则指的是通过引用
或修改
的方式所生成的最终产品。例如,或者通过Spring Boot框架,或者通过AppFuse平台进行二次开发,或者两者兼而有之。如果某位工程师利用Github上源代码开发出了他自己的电商网站,那么这个电商网站就是一个典型的衍生品
。
以LGPL许可证为例,如果某位Android开发者基于其底层的Framework
开发出了某个受欢迎的应用,但却不想公开其源代码的话,那么就可以在他想开源的时候使用LGPL许可证,防止敏感的代码被公开。

但如果该工程师对某个有LGPL许可证的库做了修改,那么所有这些修改就必须以LGPL或者兼容它的许可证来发布。
而且,如果在修改后的库中包含了任何来自原始LGPL库的代码,那么所有修改的代码及其衍生品都必须以LGPL许可证发布。

其次,是所谓开源协议的传染性
和兼容性
。
传染性
指的是某个开源协议要求基于其开源代码的引用
或修改
后的衍生品
也必须采用该协议发布,开放源代码。开源协议的这个特点很像病毒一样从一个工程师传染到另一工程师,从一个项目传染到另一个项目,所以这种特性也被称为传染性
。
例如,GPL许可证就存在两个维度的传染
:横向传染
和纵向传染
。

而不同版本GPL许可证之间的传染性的区别如下。

如果从头到尾只使用一个开源许可证当然不存在问题,但目前的软件开发基本上都是大量引用了第三方的链接,或修改,或衍生,这就使得发布的软件产品中或多或少地存在多种不同的开源许可证。而由于不同的开源许可证具有有不同的条款、权利与义务,当两个或两个以上开源许可证混在一起时,就有可能引起各个开源许可证之间的限制条款发生冲突,如果出现冲突就说它们不兼容,否则就是兼容性的。
对于各种可能情况下的兼容性,常用的一些开源许可证的区别如下面的几幅图片所示。






对于几种常用的许可证的兼容性的总结如下。

所以,开源从来就不是仅仅将代码发布到Github上就万事大吉了,而是有着一套和商业化差不多的成熟玩法,其核心意义在于:既要尊重他人劳动成果,又要给予用户足够的便利,同时还要说清楚自身的责任和风险,避免自己和用户都踩坑。
至于更专业的开源项目运作,可以委托或聘请专业的律师来跟进。
感谢支持
更多内容,请移步《超级个体》。