什么是开源?

date
May 6, 2022
slug
10
status
Published
tags
Learn
summary
开源知识科普
type
Post
Book
“开源”这个词在近些年来愈来愈火,也越来越多优秀的软件贴上“开源”标签。在我看来,「开源」是一个时髦且有情怀的词汇,伴随着理想主义色彩。「开源」一词对应英文Open Source,最初源于「开源软件」,也就是开放源代码的软件。除了「开源软件」,开源的形式还有开源硬件(Open Source Hardware)、开放设计(Open Design)、开放文档(Open Document)。
那么什么是开源呢?是不是公开源代码就是开源?开源软件是免费的,所以我能不受限制地随意使用?
实际上开源除了公开源代码,还需要符合某些条件才算是开源。按照OSI组织(Open Source Initiative Association)对开源的定义(The Open Source Definition):
  1. 允许自由再发布软件
  1. 程序必须包含所有源代码
  1. 可以修改和派生新的软件
  1. 发布时保持软件源代码的完整性
  1. 不得歧视任何个人和团体
  1. 不得歧视任何应用领域
  1. 许可证的发布具有延续性
  1. 许可证不能针对某一个产品
  1. 许可证不可限制其他软件
  1. 许可证必须是技术中立的
通过了解这些条件约束,可以看出开源软件是一种技术和立场中立的,同时使用许可证约束开放源代码的软件。开源软件能够走到今天的地步,很大一部分的原因是有这么一套遵从开源精神的规则体系,才能够健康发展。

什么是开源许可证?

首先需要了解的是开源软件源代码的著作权既没有被放弃也没有过期,其修改和发行仍然受到著作权法或者开源软件许可证的制约。
我们接触到的开源软件一般都有对应的开源许可证(Open Source License)对软件的使用、复制、修改和再发布等进行限制。许可证即授权条款,开源许可证就是保证开源软件这些限制的法律文件,目的在于规范受著作权保护的软件的使用或者分发行为。开源许可证是开源软件生态系统的基础,可以促进软件的协同开发

常见的开源许可证

开源许可证主要分为宽松许可协议(Permissive free software licence)和严格许可协议(copyleft license)。
宽松许可协议顾名思义即对软件的使用、修改和传播等方式的约束比较自由。而且采用这种协议的软件的衍生软件可以不采用与原作品完全相同的相关限制条件,使得为原作品的自由使用、修改和传播提供了更大的空间。
而严格许可协议规定了软件不可以闭源,后续的衍生子软件也必须遵循该条款。
两者最大的差别在于:在软件被修改并再发行时,严格许可协议强制要求公开源代码(衍生软件需要开源),而宽松许可协议不要求公开源代码(衍生软件可以变为专有软件)。
最后用一个图简单了解一下常见开源许可证之间的差别:
notion image

© LewisWong 2021 - 2025