本文主要目的是为了了解一些基础的GPL注意事项,以及防止被一些一知半解的人蒙骗。本文不做任何内容的依据,仅为个人见解,仅供参考。
一些常见的开源协议
GPL许可协议(GNU General Public License):只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费,这一点也就是所谓的传染性,创始人是理查德·马修·斯托曼。
中文翻译版地址:https://jxself.org/translations/gpl-2.zh.shtml
GPL 总共有三个版本,每一个版本之间是有区别的,大部分使用GPL开源软件都是使用GPL v2 的开源协议,比如openjdk
依据开源作品修改的开源软件(无论是否包含独立部分)视作不可分割的完整作品,在传输、分发这样的作品时,无论其中开源部分与独立部分是分开发布还是统一发布,这一发布后的作品整体均应遵守开源协议。
GPL存在两个维度的感染,一个是横向,一个是纵向。纵向感染指的是直接在GPL源码中修改了内容,形成了一个新的GPL版本。
横向是指用了GPL开源代码的一部分,或者所有。
GPL v1:只要企业使用了GPL代码,那么所有这个整体都会感染,遵循GPL协议。
GPL v2:使用了GPL代码的部分以及衍生部分,都要被GPL协议感染,遵循GPL协议,但是除了衍生的或者使用的这一个部分,独立部分都不需要遵循GPL协议(需要单独分发,遵循GPL的分发,独立部分单独分发)。
GPL v3:依据开源作品修改的开源软件,无论是否包含独立部分,都视作不可分割的完整作品,在传输、分发这样的作品时,无论其中开源部分与独立部分是分开发布还是统一发布,这一发布后的作品整体均应遵守开源协议。
这里举一个栗子:
GPL V1 如果你用了GPL发动机,并且改装了发动机,优化了性能,最终的这个成品也得是GPL。
GPL V2 如果你用了GPL发动起,并且改装了发动机,优化了性能,并且增加了基于这个改装后的发动机增加了新功能,后面的这个新功能可以避免被感染
GPL V3 如果你用了GPL发动起,并且改装了发动机,优化了性能,并且增加了基于这个改装后的发动机增加了新功能,全部都是GPL。
这个争议很大,静态链接只静态使用,动态链接指动态调用,Hook,或者引用。没有具体的法律认为动态链接就一定会违反GPL。
简单的说就是先将Linux的核心进行封装,然后将程序运行到这个封装之后的GPL程序上。也就是说除了封装核心,其他都不再属于GPL感染的内容。