Debian GNU/Linux 操作系统:从社区协作到开源生态的生存之道​

 1991年,Linus在Stallman的自由软件运动引领下发布Linux内核,GNU/Linux操作系统由此诞生。Debian作为持续最久的Linux发行版之一,通过社区协作和开源倡议解决了自由软件的生存难题,其5万个软件包和年度选举机制展现了开源生态的独特生命力。

GNU/Linux OS 回顾

1. 项目进度

  • 1983年,Stallman 启动 GNU 项目后,尽管他的卓越才能在其主管的 GNU/GCC 编译链中大放异彩,但 kernel 却迟迟无法正式发布。

  • 1990年,GNU 项目成员贡献 Mach microkernel,即 GNU Hurd。

  • 同年,Microsoft 发布首个人类历史上,被市场广泛接受的,基于 MS-DOS 的 GUI 操作系统 Windows3.0。这是一个巨大的反讽,因为 Stallman 曾公开说 MS-DOS 是“玩具”(与 Unix-like 操作系统 GNU 的 Unix shell 比较)。这可能反映了商业软件的某些市场与进度优势。

  • 1991年,芬兰学生 Linus,在 Stallman 发起的“free software movement(自由软件运动)”引领下,在 copyleft(著佐权,注意:非“著作权”)即 GPL 保护证模式下,发布 Linux kernel。至此,GNU/Linux OS 正式诞生。

  • 注1:尽管 Linus 使用 GNU/GCC 编译链,并遵守 GPL 证书,但 Linux kernel 并非 Stallman 醉心的 GNU 项目中的部分。即 Linux kernel 专属 Linus 的个人贡献。

  • 注2:这可能导致了世人皆知 Linux,并常常以此指代 GNU/Linux 操作系统(某种角度上,这种理解不算错。因为 Linux OS,可将各个成熟 GNU 工具视为向 Linux kernel 的移植过程)。

  • 注3:由于 Richard Stallman 毕生引领“自由软件”运动,并创造性发明 GPL 证书(copyleft 证)。以及考虑从 Ritchie 发明C 语言并重写(真正创造)Unix 开始,C语言与编译器,与Unix-like 系统,两者就变得不可分割。因此,这里通常选择称呼“GNU/Linux 操作系统”。

2. 功能模块

  • Stallman 的 GNU/GCC 工具链与其他 GNU 工具

  • Linus 的 Linux kernel

  • Unix shell:用户交互的命令行解释器

3. “主线任务”

如上讲所述,从游戏中借用“任务”一词,来表述 Unix/Unix-like 操作系统发展,即开始 GNU/Linux 的“主线任务”。列举如下:

  • System V 家族(Unix):“宗门任务”(少数公司商业闭环)

  • BSD(Unix-like):“殿堂任务”(BSD 许可证,苹果 MacOS 分支可商业闭环)

  • GNU/Linux(Unix-like): “主线任务”(GPL 保护证)

01

Debian GNU/Linux 操作系统(Debian OS)

创造类似 Windows,MacOS 的 GUI “桌面视窗”操作系统,现在是 GNU/Linux 的首要任务(1990s 的硬件环境也已成熟)。

Debain 包括了下述主要模块:

  • 桌面环境:支持 XFCE, GNOME, KDE, MATE, Cinnamon, LXDE, 以及 LXQT.

  • 办公工具:LibreOffice, Firefox web 浏览器,Evolution mail, K3b disc burner, VLC media 播放器, GIMP 图像编辑器, 以及 Evince document viewer.

  • APT 包(下载)管理工具。

作为“主线任务”,Debian GNU/Linux 操作系统,是持续最久的 Linux 分布之一,是广泛使用的网络服务器的 OS 之一。

同时,它还是 Ubuntu 的 codebase(代码基地/代码来源)

02

Debian 社区生态

2.1 超大规模的 GPL 项目

作为“自由软件”,GNU/Linux(Unix-like 操作系统) 主要的问题,是如何生存与发展的问题。这里理解,归根到底就是:如何发展无资本支持,无明显收益的 GPL生存环境。

作为比较:Windows,MacOS(iOS),Andriod OS,与大型垄断性跨国公司 Microsoft,Apple,Google 的支持不可分割,同时上述操作系统(或与其关联的硬件,工具软件)又是上述商业跨国集团的重要收益来源。

它的难度和投入通过以下数据可窥知一二:

  • Debian 软件仓库的包超过 5万 pcs。

  • Debian5.0 的全部包(packages)的代码超 3亿行。

  • 2016年,Debian codebase 代码超 7千万行。

2.2 社区形式组织的千名“Debian 开发者”与年度投票 Leader

社区模型

以下图片来自 Wiki:

如图,图片中三份列表分别表示:投票人数,项目 leader,Debian 包生命期框图。

行为指导

“Debian 社会契约”,“Debian 自由软件指南”,“Debian 宪章”指导如下行为:

  • 约千名“Debian 开发者”组织为社区(但不禁止其他开发者向 Debian 贡献)。

  • 在官方邮件列表与相关会议中,与开发者间实现项目协调。

  • Debian 项目 leader 每年度被选举(始于 1999年)。

  • 资金来源之一:leader 可以对某些组织授权(如商标),以获得捐赠。

  • leader 的重要职责包括引领 Debian 兴趣方向与维护版本发布。

2.3 “maintainer/维护者”

