第56期 | 自由软件之父理查德·斯托曼
你好,这里是卖桃者说。今天想跟大家聊一聊自由软件之父理查德·斯托曼的故事,他也是自由软件运动的精神领袖、GNU计划以及自由软件基金会(Free Software Foundation)的创立者。
谈到自由软件,就不得不提它跟开源软件之间的关系。自由软件可以说是开源软件的前身,后者继承并在一定程度上批判了前者的理念。之后,开源软件在自由软件的基础上蓬勃的发展了起来,直到今天,开源软件成为软件开发领域的主流模式之一。
关于这两者之间的关系,斯托曼自己也曾说过:
“自由软件”和“开放源码”或多或少地描述了同一个软件的类型,但对软件本身和价值观的描述是不同的。我们使用
“自由软件”这个术语,来表达自由是重要的思想,而不仅仅是从技术层面出发。
这里的“同一个软件的类型”指的是,在发布时公布源代码,并赋予用户运行、复制、学习、修改、分发软件的权利。但相对来讲,开源软件会允许软件作者保留一定的权利,比如版权、专利权、软件的开源协议等,而自由软件的标准更严苛,会要求软件作者开放所有权利,给用户绝对的自由。
因此,自由软件更像是一种精神层次上的追求,甚至到后来,很多人提起斯托曼的时候,都脱离了技术身份,转而用革命家和理论家等词来形容他。当然,开源软件的发展之所以能后来居上,跟斯托曼的理论太过极端不无关系。
话题回到斯托曼本身,他和自由软件之间的故事可以从一台打印机说起。
1980年,斯托曼所在的MIT实验室购入了一台激光打印机,结果刚用了一段时间打印机就出问题了,很自然的,出于技术人的第一反应,斯托曼想编写一个提高打印效率的程序,于是跑到打印机厂商哪儿索要打印机程序的源代码,但却被告知:“未经授权,不能向他人提供程序源代码。”这个小小的事件成为了一个导火索。
在此之前,斯托曼和他的同事们组建了一个软件分享社区,与圈子内外的程序员们分享代码、交流心得,一起对软件进行迭代开发。在社区里,成员们都会无偿分享自己的代码,对于软件,他们提倡的是自由、分享与合作。斯托曼沉迷于这样的技术氛围。
然而好景不长,20世纪70年代末,以微软公司创始人比尔·盖茨的《致电脑业余爱好者的一封公开信》为标志,以世界知识产权组织的《伯尔尼公约》为框架,软件步入了版权时代。到80年代后期,计算机的商业化和软件专有化席卷了整个产业,一个又一个有才能的MIT程序员离开校园,投入市场的怀抱,开始开发专有软件。
这时候斯托曼感到一个时代结束了。
多年后,斯托曼回忆那段困惑时期,他是这么说的:
随着社区的终结,我面临着一个道德上的抉择。最简单的就是投身于专有软件世界之中,签署不公开协议,并承诺不帮助同行、同事。自己也很可能编写软件,并在不公开协议的前提下发布软件,去同流合污,迫使更多的人背叛自己的原则。显然,走这条路,可以挣大钱,而且使编写代码的工作增添一份金钱上的快乐。但是我知道,等到自己职业生涯终结时,我再回首这些年为分离人类而砌造的‘墙壁’。我会感受到,我将自己的一生都用在使这个世界变得更加糟糕。
于是,斯托曼走上另一条路,他希望建立一套完全自由开放的计算机操作系统,也就是GNU,让程序员们可以不被专有软件限制,可以做自己真正想做的事,也让社区重新焕发生机。正如他所秉承的理念,“如果你想为这世界做些什么,仅有理想是不够的,你需要找一条通往目标的道路并坚持走完。”
由此,斯托曼开始了他的“圣战”,他的一生都在以“斗士”的身份对抗着被资本充斥的互联网行业,并致力于推广由自由软件组成的操作系统。斯托曼的对手不是人或公司,而是所有封闭的软件公司,比如苹果、微软、Oracle、IBM等等。他到目前为止最主要的成就有三个,每一个都是软件发展史上的光辉:
- 开发了Emacs编辑器。这个不用多做介绍,和 Vim 并称绝代双骄,号称神的编辑器。
- GNU通用公共许可证,也就是GPL,这是世界上采用最为广泛的自由软件许可证。
- Copyleft,所有的GNU程序都应遵循“Copyleft”原则,你可以复制、修改、出售自由软件,但是源代码相关的改动都必须公开,所有用户都可以获得改动后的源码。Copyleft保证了自由软件传播的延续性。
这些成就保障了自由软件世界的繁荣昌盛和长治久安,同时催生了一系列优秀的工具软件和函数库,比如文本编辑器、编译器、调试工具、Web 服务器等等,但 GNU 唯独没有开发出操作系统内核,可能是天意使然,就在这个节骨眼上,林纳斯开发的 Linux 内核横空出世了,并最终采用了GPL 协议,以完全自由、免费的方式发布,从此,GNU 算是功德圆满了,自由、开源和共享的精神一直延续到了今天。自由软件服务了千家万户,在这样一个信息共享的时代,我们每个人都或多或少的受益于斯托曼、林纳斯和自由软件的贡献。
另外,随着自由软件的蓬勃发展,GPL 也根据开发者的需求和软件技术的发展衍生出诸多版本,目前世界上有上百种开源协议,常用的就有GPL、LGPL、Apache、MIT、BSD 等等,相信软件开发者都有所了解,这里就不过多展开了。
斯托曼是一个毫不妥协的理想主义者,此后的30余年间,他一直致力于宣传自由软件的理念。他开启的这场自由软件运动,对于整个软件行业产生了深远的影响,甚至可以说,正是这场运动及其后续的衍生,造就了当前软件开发领域,开源与专有软件二分天下的现状。后来人也可以基于他的思想进行继承和批判,不断完善开源社会的内在逻辑。
尽管到如今,作为一项运动本身来讲,自由软件已经基本退出了历史舞台,但斯托曼的思想却绵延至今,坚持信念、追逐理想的灵魂总是闪闪发光的。
做为一个软件工程师,你是如何看待斯托曼和他的自由软件运动呢?
好,今天关于自由软件之父的话题就先聊到这儿。卖桃者说,明天见。
(编辑:成敏)