开源大类 |
常见许可证类型 |
典型软件 |
触发代码开源义务前提条件 |
开源要求和范围 |
规避开源方式 |
BSD类 |
Apache/BSD/MIT等 |
Tomcat OpenSSL |
无 |
无 |
不涉及 |
MPL类 |
MPL/EPL等 |
FireFox Eclipse |
产品集成使用该软件,并对外分发或销售。 产品对该软件进行了修改。 |
若无修改,则无需开源。 若对其进行了修改,需将修改的部分开源。 |
使用时不做任何修改 |
GPL类 |
LGPL |
Hibernate glibc |
产品集成使用该软件,并对外分发或销售。 |
软件本身须开源。具有传染性,与其静态链接部分的代码也必须以LGPL许可开源;动态链接则不被传染。 |
动态链接使用,仅开源其软件本身即可,产品代码可免受传染。 |
GPL |
Busybox linux kernel |
产品集成使用该软件,并对外分发或销售。 |
软件本身须开源。具有传染性,与其有链接关系的代码都必须以GPL许可对外开源,即与该软件在同一进程中运行的代码都必须开源 |
进程隔离,独立于产品进程运行,仅开源其软件本身即可,产品代码可免受传染 | |
AGPL |
Berkeley_DB |
产品集成使用该软件。 |
在GPL上增加了一条限制:即便不对外分发,只要在网络服务器上使用AGPL软件提供网络服务,就需要履行相关开源义务。 例如: Berkeley_DB,即使没有“分发”动作,通过WEB形式为用户提供服务,也要履行对外开源义务。 |
同GPL | |
SSPL |
MongoDB |
产品将该软件做为服务或利用该软件的能力向公司外的第三方提供服务。 |
软件本身须开源。具有传染性,使用开源软件相关的服务组件也要开源。相对AGPL,任何试图将开源软件作为服务加以利用的组件,都必须开放用于提供此类服务的软件的源代码。 |
谨慎使用!对于使用SSPL协议软件,向第三方提供服务会导致软件包整体开源。只能向公司内部人员开放。 |
常见许可证类型 | 触发代码开源义务前提条件 | 开源要求和范围 |
---|---|---|
BSD类,如:Apache/BSD/MIT等 | 无 | 无 |
MPL类,如:MPL/EPL/CDDL等 | - 产品集成使用该软件,并对外分发或销售 - 产品对该软件进行了修改 | - 若无修改,则无需开源 - 若对其进行了修改,需将修改的部分开源 |
LGPL | l 产品集成使用该软件,并对外分发或销售 | l 软件本身须开源 l 具有传染性,与其静态链接部分的代码也必须以LGPL许可开源;动态链接则不被传染。 l 若对其进行修改,若修改后增加的功能实现依赖于产品软件的数据或功能,则产品代码也会被传染。 l 开源的代码要能够通过编译 l 若为面向个人或家庭消费者的设备类产品,如手机、平板、电视机顶盒等,V3版本还要允许用户能够将编译出的二进制文件安装回产品设备 |
GPL | l 产品集成使用该软件,并对外分发或销售 | l 软件本身须开源。 l 具有传染性,与其有链接关系的代码都必须以GPL许可对外开源,即与该软件在同一进程中运行的代码都必须开源 l 开源的代码要能够通过编译 l 若为面向个人或家庭消费者的设备类产品,如手机、平板、电视机顶盒等,V3版本还要允许用户能够将编译出的二进制文件安装回产品设备 |
AGPL | l 产品集成使用该软件,对外分发、销售,或是通过web对外提供服务 | l 同GPL |