跳转至

什么是开源?(What)

课程目标

  1. 理解开源的多元定义(技术、模式、文化)。
  2. 通过真实案例感知开源的影响力。
  3. 激发参与开源的兴趣。

一、教学设计

  1. 发现身边的开源:列出日常使用的软件或设备,查找其官方网站、源代码仓库和许可证,判断它是开源软件、使用了开源组件,还是仅仅提供免费版本。
  2. 比较不同定义:分别从软件类型、开发方式、协作模式和产业生态解释同一个项目,观察四个视角的关注点有何不同。
  3. 用证据支持判断:涉及项目规模、市场占比或社区数据时,记录来源和统计日期,不把宣传材料或过时数字直接当作结论。
  4. 连接真实贡献:选择一个感兴趣的项目,记录其许可证、贡献指南、社区入口和一个可以继续调查的问题,作为课程项目画像的起点。

二、开源的形式

1. 开源软件(OSI 定义)

开源不仅仅是一个技术术语,它还承载了文化和模式的多重意义。开源软件的定义由开放源代码促进会(OSI) 给出,是至今为止广泛认同的标准,为我们提供了一个清晰的框架,帮助我们区分开源与闭源软件。

开源软件是指其源代码可被自由查阅、修改和分发的软件,且必须满足以下所有条件——开放源代码,允许自由使用、修改、分发,且这种自由是无条件的。

OSD 核心条款(简化版)

Open Source Definition(OSD) 核心条款可以概括为为四大原则,它们在实践中成为了开源软件的重要标志:

核心原则 关键要求 反例警示⚠️
自由再分发 允许任意形式的分发(包括商业销售) 禁止转售的软件
源代码公开 必须提供源代码,且禁止混淆或刻意设置编译障碍 只提供二进制文件的软件
允许衍生作品 允许修改源代码并发布修改后的版本(可附加合理限制) 禁止二次开发的许可证
无歧视性限制 不得针对特定人群/领域/技术进行限制(如"不得用于军事用途"条款无效) 限制用户职业的软件协议

核心概念

+ 开源软件 = 源代码开放 + 允许自由使用/修改/分发(OSI定义)
- 闭源软件 = "黑箱"操作 + 使用受限

2. 早期的开源与闭源格局

在软件发展史的不同阶段,开源与闭源呈现出不同的格局和特征。我们可以通过基础设施层、操作系统层、应用层这三个层次来全面解析开源与闭源的演变过程,并探索其中的文化与技术力量。


基础设施层:开放协议主导

TCP/IP 协议栈(1970s)
  • 背景与作用:由美国国防部高级研究计划局(DARPA) 资助开发的TCP/IP 协议 是互联网的通信基础。该协议栈的完全开放性 让世界各地的机构得以自由实现,并可以在全球范围内实现互联互通。
  • 关键意义:这为互联网的快速扩展奠定了基础。TCP/IP 协议成为全球网络连接的标准,极大推动了现代互联网的形成。
  • 典型案例:BSD UNIX 是开源实现 TCP/IP 协议栈的一个例子:1977 年 1BSD 起,伯克利在 AT&T 授权下独立发展这套系统,1989/1994 年两次 Net/Free 分发才使其成为可自由再分发的 BSD 分支,后来的 FreeBSD 和 NetBSD 等开源操作系统都源于这一支。
电子邮件系统
  • 开放协议:早期许多电子邮件系统都有闭源实现。不过,和其他协议相比,SMTP 和 POP3 协议具有开放性,因此成为全球邮件传输和接收的标准。而随着开源软件的发展,开源邮件系统也逐渐占据主导地位。
  • 闭源案例:比如 Lotus Notes(1989),其邮件系统在早期占据市场主导地位,但是完全闭源,限制了用户的定制和扩展实现。
  • 开源先驱:Sendmail(1983),开源邮件服务器软件,成为邮件服务器的事实标准,推动了邮件协议的普及。

操作系统层:闭源商业软件的霸权

