logo

开源软件与协作文化

作者:OSCHINA2021.09.03 10:11浏览量:113

简介:开源软件是提供给其他开发者使用、编辑和构建的软件。

本文翻译自作者 Donna P. Suchy、Susan E. McGahan、Adriana Suringa Luedke 和 John Colligan 的文章 Open Source Software and the Collaborative Culture

开源软件是提供给其他开发者使用、编辑和构建的软件。这也被认为是开源软件的关键优势之一,因为它不仅邀请了具有不同兴趣和技能的各方进行密切的审查,而且还进行了广泛的合作。由于开源软件使用和开发的这种合作文化,开放源码项目往往会吸引开发者并由他们最终形成”社区”,以进一步开发一个软件。这些社区甚至可以分支成在某一软件上从事不同方向工作的小组。Linux 操作系统是这种模式的一个著名例子,该操作系统有多种形式和发行版。

软件如何成为开源

软件被认为是”开放源码”,这取决于开发者对源代码的发布和进一步编辑的条件。根据开放源码倡议,开源软件被定义为包含符合以下 10 条基本标准而发布的软件。这些标准都是为了保护未来开发者使用、编辑和进一步开发软件的能力。

  1. 自由重新分发:许可证不应限制任何一方对软件进行销售或分发。许可证不要求对此类销售收取使用费或其他费用。
  2. 源代码:程序必须包括源码,必须允许以源码和编译的形式分发。如果某种形式的产品不与源代码一起分发,则必须有一种广为人知的手段,以不超过合理的复制费用获得源代码,最好是通过互联网免费下载。源代码必须是程序员修改程序的首选形式。故意混淆的源代码是不允许的。不允许使用中间形式,如预处理或通过编译的形式输出。
  3. 衍生产品:许可证必须允许修改和派生产品,必须允许它们在与原软件许可证相同的条款下发布。
  4. 作者源代码的完整性:许可证可以限制源代码以修改的形式发布,但前提是许可证允许发布带有源代码的”补丁文件”,以便在构建时修改程序。许可证必须明确允许发布修改后的源代码所构建的软件。许可证可以要求派生产品带有与原软件不同的名称或版本号。
  5. 不歧视个人或群体:许可证不得歧视任何个人或群体。
  6. 不歧视使用的领域:许可证不得限制任何人在特定领域使用该程序。例如,它不得限制程序在商业中使用,或用于基因研究。
  7. 许可证的分发:程序所附带的权利必须适用于所有程序的再分发对象,而不需要这些人执行额外的许可证。
  8. 许可证不能只针对一个产品:程序所附带的权利不应取决于该程序是否是某一特定软件发行版的一部分。如果程序从该发行版中提取出来,并在程序许可证的条款内使用或发行,那么程序再发行的所有各方都应享有与原始软件发行版所授予的权利相同的权利。
  9. 许可证不得限制其他软件:许可证不得对与被许可软件一起分发的其他软件施加限制。例如,许可证不得坚持在同一媒介上发布的所有其他程序必须是开源软件。
  10. 许可证必须是技术中立的:许可证的任何条款都不能基于任何单独的技术或界面样式。

开源许可证

为了满足上面列出的 10 条标准,要求许可证中包含一些术语,这些术语支配着符合“开放源代码定义”的源代码的分发和进一步编辑。

开源许可证可分为两大类:”copyleft”许可证和”permissive”许可证。Copyleft 许可证和 permissive 许可证类似,都允许开发者修改、重新发布和复制代码。主要区别在于版权特权的方式。特别是,permissive 许可证允许开发人员包括自己的版权声明。但是,copyleft 许可证却没有。相反,copyleft 许可规则要求所有衍生作品(即,主要基于原始受版权保护的作品而创作的后续作品)均应受原始许可的约束。这意味着开发人员无法对原始软件提出专利或版权主张。

根据 2018 年 12 月发布的一项研究报告,2018 年使用的前三大最受欢迎的 permissive 许可证是 MIT 许可证、Apache 2.0 许可证和 BSD 许可证。GNU GPLv3 许可证被认为是最受欢迎的 copyleft 许可证,其目的是向希望出于任何目的使用它的任何人免费提供源代码。

所有前三名许可许可证都允许开发人员修改或重新校准源代码,从原始软件中产生衍生作品,甚至从二手产品的销售中获得商业利益。但是,他们之间仍然有一些重要的区别:

  • MIT:包括一个版权免责声明,声称版权人不对索赔或责任负责,还有一个免责声明,说软件是 “按原样”提供。
  • Apache 2.0:定义了“法律实体、衍生作品和贡献”;指定有关授予专利权的条款;并对再分配权建立了严格的规则。
  • BSD/3-Clause BSD:包含与 MIT 许可相同的版权和免责条款,以及非归因条款通过要求衍生产品的创建者在使用创建者的原始名称推广衍生产品之前获得明确许可,从而保护软件的原始创建者。

为什么要使用开源软件

使用开源软件有很多好处,包括效率、节省成本、提高安全性(在一定程度上)和可靠性。

  • 效率和成本节约

    由于开源软件可以免费使用、编辑和进一步开发,因此可以看作是软件开发人员的朋友。与使用内部软件或从头开始编写软件相反,能够使用已有的软件,从软件开发和业务的角度出发,可以提高效率。开放式体系结构允许在紧迫的期限内实现互操作性、协作和快速周转。此外,由于在特定软件上朝各个方向工作的协作者和小组的数量众多,因此经常获得许多免费提供的软件功能。这样一来,公司就无需花费大量资源来开发实际上可以免费获得的软件。参与开放源代码合作的公司可能还会发现更容易将技术部署到市场中。

  • 安全性和可靠性

    有大量用户和程序员追随的开放源码软件也可能更安全,因为有更多的人使用该软件,能够在出现问题时解决和调试问题。这与典型的专有软件形成鲜明对比,在这种情况下,根据公司所拥有的资源,软件的问题和调试可能会比较慢。

