GNU开源精神及其发展历程

通过前面对 STL 各种“民间”版本的介绍我们知道,全世界所有的 STL 实现版本都源于 Stepanov 和 Meng Lee 完成的原始版本(也就是 HP STL),该版本的每一个头文件中都有一份声明,即允许任何人任意运用、拷贝、修改、传播、贩卖这些代码,无需付费,但唯一的条件是必须将该份声明置于使用者新开发的文件内。

如上所说,这种开放源代码的精神,一般统称为开源精神。本教程既然使用这些免费开放的源代码,自然有义务传承这种开源精神,所以本节将对开源精神及其历史发展做一下简单的介绍。

开放源代码的观念源自美国人 Richard Stallman(理察·史托曼,如图 1 所示),他认为私藏源代码是一种违反人性的罪恶行为,而如果能与他人分享源代码,便可以让其他人从中学习,并回馈给原始创作者。封锁源代码虽然可以程度不一地保障“智慧可能衍生的财富”,却阻碍了使用者从中学习和修正错误的机会。

Richard Stallman
图 1 Richard Stallman

1984 年,Stallman 离开麻省理工学院,创立自由软件基金会(简称 FSF),并写下著名的 GNU 宣言,开始进行名为 GNU 的开放改革计划。GNU 这个名称所要表达的含义可以理解为“GNU is Not Unix”,还可以译为“革奴”,意思是从此革去被奴役的命运。

要知道,在那个时期 Unix 是计算机界的主流操作系统,AT&T(Unix 的创造者)将它分享给许多研究人员,而当所有的研究和分享使 Unix 越来越好时,AT&T 开始思考追加投资并从中获利,他一方面要求相关研究人员不得公开或透露 Unix 源代码,一方面赞助 Berkeley(伯克利)大学继续强化 Unix,导致后续发展出 BSD 版本,以及更后来的 FreeBSD、OpenBSD、NetBSD 等等。

Stallman 将 AT&T 这种行为视作思想钳制,于是他开始了称之为 GNU 的反奴役计划。GNU 计划中,最著名的软件包括 Emacs(Stallman 开发的一个非常灵活的文本编辑器,允许使用者自行增加新功能)、GCC(C/C++ 编译器)以及后来的 Linux 操作系统。

GNU 以所谓的 GPL(广泛开放授权)来保护加入该计划的成员,即使用者可以自由阅读和修改 GPL 软件的源代码,但如果使用者要传播借助 GPL 软件而完成的软件,他们必须也同意 GPL 规范。GPL 对于版权观念带来巨大的挑战,甚至一度被称为“反版权”。GPL 带给使用者强大的道德束缚感,“粘”性极强,导致种种不同的反对意见,包括可能造成经济竞争力薄弱等等。

于是,后来就衍生出各种不同的授权,包括 Library GPL、BSD License 等,这些授权的共同原则就是“开放源代码”,但由于各种授权的用户群众所掺杂的本位主义,再加上精英分子难以妥协的个性,使“开放源代码”阵营中的各个分支发生意见分歧甚至相互对立,其中属 GNU CPL 和 BSD License 的拥护者表现最突出。

1998 年,自由软件社群企图创造出“开源”这个新名词来整合各方,他们组成了一个非财团法人的组织,注册了一个标记,并设立网站。开源的定义共有 9 条,即任何软件只要符合这 9 条,就可称呼自己为开源软件。

有关开源的 9 条定义,有兴趣的读者可自行百度搜索了解,这里不做过多赘述。