关于开源软件许可证和IP,每个工程师都应该知道什么

0
关于开源软件许可证和IP,每个工程师都应该知道什么

开源软件的支持者吹捧它的好处,比如众包开发的同行评审性质如何导致可靠性,透明的代码使开发人员能够发现和纠正安全缺陷。因为许多公司选择使用开源软件,成为开源项目专家的工程师可能会发现更容易将他们的技能应用到不同的工作环境中。

除了这些优势之外,从事开源软件开发的工程师还欣赏他们在围绕每个项目形成的社区中发现的友谊。

开源软件的法律层面对许多工程师来说可能是一个谜。然而,法律权利和义务(通常在各种开放源码许可证之一中定义)定义了开放源码项目的授权和未经授权的使用。此外,许可证可能对某些授权用途施加义务。正如下面所讨论的,其中一些义务可能与公司的业务模式不兼容。

为了更好地了解开源的法律来龙去脉,我们采访了优步法律团队的三名律师,马特·奎帕斯拉克什迈克尔,萨曼莎许他们负责监管我们技术堆栈的这一领域。负责为将内部开发的软件发布给公众铺平道路,并审查哪些开源软件可以与我们自己的解决方案集成,该团队独特的工程背景在引导这个过程时促进了协作和建设性的体验。

马特是优步的高级法律顾问,拥有博士学位。在工程;拉凯什也是优步的高级律师,获得了工程学学士学位;Uber的法律顾问山姆拥有工程学学士学位。这三位律师都专注于知识产权(IP)和专利法。

我们询问了Matt、Rakesh和Sam,关于IP、专利和开源之间的关系,每个工程师都需要知道些什么:

知识产权及其如何应用于软件

在一般意义上,知识产权(IP)是指人类思维的无形创造,包括发明(如过程或方法)、文学作品、音乐作品、设计、符号和短语。知识产权可以通过专利、商标、版权和商业秘密受到美国法律的保护。

就软件而言,个人或公司都可以版权它开发的书面代码,因此没有其他任何人或实体可以复制该书面代码,除非与原始创建者达成某种协议。软件的创建者也可以专利软件背后的潜在想法或发明。例如,如果代码是完成某些任务的软件应用程序的一部分,软件的创建者可以为软件执行其任务的方式、软件执行的过程或操作申请专利。

许多公司以商业秘密的形式保护知识产权。商业秘密可以被宽泛地定义为任何因其保密而赋予其持有者价值的秘密信息。因此,商业秘密可以是软件、过程或提供竞争优势的技术诀窍,公司将其保密和安全。商业秘密享有一定的法律保护,如不正当获取或分享其他公司商业秘密的人应承担法律责任。然而,一个拥有商业秘密的公司被要求采取具体的措施来保护它们并保持其机密性。这意味着,如果一个公司将其软件开源,该软件将失去它可能拥有的任何商业秘密保护。

开放源码软件许可

开源软件许可是软件版权所有者允许其他人使用其代码的现成手段。如果没有许可,任何人使用代码都可能被指控侵犯版权所有者的知识产权。开源软件通常仍然受到版权的保护,但是所有者分配给代码的许可证描述了其他人如何使用它。

有不同类型的开放源码软件许可,它们允许人们使用代码的方式各不相同。的麻省理工学院的许可例如,允许任何人复制、修改、分发甚至销售使用代码的软件,唯一的警告是,任何分发版都必须包含带有作者姓名的许可副本。然而,MIT许可证并没有明确授予使用由开源软件执行的方法或过程的专利的权利,尽管有一派认为许可证意味着专利使用。记住,专利保护的是一种方法或过程——应用程序的作用是什么。的Apache许可证,版本2.0(“Apache 2.0”)特别允许使用版权和专利。在此许可证下使用开源软件的公司可以稍感安慰,因为他们的使用受到了保护。

开源软件许可的一类,简称版权该法案规定,任何衍生作品,即任何使用原软件的软件,也必须使用原许可。的GNU通用公共许可证Mozilla公共许可证归入copyleft类别。公司可能不太倾向于使用copyleft许可下发布的软件,因为它将有义务开放源代码生成的软件,即使它包含专有代码。

申请哪种许可完全由版权所有者决定。

开源软件不是免费的

虽然开放源代码可以免费提供,但引入开放源代码软件仍然有相关的成本。首先,依赖第三方软件有工程成本,比如与实现和维护软件相关的人工。工程师们非常了解这种成本。然而,监管开放源码软件的内部使用以确保遵守许可证也存在类似的成本。当开源软件的用户违反许可证时,该用户就会成为软件版权的侵权者,结果可能是严重的。例如,用户可能被迫支付损害赔偿金,删除侵权软件,甚至开放包含该开源软件的产品的所有源代码。

使情况更加复杂的是,开放源码软件可能被内部导入,用于符合其开放源码许可证的初始使用,但软件的使用可能随着时间的推移而变化,也许工程师不知道许可证所施加的限制或义务。公司的律师可以使用软件来监视内部使用开放源码的情况,这样使用开放源码软件构建的软件就会遵守相应的开放源码许可证。

此外,就像开放源码项目中的安全漏洞会给使用该项目的任何产品带来风险一样,可能会发现一个开放源码项目有一个IP漏洞(例如,潜在的专利侵权),这会给任何包含开放源码的产品带来法律风险。这是因为大多数开源许可都有属性要求。想要利用已发现的开源项目漏洞的人只需要查看产品的属性列表,以确定他们是否可以利用该漏洞攻击产品。相比之下,如果使用专有软件而不是开源软件,那么攻击者可能很难确定产品是脆弱的。

律师在开放源码软件许可和使用中的作用

在企业环境中,工程师倾向于在内部项目中使用开源软件,或者希望将他们编写的代码作为开源软件提供。在任何一种情况下,公司的法律部门都可以提供非常重要的帮助。在Uber,我们试图让我们的律师尽可能早地参与任何开源软件项目。

当使用外部代码时,律师可以确定该代码的许可将如何影响公司内部的专有代码。例如,如果在一个公司的分布式软件产品中使用GNU通用公共许可证(GPL)许可的软件,这可能意味着整个产品的源代码必须在GPL许可下提供。这样的需求可能与用户的业务模型不兼容。然而,如果使用不兼容的许可证下提供的源代码有显著的优势,在某些情况下,律师可能能够帮助促进与版权所有者的讨论,将许可证更改为兼容的许可证。我们在许多案例中发现,开源项目的所有者有时没有意识到所选许可可能对项目的广泛采用产生的负面影响。

至于把公司内部编写的代码交给开源社区,最初可以归结为一个商业决策:公司的行政领导是否认为提供对某些软件项目的访问符合他们的利益。律师可以帮助进行成本效益分析。例如,知识产权律师可以帮助评估开源某个特定项目对公司商业秘密或专利组合的影响。

此外,一旦决定开源一个项目,律师可以促进从专有软件到开源软件的过渡。在一个重要的角色中,律师可以考虑公司业务的性质、软件的功能以及项目依赖项的任何许可证的兼容性,确定使用的最佳开放源码软件许可证。

Uber的工程师很欣赏开源团队的律师拥有计算机或软件工程背景。这样的律师可以很好地理解作为开源发布的软件可能如何被使用,在特定软件的上下文中不同许可证的实际影响,以及它可能对公司的声誉产生什么样的影响。

从法律角度看开源过程

一旦一个公司决定开放它所开发的软件,就有许多问题需要解决:

  • 我们应该使用哪种开源许可证?如上所述,许可证有不同的限制,所以选择最符合公司利益的许可证是很重要的。
  • 软件中是否有不应该公开的内容?这些东西可能是给公司带来竞争优势的内部算法或系统,也可能是应该保持隐私的专有或敏感数据。为了解决这个问题,公司可以修改开源软件,这样就不会泄露任何敏感信息。
  • 软件包含哪些依赖项,这些依赖项是否会捆绑在一个发行版中?如果从属软件使用与主项目许可证不兼容的不同许可证,它可能会给下载并使用项目的最终用户带来冲突或造成困难的情况。因此,为了兼容性的原因,必须检查依赖项及其许可,并在适当的地方替换有问题的依赖项。
  • 项目的名称是否与商标或另一个开源项目的名称冲突?商标通常是用来区分商品或服务来源的名称、短语或符号,因此避免项目名称与其他公司的商标发生冲突是很重要的。例如,在软件的上下文中使用“adobe”、“amazon”或“oracle”这样的名称可能会有问题,即使它们是在使用它们的公司之前就已经为人熟知的词汇,因为这样做可能会在人们的头脑中造成混淆,不知道这些软件是否由这些公司提供。在开源社区中,许多软件项目彼此关联,因此很容易使用类似的名称。但是,这些名称不应该如此相似,以免引起项目之间的混淆。

从法律的角度来看,使用开源软件

在考虑是否使用开源软件项目时,律师可以审查发布该项目的许可证,以确保它不会对公司的业务或现有软件构成风险。这种分析必须包括查看软件的依赖关系,以及他们使用的许可证,这也将影响公司。

除了考虑许可之外,要回答的另一个重要问题是如何使用开源软件。它是作为应用程序的一部分分发的组件吗?它是工程师用来构建或验证代码的工具吗?它是一个后端系统吗?每一种类型的使用可能涉及到对其将如何影响公司业务的不同考虑。例如,与内部使用开源工具相比,使用开源软件发布应用程序承担不同的责任和风险。

关于使用开源软件的更广泛的研究雷竞技是骗人的出现在专利领域。律师可以研究哪些公司正在使用这些雷竞技是骗人的代码以及他们申请了哪些专利,以确保他们所代表的公司没有以侵犯专利的方式使用这些代码。

Uber的开源软件许可

Uber最近已经将出站项目的默认开源许可证从MIT许可证改为Apache 2.0许可证。MIT和Apache 2.0许可证对于以广泛采用为目标的项目来说都是极好的选择,因为许可证是允许的。Apache 2.0明确要求专利使用权的事实可能使它对企业环境更具吸引力。由我们的工程师发起并由我们的法律团队促成的转换决定,部分是因为我们使用的许多开源软件项目都是在Apache 2.0下授权的。该许可的标准化有助于创建社区规范的一致性,并可能减少Uber使用的不同代码库之间的差异。

Uber的律师很重视开源社区内的伙伴关系和合作。当一名Uber工程师想要整合开源软件时,我们的律师可能会联系软件所有者,探究软件所有者是否对Uber使用该软件感兴趣。例如,如果像Uber这样的公司使用和支持该软件,它可能会得到更多的关注和更多的贡献。如果软件所有者希望Uber使用该软件,律师和软件所有者可以一起寻找一个双方都可以接受的开源许可证。

我们非常感谢Rakesh Michael、Samantha Hsu和Matt Kuipers,他们在上面的照片中提供了本文中提供的所有信息。此外,我们还要感谢他们和他们在优步的队友们给予我们的帮助;Jay Choi, Rafa Gutiérrez, Stephen Garcia, Bill Harmon, Tiffany Bui勒图诺,克里斯·斯道姆,以及整个IP团队;在开源软件和入职开源软件方面给予我们的工程师。

Uber工程师活跃在开源社区,贡献了许多项目。

如果你想了解Uber的开源项目并为其做出贡献,请查看我们的Github页面.我们知识渊博的律师帮助我们将这些项目带到社区,确保整个软件和任何依赖的授权质量。如果您对构建软件并与我们的开源工作一起工作感兴趣,请访问优步职业页面

订阅我们的通讯以跟上优步工程的最新创新。

评论