当前位置: 首页 > 科技观察

开源爱好者必看!开源许可扫盲基础知识

时间:2023-03-19 23:57:53 科技观察

作为开发者,如果打算开源自己的代码,别忘了选择开源许可(license)。很多开发者对开源许可证知之甚少,不知道有哪些许可证,如何选择。本文介绍开源许可证的基础知识,主要参考OpenSource.com(1,2)。一、什么是开源许可证开源许可证是一种合法的许可证。通过它,版权所有者明确允许用户免费使用、修改和共享受版权保护的软件。版权法默认禁止共享。也就是说,没有许可证的软件等同于保留版权。虽然是开源的,但是用户只能阅读源代码,不能使用。一旦使用,将侵犯版权。因此,如果软件是开源的,则必须明确授予用户开源许可证。2.开源许可证的种类目前,国际公认的开源许可证有80多种。它们的共同特点是都允许用户免费使用、修改、共享源代码,但都有各自的使用条件。如果一个开源许可证没有任何使用条件,甚至不需要保留作者信息,那么就相当于放弃了版权。这时,软件可以直接声明进入“公有领域”。根据使用条款的不同,有两大类开源许可证。许可许可Copyleft许可III。Permissivelicense3.1特点Permissivelicense是最基本的一种,对用户几乎没有任何限制。用户可以修改代码并关闭源码。它具有三个基本特征。(1)没有使用限制。用户可以使用代码并为所欲为。(2)无任何保证,代码质量无保障,用户自行承担风险。(3)通知要求:用户必须公开原作者。3.2通用许可共有四种通用许可。它们都允许用户任意使用代码,区别在于要求用户遵守的条件。(1)BSD(双条款版本)在分发软件时必须保留原始许可声明。(2)BSD(三条款版本)发布软件时,必须保留原始许可声明。不得使用原作者姓名进行软件推广。(3)MIT在分发软件时,必须保留原来的licensestatement,这与BSD(two-clauseversion)基本一致。(4)Apache2分发软件时,必须保留原始许可声明。对于任何修改过的文件,必须向用户声明该文件已被修改;对于未修改的文件,许可证必须保持不变。4.CopyleftLicense4.1Copyleft的含义Copyleft是RichardStallman发明的一个词,作为Copyright(版权)的反义词。Copyright直译为“复制权”,是版权制度的核心,即用户无权擅自复制。作为反义词,Copyleft意味着用户可以在未经许可的情况下随意复制。但是,它附带先决条件,比许可许可更严格。如果分发二进制格式,则必须提供修改后的源代码,并且许可证必须与原始许可证一致,并且必须添加其他限制。以上三个条件的核心是:修改后的copyleft代码不得闭源。4.2常见的许可证还有四种常见的copyleft许可证(对用户的限制从多到少排序)。(1)AfferoGPL(AGPL)如果云服务(即SAAS)中使用的代码是license,那么云服务的代码也必须是开源的。(2)GPL如果项目包含GPL许可下的代码,则整个项目必须使用GPL许可。(3)LGPL如果项目使用动态链接调用许可的库,则项目不需要开源。(4)Mozilla(MPL)只要license的代码在单独的文件中,其他新增的文件不需要开源。五、常见问题本节回答一些关于开源许可证的常见问题。5.1什么是分销?除AfferoGPL(AGPL)外,其他所有许可均规定许可仅要求“分发”。换句话说,如果你不“分发”,你就不需要遵守。简而言之,发行是将受版权保护的作品从一个人转移到另一个人。这意味着,如果您自己使用它而不向其他人提供,则没有分发。另外,这里的“人”也指“法人”,所以如果用户是公司,并且只在公司内部使用,则无需遵守许可。云服务(SaaS)是否构成“分发”?答案是不。所以你在不提供源代码的情况下使用开源软件提供云服务。但是AfferoGPL(AGPL)许可有一个例外,它规定云服务也必须提供源代码。5.2开源软件的专利情况如何?一些许可证(Apache2和GPLv3)包含明确的条款,授予用户使用软件中包含的所有专利的许可。其他许可证(BSD、MIT和GPLv2)根本不提及专利。但一般认为,他们默认给予用户专利许可,不构成专利侵权。一般来说,除非有明确的“保留专利”条款,否则使用开源软件不会构成专利侵权。5.3什么是披露要求?所有开源许可证都有一个“通知要求”,即要求软件发行商向用户披露软件中有开源代码。一般来说,只要您在软件中提供完整的原始许可文本并公开原作者,就符合“公开要求”。5.4GPL病毒是真的吗?GPL许可证规定,一旦您的项目包含GPL代码,整个项目就成为GPL。有人将这种传染与“GPL病毒”相提并论。许多公司想避开这个条款,使用GPL软件,并且不开源他们的专有代码。理论上,这是不可能做到的。因为GPL旨在防止这种情况发生。但实际上,不遵守GPL的最坏情况是被起诉。如果你告诉法庭你不能满足GPL的条件,法官只会裁定你停止使用GPL代码(法律上叫“停止侵权”),并不会强制你开源源代码,因为《版权法》中的“违约救济”并没有提到违约者必须开源,只是可以停止侵权,赔偿损失。