引言
开源软件又称开放源代码软件(Open Source),其指源代码可被公众使用的软件。开源软件诞生于自由软件运动,旨在强调源代码的开放与共享,致力于鼓励人们志愿地改善软件,具有开放(公开)、可使用、可修改、可分发的特点。为了保障开源软件事业能够稳健发展,创设者们开创了开源软件许可证规则体系,确保开放与共享精神贯彻始终。
通常情况下,开源软件的许可证都明确规定了用户可以做什么和不可以做什么,例如是否允许商业使用、是否允许私有化修改后的代码或其他限制性条款。这些规则可能包括以下内容:
(1)维护版权及原始信息:开源软件的许可证通常要求在使用、修改或发布该软件时保留作者的版权声明和授权协议,以保持软件的可追溯性和知识产权保护。
(2)共享衍生作品:某些开源软件许可证要求对任何以该软件为基础创建的衍生作品进行相应的开源授权,即使这些衍生作品并非开源软件。
(3)禁止侵犯专利等知识产权:一些开源软件许可证可能还包含禁止侵犯专利、商标和其他知识产权的条款,以确保软件可以自由使用和修改。
(4)传递许可证:一些开源软件许可证也规定了对使用和传输软件的限制,以确保软件能够保持开放和公共。
总体而言,开源软件许可证旨在促进开源软件生态系统中的协作、创新和自由,并确保所有用户都可以充分利用和贡献到该生态系统中。
1.常见开源软件许可证协议介绍
开源软件许可证协议是指规定了开发人员如何使用、复制和分发软件的一种法律框架。它是开源软件运动的核心原则之一,旨在促进共享知识和技术的发展,同时降低软件开发成本。
开源软件许可证协议包括多种类型,其中最常见的是GPL、MIT、BSD和Apache等。这些协议的主要区别在于对代码分发和修改的限制程度,以及对作者的要求和保障不同。
(1)GPL协议:GPL协议是最为广泛使用的开源软件协议之一,它要求任何使用或分发该软件的人都必须开放其源代码,并将相应的修改和衍生作品同样发布为开源软件。这意味着其他人可以自由地查看、修改和重新分发该软件,但也要求它们遵守相应的规定,否则将面临法律责任。
(2)MIT协议:MIT协议较为宽松,允许开发人员将源代码用于商业用途,但需要在软件中包含原始许可证条款。它鼓励贡献者为改进和扩展软件做出贡献,但并不强制执行相应的合规性和透明度方面的要求。
(3)BSD协议:BSD协议与MIT协议类似,同样允许商业使用,但要求在发行版本中保留原始许可证条款。与MIT协议不同,它具有保障作者的特点。该协议旨在确保开发人员不会将其软件代码用于恶意或不道德的用途,同时给予他们使用范围内更灵活的发挥自由。
(4)Apache协议:Apache协议与上述协议相比较为复杂,分为两个版本。该协议要求使用Apache许可证的应用必须包含版权声明和许可证声明,并且将几份感谢陈述放入软件的文档中。此外,Apache 2.0版本明确规定了贡献者所提供的内容的责任和保证等细节问题,以便于更好地保护贡献和开源社区。
在选择开源软件协议时,需要根据自己的需求、目的和长期目标考虑。不同的协议在使用范围、授权、其他组织合作等方面存在各种限制和利益,因此需要仔细研究和分析后再做出决策。
2.许可证协议的兼容性
(1)一些主要开源许可证协议(以下简称许可证)的兼容情况
GPL许可证(包括GPLv2和GPLv3)与大部分其他许可证不兼容。因为GPL许可证存在强制“传染”的条款,即任何以GPL许可证发布的软件被修改后只能以GPL许可证再次发布,会影响其它许可证下的代码使用 。
Apache 2.0 许可证、BSD 2-Clause许可证、BSD 3-Clause许可证、MIT许可证等 “宽松许可证”则与大多数其他许可证都是兼容的,可以在同一项目或代码库中混用。
Mozilla Public License 2.0 (MPL-2.0) 许可证也是比较灵活的,可以与许多其他许可证共存,包括MIT许可证、BSD许可证、Apache许可证、LGPL许可证,但可能会对GPL许可证造成问题。
Common Development and Distribution License 1.0 (CDDL-1.0) 许可证与GPL许可证不兼容,因为CDDL许可证需要任何修改的代码都必须是“独立的”模块,不允许将CDDL代码与GPL代码结合使用。
需要注意的是,这里列出的不兼容情况并不是全部,实际应用中还需要更具体的情况权衡选
择适合的许可证。因此,在选择开源许可证时应该认真阅读相关条款和了解其具体影响。
(2)许可证不兼容及解决方法
许可证不兼容是指两个许可证之间存在冲突,使它们无法在同一项目中同时使用。举例来说,GPL(General Public License)和Apache许可证是不兼容的。因为GPL要求以GPL授权条款进行发布的代码必须以GPL方式分发,而Apache许可证则不要求这样做。因此,如果一个项目包含同时使用了两种许可证的代码,则可能会导致许可证冲突,这将使得该项目的发布变得非常困难。
如果在项目中同时使用了GPL许可证和Apache许可证的代码,那么需要确保项目符合与这两个许可证的要求。这可能需要做出一些权衡考虑,并遵守不同许可证的规定。
一种解决方法是通过使用具有兼容许可证的软件,在项目中尽量使用可以覆盖GPL或Apache许可证限制的组件。例如,可以使用MIT或BSD(Berkeley Software Distribution)许可证的组件,因为它们与GPL和Apache许可证兼容。
例如,假设正在开发一个商业软件,这个软件需要使用一个包含GPL许可证的程序库。为了
使用这个程序库,你也必须将你的软件发布为GPL许可证,这会使你的应用程序变成开源软件但可能违反商业计划。这种情况下,可以考虑将GPL程序库替换为MIT程序库,将GPL程序库替换为MIT程序库是其中一种可能性,因为许多MIT许可证的组件提供与GPL许可证的功能相似或等效的功能。通过使用一个对GPL许可证兼容的许可证的组件,可以更容易地将商业应用程序与开源组件结合在一起,并确保软件仍然属于自己的版权控制下。
另一种解决方法是将项目中的不同代码分为不同模块并进行打包,每个模块应该仅使用一种许可证。将项目中的不同代码分为不同模块并基于各自许可证进行打包是一个常见的处理方式。这种方法被称为“相互独立的模块”(Separate Modules),在这个模型下,每个模块都是相互独立的,只使用与该模块的许可证相兼容的代码和组件。
例如,如果软件项目包括使用GPL许可证的代码以及使用MIT许可证的代码,可以将这些代码分别打包到两个不同的模块中,并提供给用户选择相应模块,避免对整个项目进行GPL许可证公开发布或商业授权等限制。这样可以合法地使用这些模块,但需要确保模块之间的接口清晰定义以避免许可证冲突。
3.许可证方面的侵权案例
在过去曾经发生了多起涉及许可证并最终导致不良后果的案例,在此进行简单的介绍。
案例一
罗盒公司经登记依法享有“罗盒(VirtualApp)插件化框架虚拟引擎系统[简称:VirtualApp]V1.0”(下称涉案软件)著作权的全部权利,在国际软件托管平台GitHub上公开了VirtualApp的源代码,并声明任何人如需将VirtualApp用于商业用途,需向罗盒公司购买商业授权。玩友公司开发的“视频美颜版”“视频美颜相机版App”“视频美颜相机”“视频美颜相机版”软件(下称被诉侵权软件)可以通过多个互联网平台获得下载、安装和运营服务。冠准航公司、奥斯坦公司、祥运公司分别通过和支付宝向被诉侵权软件的用户收取会员费。经罗盒公司委托鉴定机构鉴定,被诉侵权软件与涉案软件构成实质相似。罗盒公司主张玩友公司收取会员费和不提供开源代码的行为违反限制商业使用条款和GPL V3协议构成侵权,请求判令玩友公司停止提供被诉侵权软件的下载、安装和运营服务并赔偿经济损失1500万元和维权合理费用15万元,另三被告承担连带责任。
最终法院宣判玩友公司违反GPL V3协议的约定,其依据GPL V3协议获得的授权自动终止,玩友公司再使用涉案软件已没有法律和合同依据,故其构成对涉案软件的侵权。另三被告实
施收款行为前已对被诉侵权软件著作权登记证书做了初步审查,本身无过错,故无需承担连带责任。法院据此判决玩友公司停止提供含有侵权沙盒分身功能源代码的四款软件的下载、安装和运营服务并赔偿罗盒公司经济损失及维权合理开支共计50万元。
该案例说明在使用遵循GPL协议的开源软件时应遵守其使用条件,如果想要将其用于商业用途或在其他方面进行修改或分发,就必须遵守协议约定并公开变更,以便让其他人知道如何获取和使用的修改版本。如果未满足这些要求,则可能构成对原始软件版权的侵犯,并且可能会遭到法律诉讼。
案例二
iRobot是一家制造Roomba智能扫地机器人的公司,其使用BusyBox开源软件。BusyBox是一个用于嵌入式操作系统的工具集,iRobot将其集成到自己的产品中并进行了定制。然而,iRobot没有遵循GPL许可证,并未向公众提供源代码或者提供更改后版本的访问。
这引发了开源社区的争议和指控,特别是Software Freedom Conservancy(SFC)这类组织致力于执行开源协议的规定,通过法律途径保护开源项目的利益。SFC提出诉讼,指控iRob
ot违反了GPL,在且不加限制地使用软件的同时拒绝向社区公开本公司所使用BusyBox的源代码,从而限制了其他人的前后使用权。
对于Roomba所使用的BusyBox开源软件的GPL许可证违反诉讼,最终该案获得了法院的确认。2017年,iRobot与Software Freedom Conservancy(SFC)达成和解协议,同意遵守GPL。iRobot公开了BusyBox的部分源代码,并向SFC支付了一定的解决费用。最终,iRobot同意遵从GPL,公开源代码,并给予社区成员以合理时间范围内代码审核和更新的机会。
该案例说明了即使一个公司只是在嵌入式操作系统中使用开源软件,但如果未遵守相应的开源协议而导致没有公开源代码的情况,也可能在面对开源组织的诉讼时不利。
4.法务建议
1.许可证的选择和使用
在选择开源软件库时,务必仔细阅读和理解库中所使用的许可证。不同类型的开源许可证有不同的要求和限制,因此需要确保所选库的许可证与目标和商业模式相一致。
2.检查审核代码和安全漏洞
开放源代码意味着什么
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论