GNU 系统是一套兼容 Unix 的完全自由的操作系统。GNU 是“GNU’s Not Unix”的首字母。 它的发音像是“革奴”。Richard Stallman 在 1983 年 9 月做出了要开发这套系统(GNU 工程)的初始声明。接着在 1985 年 3 月又发表了更长的版本,叫做 GNU 宣言。

GNU 的诞生意味着自由软件运动的开始。今年是 GNU 工程的第 37 个生日,是一个值得纪 念的生日——37 是第 12 个素数。

GNU 工程是一个艰巨的任务。到 1990 年,GNU 完成除内核之外的所有主要的系统组件。 Linus Torvalds 在 1991 年开发了一个类似 Unix 的内核 Linux,并在 1992 年将其 变成自由软件。将 Linux 与几乎完成的 GNU 系统结合在一起就是一个完全的操作系统: GNU/Linux 系统。这就是现在有数千万人在使用的 GNU/Linux 系统,通常是 GNU/Linux 发 行版。

但是,大多数人认为自己用的是 Linux 系统,其实他们其中很多人是从没有听说过 GNU 的 GNU 用户。尽管如此,那些了解 GNU 的人会把它和自由软件运动的自由理想联系在一起。 这种联系不是巧合;开发 GNU 的动机正是让人们能够使用电脑并拥有自由。随着时间的发 展,称该系统为“GNU/Linux”就会让更多的人对 GNU 系统的自由理想有所了解——第一次看 到 GNU/Linux 中 GNU 的人可能会去搜索 GNU 的意思。同时它也有利于提醒社区中已经知 道这些理想的人们不要忘记自由的理想,因为在现实中,太多关于自由软件的讨论是完全从 实用(因而是与道德无关)的角度出发的。当社区请求你称该系统为“GNU/Linux”时,社 区就是在请求你帮助公众了解自由软件的理想。

提到自由软件,大家也许不会联想到自由软件的英文是“Free Software”。是的,这里的 “Free”指的是“free as in freedom”里的自由,而不是“free lunch”里的免费。为了 强调自由,自由软件有时也叫“Libre Software”,虽然很多人不认识“Libre”这个词—— 它是拉丁语的自由,它和 free 的关系就像 freedom 和 liberty 的关系一样。中文是幸运 的,我们可以使用自由软件和免费软件把自由和免费分开——自由软件讨论的不是免费,它 的 free 和价格无关。当一个软件给予其用户以下四项基本自由时,它就是自由软件:

自由之零:用户有自由按照自己的意愿运行该软件。

自由之一:用户有自由学习和修改该软件,使之按照自己的要求运行。

自由之二:用户有自由分发该软件的原始版本,无论是否收费。

自由之三:用户有自由分发该软件的修改版本,无论是否收费。

这几样自由是至关重要的。之所以说它们重要,不仅仅是因为它们可以讨好哪个用户,更是 由于它们维系着整个社会的凝聚力——具体说来,就是分享与协作的精神。随着我们的生活与 文化日渐数字化,这样的自由精神也随之越来越可贵。在一个充斥着数字化音像与文字的世 界中,自由软件日益重要,它本身已经成为关乎着我们基本自由的因素之一。

其中自由之一,如果要学习和修改软件,那么用户必须要获得软件的源代码——这意味着自由 软件必须要发布源代码。很多人会对“开源软件”顾名思义,把“开源”简单理解为开放源 代码——这是不对的。“开源”有明确的定义,并且其意义显然超过了其字面的意义。实际上, 开源软件和自由软件大多数情况下指的是同一类软件,而且开源运动和自由软件运动以及它 们的社区也一直有着良好的合作。

不过,开源运动和自由软件运动有着不同的理念。开源运动关注的是软件开发的实际操作, 而且开源一词已经为商业和社会团体滥用,成了一个时髦的市场词汇。开源的理念与自由软 件相去甚远——所有的问题都以“开源”一词蔽之,自由很少被提及。而自由软件从 GNU 工程一开始就是以计算机用户的自由为目标,追求的是用户控制计算机而不是计算机控制用 户。正是因为自由软件坚持的是用户自由这一无法妥协的理想,才有了我们今天所有人——程 序员或者非程序员——都能够使用的完全自由的 GNU/Linux 操作系统。

现在,GNU 工程已经 37 岁了。而自由软件也正在面临前所未有的挑战:

  • 非自由的手机操作系统

  • 所谓软件即服务的各类云

  • 非自由软件正在向各类学校教育推送带有恶意功能的在线教育

37 年前,Richard Stallman 独自挑起自由软件的大旗。现在,今天,所有珍视自由的人都 应该为我们已经获得的自由、未曾获得的自由、即将失去的自由贡献自己的努力: