【开源软件许可】开源软件许可:为什么它很重要
视频号
微信公众号
知识星球
我们都使用过开源软件,但授权比你想象的更重要。
开源软件对我们现代互联网的运行至关重要。它对我们所有的现代技术都至关重要。开源工具构成了简单实用的构建块,有助于为从电视到ChatGPT的一切提供动力,开源运动在使软件开发变得可访问方面的重要性几乎不可能夸大。
然而,对开源软件价值的理解却很少。公司和企业往往会忽视他们的许可证要求,甚至许多开发商都不知道他们经营的许可证。无论你是开发者、技术爱好者、商业领袖,还是仅仅是感兴趣的一方,尊重开源开发者的努力并赞扬他们的贡献都很重要。作为软件的开发人员或用户,如果使用许可证不当,您也可能面临诉讼。
什么是开源?
不是另一个流行语
开源有不同的定义,但它们通常都触及了相同的关键点。要成为开源软件,必须免费提供软件,并允许公众自由检查、修改和分发代码。这包括可能由开源软件产生的任何衍生(即增强)或聚合(即组合多个软件位)工作的销售或商业化。例如,如果我使用一个用于精确计时的开源库为Windows 11编写一个很棒的时钟应用程序,我可以免费向用户收取我的新时钟应用程序的费用,而无需向库的作者报销。
我们可以看看开源软件的例子来展示它的广泛性。Apache Kafka是由Apache基金会开发和开源的事件流媒体平台。它自2011年以来一直是开源的。Kafka现在被《财富》100强中80%以上的公司使用,出现在从优步等叫车应用程序到工业制造业的各个领域。这是一项重要技术,是一系列行业中许多大公司的基础。
谁决定什么是开源?
重要的是要清楚,开源并没有精确的定义。开源最好被认为是构建和共享软件的一组价值观。不同的组织对这些价值观有不同的标准。Red Hat支持的opensource.com描述了开源方式,开源倡议发布了其考虑开源许可证的定义。
开源是一个术语,最初指的是开源软件(OSS)。开源软件是设计为可公开访问的代码——任何人都可以查看、修改和分发他们认为合适的代码。
开源只适用于软件吗?
开源并不局限于软件,尽管它确实是从软件开始的,它指的是人们可以自由修改、检查和增强的任何东西。例如,在线免费发布的3D打印机模型可以被视为开源。
什么是软件许可证?
不是你开车所需要的
软件许可证是与软件一起分发的法律文件,它明确规定了它可以用于和不能用于什么目的。这可能包括开发商(或其他团体)的费用或报销,以及使用条件。您可能已经看到标记为EULA的软件许可证,即最终用户软件许可证。此许可证概述了您作为最终用户使用软件时必须遵守的使用条件。
软件分为两类之一;开源和封闭源代码,这取决于原始源代码是否发布供任何人检查。大多数闭源软件发布时都带有为该软件设计的特定许可证,该许可证通常是唯一的,称为专有许可证。
FOSS
自由和开放源码软件(FOSS)通常附带由致力于开源理想的社区或组织设计的几个标准许可证之一,如GNU项目或Red Hat。其中一些甚至是美国国家航空航天局写的。开源许可证很重要,因为它们使开发人员很容易理解他们发布软件的限制,而不必雇佣法律团队(或他们自己的专业知识)来编写具有法律约束力的许可证。不同的许可证允许不同的用途,并对软件施加不同的限制。我们指定免费和开源是因为并非所有的开源软件都必须是免费的。
软件许可证类型
在编写软件时了解您的权利
没有必要知道每个许可证的具体情况。几乎所有的开源许可证都不提供任何保证(即不保证软件按预期工作),并包括保护开发者免于承担责任。如果使用其软件构建的产品出现错误并造成损害,这对于保护开发人员免受诉讼非常重要。例如,使用自由和开放源码软件库的汽车制造商将无法起诉自由和开放开源软件的开发者,如果该软件出现故障并导致他们的一些汽车相撞。
我们通常可以将软件许可证分类为:公共领域、许可、版权或专有。有时会提到第五种类型,LGPL或小GPL,但除特定应用外,这一点不太相关。公共域许可证是任何完全不受限制的代码,而专有许可证是限制任何复制、修改或未经授权的分发的许可证。出于自由和开放源码软件的目的,我们将专注于许可和版权许可。
宽容的许可证
超越了基础知识,许可证变得更加具体。一些许可证禁止在其他开源产品中使用自由和开放源码软件,而另一些许可证几乎完全不受限制。允许在很少或没有条件的情况下自由复制和修改软件的许可证被称为许可证。Apache和MIT许可证都是许可证。它们非常短(整个MIT许可证比本文更短),除了保护开发者免受诉讼之外,基本上没有任何限制。
Copyleft?
如果许可证需要相同软件的修改版本才能使用相同或类似的许可证,则称为copyleft。回到前面的类比,如果我使用GPL许可的免费计时库编写了一个Windows时钟应用程序,我也将被要求在GPL许可下发布我的时钟应用程序。copyleft背后的想法是,免费和开源软件将产生同一软件的改进版本和新版本,而不是以后作为封闭源代码专有版本的跳板。
copyleft授权的一个很好的例子是Bash(许多Linux发行版上的默认终端提示),它是使用GNU GPL许可证分发的。这禁止包括Bash在内的软件在任何闭源产品中进行商业使用。使用Bash的产品可以自由赚钱,但该产品也必须是开源的。因此,任何包含Bash的Linux发行版也需要根据GPL获得许可,因此也是开源的。这对自由和开放源码软件的开发产生了传递效应。Copyleft比许可证更具限制性,但与专有许可证不同,它仍然可以是开源的。
copyleft(非常简单地说)是一条规则,即在重新分发程序时,不能添加限制来剥夺其他人的核心自由。这一规则并不与核心自由相冲突;相反,它保护了他们。
Copyleft争议
受版权保护的许可证通常是有争议的,因为它们与专有许可证不兼容。许可证的兼容性是指如何组合许可证。如果一个产品使用任何GPL许可的软件,无论软件有多少,它也必须根据GPL获得许可。即使是对任何GPL代码的最轻微使用,也无法发布封闭源代码软件,这一限制已被证明是有争议的。2001年,时任微软首席执行官的史蒂夫·鲍尔默称Linux是癌症,因为它的GPL许可证。例如,在一个产品中使用GPL软件是不可能的,然后在一个非常宽松的麻省理工学院许可证下发布。
Linux是一个癌症,从知识产权的意义上讲,它将自己与它所接触的一切联系在一起
我应该使用哪种许可证?
有一些很好的资源可以为你做出这个决定。我最喜欢的一个是choosealicense.com,它使理解不同的许可证变得简单,并引导您完成基于问题的选择过程。他们还拥有非软件许可证的资源。如果你想写专有软件或从代码中赚钱,那么也有一些样板专有许可证可用(假设你的作品将公开发布)。如果您希望免费发布软件,MIT和Apache许可证是常见的选择。
违反许可证
并不是每个人都尊重自由和开放源码软件的理想
虽然许可证具有法律约束力,但这种约束力与强制执行一样好。从定义上讲,开源开发者是免费向世界发布他们的作品的,因此通常没有资金用于昂贵的法律诉讼或执行他们的许可证。通常,有开源承诺的组织会起诉违反许可证的人,或者社区会点名羞辱他们。
从特斯拉到TikTok,许多知名公司都公开违反了许可证。TikTok最近被指控在其直播间软件中包含开源流媒体软件OBS的代码,但没有发布源代码,这明显违反了OBS允许的GPL许可证。2018年,在违反GPL规定后,软件自由保护学院向特斯拉施压,要求其披露部分自动驾驶源代码。
像GNU项目或GPL-violations.org这样的组织试图监督GPL违规行为,追查最引人注目的违规者。通常,公司可以通过删除违规软件或开源足够多的包含许可软件的代码来满足其要求,来应对社区的强烈反对。
如何检查许可证?
通常很容易找到一些软件发布的许可证。约定规定,软件的许可证包含在项目存储库根目录中名为license的文件中(没有文件扩展名)。像GitHub这样的工具可以扫描此许可证,识别其内容,并在其GUI中告诉您许可证,包括在存储库信息中。下面的截图取自特斯拉的Github。
一个重要的基石
开源软件和保护它的许可证是我们现代世界的一个不为人知但必不可少的基石。开源开发者通常会构建更复杂的产品所需的简单基础工具,并免费发布。Copyleft许可证有助于延续这一循环,鼓励更多公司为开源生态系统做出贡献。自由和开源软件无处不在,几乎渗透到每个技术运作的市场的每一个角落。它的成功故事几乎无穷无尽,了解促进它的许可生态系统至关重要。
- 21 次浏览