在操作系统层,闭源软件曾长时间占据主导地位,尤其是在个人电脑和大型主机领域中,商业软件通过对源代码的控制,塑造了强大的市场壁垒。

系统 性质 关键事件
UNIX 初期闭源 AT&T 禁止大学传播源码(1979)
DOS/Windows 完全闭源 微软通过闭源绑定 IBM PC(1981)
VMS 闭源 DEC 专用系统,影响早期网络架构
  • UNIX:虽然最初的 UNIX 系统是由贝尔实验室(AT&T)开发的,但由于其巨大的技术潜力和影响力,AT&T 在 1979 年开始限制其源代码的传播,开启了闭源软件的霸权时代。
  • DOS/Windows:微软通过完全封闭源代码,并将其绑定到 IBM PC 的硬件上,成功建立起了 PC 操作系统的市场主导地位。
  • VMS:DEC 公司开发的 VMS 操作系统长期封闭,成为其自家硬件的专用系统,影响了早期的网络架构。

例外突破:尽管大多数操作系统都处于闭源状态,但 BSD UNIX 自 1977 年的 1BSD 起,在 AT&T 授权下由伯克利独立发展;1989/1994 年两次 Net/Free 分发才使其成为可自由再分发的 BSD 分支,并为后来的 FreeBSD/NetBSD/OpenBSD 等开源操作系统铺平了道路。


应用层:开放与封闭的拉锯战

随着计算机和互联网的普及,应用层软件成为了开源与闭源之争的关键战场。在这个层面,开源和闭源的斗争更为激烈,影响也最为广泛。

闭源也曾称王
  • 浏览器大战:Netscape 最初是闭源的(1994 年),它曾是最受欢迎的浏览器。然而,由于开源运动的推动,Netscape 决定在 1998 年开源其浏览器核心,最终催生了 Mozilla Firefox 这一开源浏览器的诞生,直接挑战了微软的 Internet Explorer。
  • 办公软件:微软 Office(1989 年)凭借其强大的功能和用户基础,长期占据办公软件市场的统治地位,且完全闭源,极大限制了用户的定制和扩展能力。
开源突破重围
  • Apache HTTP Server(1995):最流行的开源 Web 服务器之一(1995 年起源于 NCSA HTTPd 的补丁集,1999 年成立 Apache 软件基金会),它迅速击败了当时闭源的 Netscape Enterprise Server,成为全球最流行的 Web 服务器软件。
  • Perl 语言(1987):开源的 Perl 编程语言成为了早期 Web 开发的核心工具之一。它的开源特性使得开发者可以自由修改和扩展,迅速发展成开发人员的首选语言。

文化基因:开放协作的暗流

除了技术因素外,开源运动的成功还离不开其背后深厚的文化基因,它源于对知识共享和协作创新的深刻理解。

  • 开源的文化传承:MIT 的 AI 实验室等机构提倡代码共享,早期的 ITS 操作系统就是一个典型的例子。其开放的代码理念,成为了日后现代开源运动的精神先驱。
  • Richard Stallman 与 GNU 计划:1983 年,Richard Stallman 发布 GNU 宣言,并启动了 GNU 计划,致力于创建一个完全自由的操作系统。这标志着现代开源运动的觉醒,为后来的 Linux 内核等开源软件提供了理论支持和实践基础。
  • 开放标准的倡导者:互联网的很多技术标准是通过互联网工程任务组(IETF)的公开征求意见稿(RFC) 确定下来的,从而推动互联网协议的标准化。例如,HTTP/1.0 规范 在 1996 年以 RFC 1945 的形式发布,为全球的网络通信提供了共同语言。

关键转折点时间轴

年份 关键事件
1969 ARPANET诞生,开放协议成为互联网基础
1979 AT&T 开始收紧 UNIX 授权,闭源的商业化趋势显现
1983 GNU 宣言发布,标志着现代开源运动的觉醒
1985 FSF(自由软件基金会) 成立并发布 GPL 草案;1989 年 GPLv1 发布
1991 Linux 内核首次发布,成为开源软件的代表
1995 Apache超越闭源服务器,成为 Web 服务器的主流
1998 "开源"一词正式诞生,开源成为技术和文化的代名词

