注解

这是一个 简编本 欧盟联合研究中心关于开源软件的指导方针(2010年9月)。原始文件可在线获取,网址:<https://joinup.ec.europa.eu/sites/default/files/oss-guidelines-v-digit-2.pdf>

本版本仅供内部使用,不应公开发布。

进一步参考:

欧盟22种官方语言也有类似的指南。<http://joinup.ec.europa.eu/system/files/guidelines/eupl%201.1%20guidelines%20en.pdf>

eupl与其他FOSS许可证之间的最新兼容性矩阵:<http://joinup.ec.europa.eu/software/page/license_compatibility_and_interoperability%20><https://joinup.ec.europa.eu/software/page/eupl/eupl-compatible-open-source-licenses>

公共管理与自由软件开发者合作指南http://ec.europa.eu/idabc/servlets/docbe59.pdf?内径=28128

开源软件公共采购指南http://joinup.ec.europa.eu/sites/default/files/oss procurement guideline%20-final.pdf

开源软件指南

早期判定原则

以下指南旨在帮助开发人员管理JRC开发项目中的开源软件(“oss”)。

分销政策的早期确定

关于已开发软件的分发或对现有软件的贡献,基本上有三种选择:

  1. 无分发(仅供内部使用的软件开发);

  2. “专有”分配(免费或带许可费授予个人许可证);

  3. 在开源许可下分发。

开源许可证的早期确定

如果选择开放源代码模型作为所需的分发策略,则在项目的早期阶段还必须确定发布正在开发的软件所依据的许可证类型。

[An] 开放源码许可证是由欧洲委员会倡议特别起草的。

该许可证名为eupl(欧盟公共许可证),旨在利用欧洲法律的概念,尊重欧盟成员国的法律和语言多样性。

在这种情况下,通常会选择eupl,但在某些情况下也可以使用其他许可证。

面向开发人员的OSS指南

记录您的工作

这可能是最重要的要求:当您在自己的软件中插入预先存在的OSS或使用OSS并希望对其进行修改时,必须在JRC项目中仔细记录您对OSS的使用。您必须始终记录:

  • 使用的任何OSS组件的来源、下载日期、版本号和发布许可证;

  • 代码中插入OSS块的位置;

  • 您在OSS源代码中的开发和修改的标识和说明,以及日期;

参与软件开发项目的承包商和合作者 [must] 按照上述说明操作。

哪里可以得到开源软件?

  • 直接在官方作者、编辑或项目网站上下载OSS(如果有);

  • 如果功能相关的软件可用,从osor.eu下载oss;

  • 如果没有,请选择在OSS社区中被广泛接受和识别的存储库。

使用OSS开发工具或环境

某些OSS是开发工具(如编译器或自动测试工具)或环境(如网站环境或工作站操作系统)。

从法律的角度来看,在软件开发项目中使用此类工具或环境并没有问题。

在项目中合并开源代码

这里的“合并”是指在您开发和/或修改现有OSS以创建新的或定制的软件时,将OSS代码的各个部分都包含在软件中。结果是相同的:您打算将预先存在的OSS代码集成到您正在处理的项目中。

对于是否在项目中包含OSS代码这个问题没有直接的答案;答案 [取决于] 在2个元素上:

  • 为此项目选择的分配方案 [也就是说,如果它将被分发] 在开源许可下;

  • 要合并或修改的OSS许可证。

将软件链接到OSS库

一些可用的操作系统作为库发布。

您可能希望在软件和这些(未修改的)库之间创建链接,并通过将它们编译在一起(“静态链接”)或不编译(“动态链接”)将它们与软件一起分发,而不是将它们合并到软件中。

有些情况下允许动态链接到OSS库,而静态链接则不允许。它取决于开放源代码许可证,根据该许可证发布此类库。因此,一个具体的方法是必要的。

正如上面提到的在项目中“合并”OSS一样,将OSS库的某些部分链接到项目的可能性取决于为项目选择的分发方案和发布该OSS的许可证。

保存并发送代码的副本,以便存档

所有开发的软件的副本都保存在合法的存档中。

您必须发送所有已开发软件及其后续(主要)版本的代码副本。这也适用于开发或修改的OSS。