每一个 Debian 软件包,都有一个“维护者”,见上图中的包生命期框图。

维护者的工作包括:

  • 跟踪发布

  • 协调与其他包的协同工作,并保证符合质量标准

2.4 发布周期

大约每隔 2年会发布一个新的 Debian 稳定版分支(注:与 Ubuntu 稳定版时间耦合)。

03

“开源倡议”(Bruce Perens):接受捐赠的 Debian

如上图中的第二个 Leader 框图所示,列举了众多 leader(项目领袖)。

Ian Murdock 是项目创始人。1993年,Ian Murdock 创立 Debian 项目。其命名为他的女友(前妻)的名字 Debra Lynn,与他自己的名字之合体。

3.1 Bruce Perens

1996年,Perens 获得项目领袖职权。起草“Debian 社会契约”,“Debian 自由软件指南”,摆脱 Stallman 的 FSF(自由软件基金会)。

文件格式转变,从 a.out 至 ELF 格式。注1:a.out 通常具有调试符号信息。Unix “宗门任务”中,其过渡为 COFF 格式,最终为 ELF 格式。注2:据说 a.out 的主要问题是共享库的复杂性(与登记授权的虚拟地址有关)。

3.2 Open Source Initiative(开源倡议/开源行动会/开源促进会)

Perens 定义了“开源(open source)”,并正式发布了“开源宣言”。他是 OSI(开源行动会)的联合创始人(典型区别于 Stallman 的 FSF,自由软件基金会)。

因此,他深刻改变并重锻 GNU/Linux,或 Debian 的项目发展模式。这里理解,其核心问题:就是解决如何在 GPL(copyleft 证书)下的“自由软件”范畴内,求市场生存的重大议题。

自此,从30年前开始,或更准确地说,进入新世纪以来,“开源”在市场宣传上,往往代替“自由软件”,成为更熟悉的项目概念。

有别于 Stallman 的似乎“厌恶”商业利润倾向,Perens 要求 Debian 可以接受捐赠。此外,如上文所述,赋予 leader 透过发放商业冠名,获得收益的权利

Perens 阐述“绝大多数黑客,都晓得自由软件和开源,是同一件事儿的两个名词”,但是,“开源”作为市场营销的成功,“淡化了自由软件内涵的自由域/免费域的重要性”。

注:本观点不被 Stallman(“自由软件运动”引领者)认同。此外,Stallman 的 FSF 指责 Debian 的 no-free software(非自由软件)包,太容易被用户访问(如上讲所述,Stallman 的 GNU/Linux 项目,完全由自由软件组成)。

以下图例来自 Wiki:

拓展介绍:Perens 出生患有脑瘫,并在求学时误诊发育障碍,校园还不被教授阅读能力。

04

硬件平台

本图例来自 Debian 官网:

可以看到:

  1. 尽管同时也支持 Intel 64。但首个支持的架构名称,仍然是“amd64”。这反映了 GNU/Linux 分布,天然的“非 Intel-MS”的特点。

  2. ARMv7 与 ARMv8(AArch64)架构都被支持。

  3. 可能是未来的流行的 RISC-V 架构也被支持。

05

Windows 支持(WSL)

从 Win10 开始(2016年),Microsoft 提供了 WSL(Windows Subsystem for Linux/ Windows 之 Linux 子系统),可用于提供 Debian/Ubuntu 子系统。

以下内容来自(Brendan Hesse,自由专栏作家):

  1. WSL 是一种 natively 访问方式(这里理解:明显有别于传统的 Cgywin,Msys2 等虚拟环境)。

  2. 安装 WSL 要不了一会儿(若干分钟)。

  3. WSL 在行为上,就像“windows 的 bash”,即在 windows 平台下的 powershell 中,运行 Ubuntu bash(Unix shell 在前文中有介绍)。

  4. WSL 几乎唯一的好处,就是有利于开发者(即在 Windows 平台上创造 Linux 软件)。因此,WSL 是一个有力的开发工具。

  5. 由于 WSL 是 Windows 进程之一,这意味着 Windows 的各种工具仍可使用,并且可以使用类似 tasks 管理器来终止 Linux 进程。

  6. WSL 默认不支持 Linux 的 GUI 版本,它仅是一个命令行环境(GUI 界面的软件既不能安装,也不能运行)。Microsoft 无计划对 Linux GUI 进行官方支持。

  7. WSL 可以同时使用 Windows 和 Linux 的文件系统。

  8. WSL并非开源项目,也非 Linux kernel,它仅是 Microsoft 的某个框架。

安装 WSL,这里就不再介绍,网上可以容易搜索。通常,具有启用(使能)WSL,下载 Linux(比如 Debian,或 Ubuntu)两个步骤。

06

总结

 

  1. 沿着上文探讨的,作为“主线任务”的发展,本文介绍了 Debian GNU/Linux OS。

  2. Perens 在 Debian 项目中,首次引入“开源”概念(它使得项目能过通过捐赠与有偿授权等方式,获得收益)。

  3. 指出 Debian 的社区规模,以及特别的年度领袖选举机制。在 Packages 的管理中,开发方式通过“维护者”来保证每个包的发布,以及系统兼容。

  4. 讨论了主要的在线的硬件平台。

  5. 简单介绍 Win10 引入 WSL,包括 Debian 在内的 GNU/Linux 分布的子系统的主要特点。