总结与思考

为什么基础设施层更早开放?

  1. 军事科研需求:在互联网初期,ARPANET 作为军事研究项目,需要实现跨机构的高效协作,因此选择开放协议,促进各方自由实现和参与。
  2. 商业价值滞后:互联网初期缺乏明确的盈利模式,企业尚未拥有对软件的闭源保护意识,反而开放协议和技术能够促进广泛的合作与发展。
  3. 学术共同体传统:大学和研究机构历来推崇知识共享。许多早期的技术发展,如 UNIX 和 TCP/IP 协议,都是因为得到了学术界的广泛支持与推广。

总结:尽管随着商业化进程的推进,闭源软件在应用层逐渐占据主导地位,但从基础设施到应用层,开源的精神始终贯穿其中。开源和闭源之间的博弈,构成了现代数字技术生态中最为根本的对抗与合作。

3. 开源是一种协作与创新模式

软件层:开源开发的协作密码

开源的核心不仅仅是技术的共享,它深刻地改变了传统软件开发中的协作方式。不同的开源协作模式使得全球开发者能够共同工作,从传统闭源开发到企业内部开源,再到完全开源的广泛采用,开源逐渐形成了独特的协作密码。

传统闭源开发

典型特征:代码仅限于内部团队访问,外部开发者无法获取源代码。并且因为严格的知识产权保护,源代码无法修改或分发。

案例:Windows 95 的开发过程中,微软严格控制代码的所有权和访问权限,确保仅限内部开发人员修改和发布。

企业内部开源(Inner Source)

核心逻辑:对外部依旧保持闭源,但内部采用开源协作方式,跨团队共享代码库,允许内部贡献和修改。

案例:

  1. 微软:通过“One Engineering System”实施内部开源,促进跨部门的协作与代码共享。
  2. 沃尔玛:采用内部开源模式开发电商平台,加速了门店系统的开发与迭代。
完全开源

黄金标准:代码完全公开,任何人都可以参与修改和贡献,全球开发者共同推动项目进步。 OSI 定义:符合开放源代码的标准,任何人可以自由使用、修改、分发。

案例:

  1. Linux 内核:全球开发者贡献,成为最具影响力的开源操作系统之一。
  2. Vue.js:前端框架,采用开源协作模式,社区驱动着其快速发展。

认知升级:只是协作模式的不同

开源不仅是一种技术决策,它还是一种协作模式的变革。通过对不同协作模式的分析,我们可以理解,开源并非是唯一选择,而是在可持续性和普惠性之间寻求最佳平衡。

不同模式的核心差异点
维度 传统闭源 Inner Source 完全开源
透明度 黑箱操作 组织内透明 全网公开
创新来源 内部研发 跨部门协同 全球智慧
进化速度 线性增长 多项式增长 指数级增长
案例代表 Oracle 微软 Azure TensorFlow

课后拓展:开源与文明史

开源不只是软件开发方式,也是一种被反复验证过的协作范式。古代工程与今天的开源项目常被放在一起类比:

  • 古罗马引水渠:多个城邦共享水利技术,改良方案刻在公共石碑上,类似今天的 Git 提交历史。
  • 维基百科编辑:任何人都能修改条目,讨论页则记录争议的解决过程,分别对应 Pull Request 与 Code Review。
  • 数学传统:符号系统全球通用、定理证明可复现可验证,是一种早于软件的知识共享实践。
  • 协作尺度:从金字塔、紫禁城、阿波罗计划,到 Linux 内核的全球分布式开发,协作的规模与知识管理方式不断演进。

“当建造数字巴别塔时,开源不是可选项,而是必选项。”

不妨把数学、建筑与开源项目放在一起比较:它们都在回答同一个问题——如何让分散的个体共同积累并传承知识。