您还应与项目经理/行动负责人核实开发的软件是否应上传到在线存储库或伪造文件(如osor.eu)。

与外部开发人员的关系

开发的某些(部分)软件可能来自外部开发人员,通常是承包商、其分包商或其他供应商。如果他们正在处理OSS,他们将被要求遵循类似的指导方针。如果您在工作过程中与这些外部开发人员有联系,请毫不犹豫地提请他们注意这些指导原则,并要求他们提供有关自己使用OSS的相关文档。此类要求应在与承包商签订的相关合同中规定。如果在检查由外部开发人员开发的部分软件时,您注意到当前的指导方针没有得到遵守(例如,没有版权声明,插入的OSS的使用没有文档记录,软件包含根据许可证发布的不允许使用的部分代码对于这种类型的项目等),您必须咨询您的行动负责人/项目经理。

在投标和合同中使用这些指南

如果从外部开发人员或承包商处采购软件,也必须遵守这些指南中规定的原则。确保招标和合同要求承包商必须遵守这些指南,这些指南必须附在本指南之后。此类招标和合同还应说明有关项目中使用OSS的具体要求(如有),并要求投标人和承包商提前解释和记录他们打算使用的OSS。

检查表

  • 您是否确定要从外部分发软件?

  • 您决定了要用于分发软件的许可证类型了吗?

  • 您是否记录,或要求您的承包商/合作者记录在开发项目中预先存在的OSS代码的使用情况?

  • 在修改、插入或链接已有的OSS组件时,是否检查了许可证的兼容性?

  • 您是否复制了项目中使用的现有软件上出现的所有版权声明和免责声明?

  • 您是否发送了用于合法存档的代码副本,并检查这些代码是否应在在线存储库中可用?

开源许可证

左移效果

一些开放源代码许可要求分发原始软件及其任何衍生作品的用户按照相同的许可条款进行分发。GPL和EUPL是包含此类义务的许可证的示例。实际后果示例如下:

  • 您修改了在GPL下发布的软件,并且希望分发修改过的工作:您必须在GPL下发布它。

  • 您可以将GPL下发布的一些软件代码行集成到一个更大的工作中。如果你想分发它,你必须在GPL下发布所有的结果工作,因为它将被视为GPL软件的“衍生工作”,即使只使用其中的一小部分。

包含这种义务的许可被称为“版权”许可,通常被称为具有“病毒效应”,因为它们通过衍生作品传播。相反,不包含此类义务并允许您选择要在哪些条件下分发衍生软件的许可证称为“许可”。

兼容性

开源许可证A被称为与开源许可证B“兼容”,当最初根据许可证A授权的软件在修改或与其他软件合并后可以根据许可证B重新分发时。

兼容性不是必需的互惠:许可证A可能与许可证B兼容,而许可证B可能与许可证A不兼容。

兼容性/不兼容性示例

  1. 两部分软件的合并,一部分根据BSD发布,另一部分根据EUPL发布。

bsd+eupl=eupl(正常)

在这种情况下,最初根据BSD许可证发布的软件集成到最终结果中,并在与其他软件合并后根据EUPL许可证分发。BSD许可证的条款授权随后的许可证更改。可以说,BSD与eupl兼容。

bsd+eupl=bsd(不可能)

这种情况与前面的操作完全相同,但您希望在BSD许可证下分发最终结果。这是不可能的,因为eupl的条款规定,在eupl下发布的软件的衍生作品也在eupl(copyleft)下发布。可以说,eupl与bsd不兼容。因此,在这种情况下,BSD和EUPL之间的兼容性不是相互的。

  1. 合并两部分软件,一部分在eupl下发布,另一部分在gpl v2下发布。

gplv2+eupl=eupl(不可能)

GPLv2规定最终结果,即“衍生作品”是根据GPLv2发布的。因此,在不违反GPL v2条款的情况下,此操作是不可能的。GPL v2与eupl不兼容。

这种情况似乎与前一种情况完全相同,因为eupl还规定衍生作品在eupl下发布。但是,eupl包含一个条款,该条款明确允许在eupl和gpl v2软件合并的情况下发布gpl v2下的衍生作品。

这是一个 快速兼容性 :eupl与gpl v2兼容。

这里再次指出,eupl和gpl v2之间的兼容性不是相互的。