My Research
Journals
All Page
Graph
什么是自由软件?
如果按照时间顺序 ,应该先介绍自由软件,再介绍开源的。不过:由于这是一套“开源百科”,因此也选择了以介绍开源作为开篇。不过,自由软件至今依然极为重要,因此需要详细的介绍一下。
让我们首先来了解一下自由软件运动的发起人Richard Stallman以及自由软件运动的历史吧。
理查德·马修·斯托曼
,我们常常会简称他为RMS,生于1953年,在《黑客》、以及《一生只为自由故》这两本书里,关于他的故事都有精彩的讲述。大家通常都会称他为“最后一个黑客”。他在1970年秋季成为哈佛大学的一年级新生,在1971年,他成为了麻省理工学院人工智能实验室的一名程序员,同时也成为黑客社区的常客。他开发的Emacs、GCC、GDB等软件都大大有名。
1983年,RMS发起了GNU计划,目的是编写一可以不受限制使用源代码的操作系统。 发起这项运动的部分原因是:打印机的功能无法被正常修复,而这是因为用户被阻止使用其源代码。这个故事在纪录片《操作系统革命》中也有讲述。
到了1985年,RMS发布了GNU宣言,在文中,他描述了GNU计划的愿景和自由软件的重要性。
在1986年,为了推广《自由软件定义》,他创建了自由软件基金会。1989 年,该基金会发布了第一版的 GPL (GNU通用公共许可证),并在1991年发布了进行了少量更新的第二版。与此同时,林纳斯·托瓦兹在1991年发布了Linux 内核。到了1992年2月,托瓦兹使用了GPL协议重新发布了 Linux 的0.12版本。
自由软件(free software),根据自由软件基金会对其的定义,是一类可以不受限制地自由使用、复制、研究、修改和分发的,尊重用户自由的软件。这方面的不受限制正是自由软件最重要的本质,与自由软件相对的是专有软件(proprietary software,一些人也会将其翻译为私有软件、封闭软件),后者的定义与是否收取费用无关,事实上,自由软件不一定是免费软件,同时自由软件本身也并不抵制商业化。自由软件受到选定的“自由软件许可协议协议”保护而发布(或是放置在公有领域),其发布以源代码为主,二进制文件则可有可无。
自由软件的核心理念源于软件应该尊重用户的自由和社区合作精神。自由软件与开源软件(Open Source Software)有很多共同之处,但它们的侧重点和理念有所不同。自由软件强调的是用户的自由和权利,而开源软件强调的是软件开发的一种实用方法和协作方式。
自由软件的定义通常基于以下四个自由:
自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。
自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。
自由度2:用户可以自由地分发该软件的拷贝,这样就可以助人。
自由度3:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。
按照自由软件基金会对于自由软件的定义,其实还有一些值得注意的段落:
一个软件只有提供了以上所有的自由给它的用户,才可以被成为自由软件。否则,它就是非自由的。尽管我们也可以比较非自由软件为其用户提供的自由度,但是我们认为,无论如何,
非自由软件本身是不道德的
。
无论在哪种情况下,只有所有用户使用的代码都满足了这四项基本自由,该程序才能被视作自由软件。例如,有两个程序,甲程序运行的时候会自动调用乙程序。发布甲程序意味着用户必须使用到乙程序,那么
必须甲乙两个程序都是自由的,甲程序才是自由的
。如果通过修改甲程序,使其不再依赖乙程序,那么仅仅以自由软件的形式发布甲程序即可。
从以上两个段落我们就能看出:自由软件的提法,是带有道德评判的意味的,而且:按照自由软件的定义,依赖关系会使得“自由得以传染/传播”。按照Richard Stallman的文章《
Copyleft:实用的理想主义
》,这是在用一种实用主义的方式,去实现理想主义的目标。
而真正的实用主义者,其实是开源运动的发起者们,例如《大教堂与集市》的作者埃里克·雷蒙,就认为自由软件社区相对激进的观点并不能很好地吸引诸如网景的大公司,所以他们希望能够更换一种宣传方法,从而可以进一步强调分享源代码的商业价值。
当然,在RMS看来,“开源错失了自由软件的重点”,因为“开源这个词开始异化,使得其背后的逻辑与自由软件运动的初衷相去甚远”
对于自由软件运动而言,自由软件是一个道德底线,是对用户自由的基本尊重。开源软件则与此不同,开源哲学考虑的是怎么做把软件做得“更好”—仅仅从实用的角度。开源的哲学里,非自由软件之所以不好,是因为他们采用了一种劣等的开发方式。
简而言之:非自由的软件,在RMS看来是一个社会问题,而在开源阵营的人看来仅仅是一个开发方式的问题。自由软件运动在追求“更大的自由”,而开源软件运动只是在追求“更好的软件”。
随着开源软件运动的不断开疆拓土,必须承认的是:现在开源更加火爆,而自由软件却只有比较少的一群人,还在坚守。毕竟坚持理想主义的人,总是少数。
今天的课程就先到这里,接下来的28讲,咱们慢慢聊。
References
开源学概论
开源百科