第 3 小节:如何判断一个项目是否是开源的
本篇内容将会引导大家分辨一个项目的状态,是开源,闭源,还是半开源。
前言
项目分为开源项目、闭源项目,以及未被明确定义的半开源项目。那么,什么项目可以称之为开源项目?什么项目是闭源项目呢?它们之间有什么区别?下面让我们一起来了解一下。
什么是闭源 (Closed Source)
这太好解释了:项目的源代码不公开发布,就叫闭源。闭源可以保证源代码的安全性和隐私性,想要获得此类代码一般需要加入闭源项目所属组织或签署保密协议,以确保代码不会泄露。闭源项目一般存在于商业软件领域,可以很好地保护公司的商业机密。此外,个人的私密项目也属于闭源项目,你可以在创建项目时,选择对应的隐私访问级别——Private。
闭源在保护机密和隐私方面发挥了重要作用,但由于参与成员的限制性,不能像开源项目那样集思广益,因此,项目的迭代速度一般会慢于开源项目。此外,也正是因为参与群体范围较小,闭源项目的维护管理、标准化难度会小于开源项目。
什么是开源 (Open Source)
开源软件是开源的主要表现形式。在第 1 小节中,相信你已经对开源有所了解,下面我们来回顾一下开源的定义:开源软件是一种 技术和立场中立的使用许可证约束的开放源代码 的软件。
对于开源软件来说,技术和立场中立要求开源软件对任何组织和个体要一视同仁,保持公平公正。而使用许可证约束一方面是保证开源者的各项权利
当然,关于开源的详细定义还有很多,其中最有影响力的是 Debian 自由软件指导方针 (DFSG) 和 Open Source Initiative 制定的 Open Source Definition。其中,后者是前者的衍生版本。
更多详细内容,请参考 第 1 小节:什么是开源 。
什么是半开源
“半开源”一词从来没有被正式定义过,甚至,“半开源”这个词是不是被生造出来的也不太清楚。下面列举了半开源软件当前较为常见的几种定义(排序不分先后)。
- 半开源软件是指 开放了系统核心代码但不开放非核心代码的软件。比如:有人认为 Android 是半开源系统系统,因为其系统核心开源,但硬件驱动、Google Service、各厂家自带应用不开源。
- 半开源软件是指 开放源代码但并没有开放其他功能代码的软件。软件虽然开放了源代码,但由于种种原因,可能在实现上做了限制,导致使用者并不能完整地使用软件的所有功能。
- 半开源软件是指 开放源代码但没有使用开源许可证的软件。因为半开源的概念和英文中“Source Available”的概念基本相同。
虽然没有权威的定义,但从上面几种定义分析,我们可以总结出半开源的特点:开放了源代码,但并没有使用开源许可或没有满足开源使用者一定程度上的需求。从本质上来讲,半开源与开源之间没有明确的界限,两者都开源了源代码,只是由于一些原因,导致开源使用者认为前者并非完全开源的。
其他概念
自由软件 (Free/Libre Software)
自由软件和开源的区别
自由软件一般指的是,它包括满足开源条件的软件,以及不满足开源条件的软件。但是,这两个说法之间存在些许的哲学观点差异。关于自由软件,其中涉及到的辩论和观点很多,如果想要了解自由软件运动支持者对“开源软件”说法的质疑和批评,可以参考阅读 《为什么开源错失了自由软件的重点》。
小结
本篇文章向大家讲解了闭源、开源、半开源的概念,客观分析了它们各自的特点,当你想要保护隐私、少数人参与维护的项目时,闭源更加适合你;当你想要分享自己的项目、吸引更多人维护时,请果断选择开源。关于半开源,虽然大家可能各说纷纭,但它与开源并没有明确的分界线,对于一些观点的解读需要大家理性看待。
分享需要开放的心态,还望大家求同存异,在开源世界里肆意挥毫,留下浓墨重彩的一笔!
案例说明
开源案例的开源许可说明
- 堡塔开源许可协议
- Outrun-Labs-EULA-v1.1
- GitLab LICENSE
- Business Source License 1.1
- FAIR SOURCE LICENSE
- The Commons Clause.
- Anti-996 License