4. 开源是一种文化理念

开源不仅是一种技术实现,它也是一种全球范围内的文化理念,代表着共享、透明与协作的精神。从数字世界到整个社会的进步,开源成为了推动文明演化的重要力量。

从技术到文化的四层跃迁

层级 核心要素 现实映射案例
工具层 Git/Markdown/CI/CD等技术工具 GitHub 工作流、Jupyter Notebook
方法论层 Pull Request 机制/社区治理规则/许可证体系 Apache 投票制度、Linux 维护者体系
生态层 多主体共生的可持续系统(开发者 - 企业 - 用户的正向循环) Kubernetes 生态、RISC-V 指令集联盟
文明层 开放协作成为解决复杂系统的默认选项 人类基因组计划、维基百科

开源的概念从最初的代码共享,发展到如今的开放协作,并通过跨技术、跨行业、跨领域的应用,成为解决全球性问题的有效工具。这四个层级的跃迁反映了开源从技术实践到文化理念的深刻转变。


文化演进史:开源理念的千年血脉

timeline
    title 人类开源文化里程碑
    公元前300年 : 欧几里得《几何原本》
    830年 : 阿拉伯数字全球传播
    1675年 : 莱布尼茨微积分符号
    1958年 : IPTO建立ARPANET开放协议雏形
    1998年 : 数字世界"开源"概念正式诞生

数学:人类最早的开源实践

数学作为人类最早的开源实践之一,通过符号系统的共享、定理的公开证明、知识的积累和去中心化协作,展现了开源的原始特征。

数学的“开源特性”解剖
  • 符号系统的开源:阿拉伯数字、希腊字母全球通用。
  • 知识积累的开放性:定理证明可复现、可验证、可改进。
  • 协作网络的去中心化:从亚历山大图书馆到现代的 arXiv 预印本平台,促进了全球知识共享。

历史对照:闭源 vs 开源数学

案例 协作方式 成果影响
牛顿微积分 闭源多年 引发与莱布尼茨的优先权之争
布尔代数 完全开源发布 催生整个计算机科学领域

通过对比牛顿与莱布尼茨之间的优先权之争与布尔代数的开源发布,我们看到开源在推动学科发展的速度、广度和深度上的独特优势。


开源文化 DNA:从数学到数字时代

共享符号系统
  • 数学:∑ 积分符号 → 编程:{} 代码块语法
  • 案例:LaTeX 数学排版系统开源标准

互动实验:数学论文 vs 开源项目

对比分析
维度 数学论文系统 现有开源项目系统
最小协作单元 定理证明 Pull Request
版本管理 多版本手稿传递 Git 分支管理
质量检验 同行评审 Code Review
知识传承 学术谱系 Contributor 图谱
争议解决 学术辩论 Issue 讨论

文化投射:开源理念的现代显化

跨领域开源范式
领域 开源实践 数学渊源
区块链 以太坊智能合约开源 图灵可计算理论开放验证
生物技术 CRISPR 基因编辑协议共享 DNA 双螺旋结构开放研究
航天 SpaceX 公开火箭设计蓝图 开普勒行星定律开源传播
开源文化主流的特性
  1. 可溯源性:所有创新需标注知识谱系(如数学引用体系)。
  2. 可验证性:过程数据完全开放(如 Git 历史记录)。
  3. 可扩展性:允许衍生创造(如数学猜想迭代)。

认知思考:我们终将开源

当罗马工匠将混凝土配方带入坟墓,当大马士革钢工艺湮灭于战火,人类文明出现空白页——直到《几何原本》被翻译传播,直到 Linux 内核向全球开发者敞开,我们才真正懂得对抗被时间遗忘的武器,是开放与共享。

通过混凝土的千年轮回,理解开源不是技术选择,而是文明存续的生存策略。 从泥板上的楔形数字到 GitHub 的星标仓库,人类始终在践行同一个真理:共享使知识永生。