利用开源软件的风险是什么

虽然使用开源软件有很多好处,但也有相关的风险,包括网络安全风险和法律风险。

  • 网络安全风险

    如上所述,由于某一开放源码软件项目可能有大量的合作者,如果在代码中发现问题或漏洞,可以相当快地对问题进行调试。然而,对于那些迟迟不在依赖开源项目的受影响应用程序中加入修复程序的组织来说,它们可能会成为黑客的目标,在组织采取行动之前利用这些漏洞。

  • 法律风险

    回顾一下,开放源码软件是根据上述 10 项标准来定义的。这些标准主要体现在开放源码软件的使用和发布所附带的许可证中。违反该许可证会给用户、开发者和公司带来法律风险。此外,版权和共同所有权问题可能因国家而异,因此公司的法律顾问和软件项目经理必须了解正在进行的软件开发,开发者是谁,以及特定软件上附加了哪些开源许可证条款。

因此,对开源软件所使用的相关许可进行适当的管理,对于公司内部的项目经理及其法律顾问来说是非常关键的。

我们如何降低风险

有效部署使用开源软件的产品与有效管理开源软件的使用密不可分。确保与某一特定软件相关的许可条款得到审查并被认真遵守是至关重要的。如果许可证条款不适合预期用途和/或没有得到遵守,某些开放源码许可证可能会使购买方承担额外的费用,甚至丢失以前的专有软件源代码。例如,如果许可证是一个病毒性的许可证(例如,许可证要求回赠或交付与之打包的某些源代码),那么在专有产品中使用该开放源码软件可能会导致专有代码也被公开。这种意外的结果可能会极大地影响该产品的价值和专有性。此外,侵权始终是一个问题。开源软件不花钱并不意味着它没有潜在的侵权行为。

因此,必须了解不同类型的开源许可证,尤其要权衡它们可能构成的风险,以判断其是否适合您的客户或公司的目的。理想情况下,这需要工程与法律之间的伙伴关系。法律需要对工程和开发团队进行与某些开源软件相关的风险教育,而工程和开发团队需要对将使用开源软件开发的产品和最终用户应用程序进行法律教育。

建立一个开源审查小组

内部律师管理开源软件面临的最严峻挑战之一是,确保遵守与包含软件的产品相关的所有许可。要确保未以与许可目的相抵触的方式使用该代码,并且确保该代码不会与专有代码进行病毒式附加,这绝非易事。在一个正确的开源社区中选择合适的开源项目来补充公司的开源软件是至关重要的。为了降低成本,加快创新速度,一些公司甚至采取 “开源优先”的方式进行虚拟化,在将其交给开源社区之前,先参与各种开源小组。

为了管理所有这些工作,公司通常会成立由不同身份的同事组成的审查小组,这些同事可能会在公司内部看到或接触到含有开源软件的产品。对于大多数公司来说,关于软件的”制作或购买”的决定是一个具有法律和网络安全风险的决定,因此必须向决策者仔细解释。因此,公司的开源审查团队至少应该由法律和工程/软件开发的代表组成,在某些情况下还应该由 IT 或其他公司职能部门的代表组成。虽然因公司而异,但与使用开源软件有关的较大风险往往是与公司产品的开发和销售有关,但在公司内部 IT 系统或公司内部软件功能方面也有可能出现开源问题。所以,公司的开源审查团队应该有覆盖整个业务的代表。

明智的做法是,还应该包括为工程和业务团队提供建议的嵌入式软件专家,再加上健全的流程和程序。让拥有软件技能和知识的团队参与进来是至关重要的,同时还要有对软件和开源许可有深刻理解的律师。继续参与可能涉及开源软件的项目和开发的早期阶段也很重要。

应谨慎使用开源软件

如本文所示,使用开放源码软件确实有许多好处。但对于普通公司或软件所有者来说,使用开源软件也会带来风险,因为他们有兴趣同时保持竞争优势,这就需要利用软件的专有性质。

对于支持开发、部署或购买包括开源软件在内的产品的法律顾问来说,关键的启示包括:

  • 保持了解。与业务和开发团队以及其他认知业务或客户发展方向的人保持联系,以确保你了解业务或客户愿意承担的风险容忍度。如上所述,是否在产品中加入开源软件以及在多大程度上加入开源软件是由企业决定的。法律顾问的职责是,至少要向企业告知与某一商业决策相关的法律和网络安全风险。
  • 建立开源的审查团队。为了有效地了解和控制企业开发或购买的开源软件的使用情况,建立一个由法律、技术、财务和业务部门的同事组成的审查小组。该团队将根据企业的风险承受能力和意图,逐一审查开源软件及其相关许可证的使用情况。
  • 对客户和业务进行培训。定期进行培训,以帮助确保你的企业和客户了解使用开源软件的相关风险。至少,让开发人员知道他们何时需要向法律(和更大的开源审查团队)提出问题或披露开源软件的使用情况,将使审查更有效率,并允许您有机会标记风险并影响决策,以尽早减轻风险。
  • 赔偿:要求使用开放源码软件的供应商对客户进行赔偿。如果客户被指控不遵守任何开放源码许可条款,则要求供应商针对此类指控对客户进行赔偿、辩护并使其免受伤害。这样做的方式应该是保护客户或其第三方供应商的任何专有软件不被公开披露或任何其他开放源码许可不合规指控。

相关文章推荐

发表评论