这不是 Linux 的 15 周年 – 以及为什么这很重要

作者:Glyn Moody

上周,我怀疑自己是否回到了过去。我在线浏览新闻网站、博客和 Twitter 时,似乎到处都在庆祝 Linux 的 15 周年纪念日。“这怎么可能呢?”我问自己。“既然 Linux 是在 1991 年开始的,那一定意味着我们现在是 2006 年:难道我穿越虫洞回到了过去?”

当我真正阅读这些周年纪念文章时,才发现他们庆祝的是 Linux 1.0 版本的发布,该版本于 1994 年 3 月 13 日 22:38 发布。幸运的是,我似乎不需要再经历过去三年了。但随后我感到困惑,人们为什么要纪念这个随意的事件。

从整合的 Linux 内核历史 中可以看出,这有多么随意。它显示,1992 年 1 月 16 日,内核版本为 0.12,但在几个月后变为 0.95 版本。0.99 版本于 1993 年 12 月发布,随后出现了一系列非凡的增量更新,经历了 0.99.1、0.99.12、0.99.12a、0.99.12z、0.99.15a、0.99.15j,最终达到了 Pre-1.0 版本。在这个漫长旅程的后期,几乎每隔几天就会有更新,有时甚至一天更新好几次。

显然,在这些月份里发生的事情是对 Linux 内核近乎痴迷的精雕细琢。但版本 0.99.14z 和版本 1.0 之间的区别很小:并不是说前者不可用,而后者是绝对完美。事实上,与之前的版本相比,版本 1.0 并没有什么特别之处,除了它的编号。

这是自由软件最深刻的优势之一——软件永远不会真正“完成”,其必然结果是它也永远不会真正 *未* 完成。巨大的飞跃很少见:大多数情况下,它更细粒度。

这就是我认为“庆祝” Linux 1.0 是误导的原因:它给人一种印象,即自由软件就像任何其他专有代码一样,在达到神奇的发布号之前都是垃圾,并且在达到发布号时就莫名其妙地完成了。如果你想庆祝 Linux(这是一件非常明智的事情),唯一可能的日期是项目启动的时间——毕竟,这就是生日中的“诞生”的含义。问题是,即使那个日期也不存在。

Linus 从未真正打算创建他最初称之为 Freax 的东西——后来变成了 Linux。从某种意义上说,这段旅程始于 1991 年 1 月 5 日他购买了他的闪亮的新 PC:“386、DX33、4 兆内存、没有协处理器;40 兆硬盘”,正如十多年前他告诉我的那样。他大部分时间都在玩原版的《波斯王子》游戏,以及探索他机器的功能。

他感兴趣的一个重要方面是任务切换。

我当时正在测试任务切换功能,所以我所做的就是创建了两个进程,让它们写入屏幕,并使用一个计时器来切换任务。一个进程写入“A”,另一个进程写入“B”,所以我看到了“AAABBBB”等等。

那是 Linux 的开始吗?显然不是,因为 Linus 只是在摆弄一些粗糙的代码,尝试一些东西。然而,这两个进程后来开始演变成其他东西——首先,变成了一个简单的终端仿真器,这样他就可以在赫尔辛基大学的计算机系统上阅读 Usenet 新闻组。

我将这两个进程更改为像终端仿真软件包一样工作。你有一个进程从键盘读取并发送到调制解调器,另一个进程从调制解调器读取并发送到屏幕。

再说一遍,这听起来可能不太像操作系统,但为了创建他的终端仿真软件,他必须为外围设备编写驱动程序。当他添加了基于 Minix 操作系统(这是他购买 PC 的主要原因)的文件系统时,最终结果大于其各部分之和。正如他自己所说:

本质上,当你拥有任务切换、文件系统和设备驱动程序时,那就是 Unix。

Linux 不仅在其向 1.0 版本(及之后)发展的过程中有机地增长,而且它也以完全相同的计划外方式开始:一些黑客行为产生了一些东西,这些东西变成了其他东西,不知不觉中,Linus 就拥有了一个操作系统。

这在许多其他开源项目中都很典型,并且越来越多地体现在其他受其流程和成功启发的项目中。想想 Apache,它最初是对 NCSA Web 服务器的一系列补丁;想想 Larry Wall 的 Perl,它最初是一个简单的工具,用于他的 rn 新闻阅读器;想想 Wikipedia,它被设计为一个快速的黑客行为,为主要的 Nupedia 系统提供半成品文章的 feed。所有这些都与传统软件开发的自上而下的方法形成鲜明对比,在传统软件开发中,人们坐下来设计一个产品,其中包含消费者感觉需要的一堆功能。

纪念 Linux 或任何其他项目的名义“主要”版本的周年纪念日本身并无害处,但往往会掩盖自由软件和传统项目之间的关键区别之一。我们真正应该庆祝的是这种自由创造所允许的非凡的意外发现的力量——这并非通过数字实现的。

你可以在 Twitter 上关注我:@glynmoody

加载 Disqus 评论