简介:开源软件是提供给其他开发者使用、编辑和构建的软件。
本文翻译自作者 Donna P. Suchy、Susan E. McGahan、Adriana Suringa Luedke 和 John Colligan 的文章 Open Source Software and the Collaborative Culture
开源软件是提供给其他开发者使用、编辑和构建的软件。这也被认为是开源软件的关键优势之一,因为它不仅邀请了具有不同兴趣和技能的各方进行密切的审查,而且还进行了广泛的合作。由于开源软件使用和开发的这种合作文化,开放源码项目往往会吸引开发者并由他们最终形成”社区”,以进一步开发一个软件。这些社区甚至可以分支成在某一软件上从事不同方向工作的小组。Linux 操作系统是这种模式的一个著名例子,该操作系统有多种形式和发行版。
软件被认为是”开放源码”,这取决于开发者对源代码的发布和进一步编辑的条件。根据开放源码倡议,开源软件被定义为包含符合以下 10 条基本标准而发布的软件。这些标准都是为了保护未来开发者使用、编辑和进一步开发软件的能力。
为了满足上面列出的 10 条标准,要求许可证中包含一些术语,这些术语支配着符合“开放源代码定义”的源代码的分发和进一步编辑。
开源许可证可分为两大类:”copyleft”许可证和”permissive”许可证。Copyleft 许可证和 permissive 许可证类似,都允许开发者修改、重新发布和复制代码。主要区别在于版权特权的方式。特别是,permissive 许可证允许开发人员包括自己的版权声明。但是,copyleft 许可证却没有。相反,copyleft 许可规则要求所有衍生作品(即,主要基于原始受版权保护的作品而创作的后续作品)均应受原始许可的约束。这意味着开发人员无法对原始软件提出专利或版权主张。
根据 2018 年 12 月发布的一项研究报告,2018 年使用的前三大最受欢迎的 permissive 许可证是 MIT 许可证、Apache 2.0 许可证和 BSD 许可证。GNU GPLv3 许可证被认为是最受欢迎的 copyleft 许可证,其目的是向希望出于任何目的使用它的任何人免费提供源代码。
所有前三名许可许可证都允许开发人员修改或重新校准源代码,从原始软件中产生衍生作品,甚至从二手产品的销售中获得商业利益。但是,他们之间仍然有一些重要的区别:
使用开源软件有很多好处,包括效率、节省成本、提高安全性(在一定程度上)和可靠性。
效率和成本节约
由于开源软件可以免费使用、编辑和进一步开发,因此可以看作是软件开发人员的朋友。与使用内部软件或从头开始编写软件相反,能够使用已有的软件,从软件开发和业务的角度出发,可以提高效率。开放式体系结构允许在紧迫的期限内实现互操作性、协作和快速周转。此外,由于在特定软件上朝各个方向工作的协作者和小组的数量众多,因此经常获得许多免费提供的软件功能。这样一来,公司就无需花费大量资源来开发实际上可以免费获得的软件。参与开放源代码合作的公司可能还会发现更容易将技术部署到市场中。
安全性和可靠性
有大量用户和程序员追随的开放源码软件也可能更安全,因为有更多的人使用该软件,能够在出现问题时解决和调试问题。这与典型的专有软件形成鲜明对比,在这种情况下,根据公司所拥有的资源,软件的问题和调试可能会比较慢。
虽然使用开源软件有很多好处,但也有相关的风险,包括网络安全风险和法律风险。
网络安全风险
如上所述,由于某一开放源码软件项目可能有大量的合作者,如果在代码中发现问题或漏洞,可以相当快地对问题进行调试。然而,对于那些迟迟不在依赖开源项目的受影响应用程序中加入修复程序的组织来说,它们可能会成为黑客的目标,在组织采取行动之前利用这些漏洞。
法律风险
回顾一下,开放源码软件是根据上述 10 项标准来定义的。这些标准主要体现在开放源码软件的使用和发布所附带的许可证中。违反该许可证会给用户、开发者和公司带来法律风险。此外,版权和共同所有权问题可能因国家而异,因此公司的法律顾问和软件项目经理必须了解正在进行的软件开发,开发者是谁,以及特定软件上附加了哪些开源许可证条款。
因此,对开源软件所使用的相关许可进行适当的管理,对于公司内部的项目经理及其法律顾问来说是非常关键的。
有效部署使用开源软件的产品与有效管理开源软件的使用密不可分。确保与某一特定软件相关的许可条款得到审查并被认真遵守是至关重要的。如果许可证条款不适合预期用途和/或没有得到遵守,某些开放源码许可证可能会使购买方承担额外的费用,甚至丢失以前的专有软件源代码。例如,如果许可证是一个病毒性的许可证(例如,许可证要求回赠或交付与之打包的某些源代码),那么在专有产品中使用该开放源码软件可能会导致专有代码也被公开。这种意外的结果可能会极大地影响该产品的价值和专有性。此外,侵权始终是一个问题。开源软件不花钱并不意味着它没有潜在的侵权行为。
因此,必须了解不同类型的开源许可证,尤其要权衡它们可能构成的风险,以判断其是否适合您的客户或公司的目的。理想情况下,这需要工程与法律之间的伙伴关系。法律需要对工程和开发团队进行与某些开源软件相关的风险教育,而工程和开发团队需要对将使用开源软件开发的产品和最终用户应用程序进行法律教育。
内部律师管理开源软件面临的最严峻挑战之一是,确保遵守与包含软件的产品相关的所有许可。要确保未以与许可目的相抵触的方式使用该代码,并且确保该代码不会与专有代码进行病毒式附加,这绝非易事。在一个正确的开源社区中选择合适的开源项目来补充公司的开源软件是至关重要的。为了降低成本,加快创新速度,一些公司甚至采取 “开源优先”的方式进行虚拟化,在将其交给开源社区之前,先参与各种开源小组。
为了管理所有这些工作,公司通常会成立由不同身份的同事组成的审查小组,这些同事可能会在公司内部看到或接触到含有开源软件的产品。对于大多数公司来说,关于软件的”制作或购买”的决定是一个具有法律和网络安全风险的决定,因此必须向决策者仔细解释。因此,公司的开源审查团队至少应该由法律和工程/软件开发的代表组成,在某些情况下还应该由 IT 或其他公司职能部门的代表组成。虽然因公司而异,但与使用开源软件有关的较大风险往往是与公司产品的开发和销售有关,但在公司内部 IT 系统或公司内部软件功能方面也有可能出现开源问题。所以,公司的开源审查团队应该有覆盖整个业务的代表。
明智的做法是,还应该包括为工程和业务团队提供建议的嵌入式软件专家,再加上健全的流程和程序。让拥有软件技能和知识的团队参与进来是至关重要的,同时还要有对软件和开源许可有深刻理解的律师。继续参与可能涉及开源软件的项目和开发的早期阶段也很重要。
如本文所示,使用开放源码软件确实有许多好处。但对于普通公司或软件所有者来说,使用开源软件也会带来风险,因为他们有兴趣同时保持竞争优势,这就需要利用软件的专有性质。
对于支持开发、部署或购买包括开源软件在内的产品的法律顾问来说,关键的启示包括: