开源究竟差哪了
| 2015-06-15 13:51 评论: 1 收藏: 2
要说一个软件是 “自由” 的,这意味着它尊重 用户的基本自由:运行这个软件,学习和修改它,以及重新发布它的原版或修改版。这是个关于自由权利的问题,而非价格高低。我们讨论的自由是如同自由言论般的权利,不是免费赠饮一样的大派送。
这几样自由是至关重要的。之所以说它们重要,不仅仅因为它们可以讨好哪个用户,更是由于它们维系着整个社会的凝聚力— 具体说来,就是分享与协作的精神。随着我们的生活与文化日渐数字化,这样的自由精神也随之越来越可贵。在一个充斥着数字化音像与文字的世界中,自由软件日益重要,它本身已经成为关乎着我们基本自由的因素之一。
当今世界中,成百上千万的用户正在使用着自由软件;在印度和西班牙某些地区的公立学校里,全体学生都学习如何使用自由的 GNU/Linux 操作系统。然而,这些用户之中,大多数人却并不了解我们为何开发这个自由系统,又为何建立起整个自由软件社区,以及背后驱动这一切的道义上的逻辑。因为如今这个自由系统,乃至整个社区都被以“ 开源” 一词以蔽之。顺着这个词,一切都被引入了一个完全不同的思维之中。在那里,自由这东西,甚少提及。
题图来自:churchm.ag
从 1983 年起,我们以维护计算机用户自由之名兴起了自由软件运动。在 1984 年,我们发起了开发自由操作系统的计划,并将此系统命名为GNU。借此系统,我们就不必倚赖非自由的操作系统,不再坐视它们肆意剥夺用户的自由。在二十世纪八十年代,我们开发了系统的绝大多数组件。为了保护用户的自由,我们设计了 GNU 通用公共许可证 (GNU GPL),并以该许可证发行大部分组件。
并非全部的自由软件用户和开发者都赞同自由软件运动的目标。1998年,自由软件阵营中的部分成员分裂出来,并以“开源”为名继续开展活动。一开始,由于“自由软件”(free software)一词可能引起歧义,这才提出开源这个说法。但是很快开源这词便开始异化,使得其背后的逻辑与自由软件运动的初衷相去甚远。
一些开源的支持者会认为,所谓开源,无非是用来“为自由软件做市场营销”的。具体说来,就是向那些商界人士展现自由软件的实际好处。同时避免谈及什么对错正误,因为商业大佬们普遍不太喜欢这调调。还有一些开源的支持者干脆就抛弃自由软件道义上的价值观。无论他们持哪种观点,一旦他们开始为开源营销的时候,自由软件运动所珍视的那些价值观就被抛诸脑后。于是,“开源”一词很快就单纯地和各种实用主义的价值观联系起来。比如说怎么能创造一个强大,稳定的软件。很多开源支持者从一开始就把这些价值观推崇至极,也难怪局外人会有如此联系了。
开源软件和自由软件这两个词在很大程度上描述的是同一类软件,但是它们所基于的价值观却有着本质上的区别。开源是指一套开发方法;而自由软件则是一场社会运动。对于自由软件运动而言,自由软件是一个道德底线。因为只有自由软件才真正尊重用户的自由。开源软件则与此不同,开源的哲学是考虑怎么做把软件做得“ 更好 ” — 仅仅从实用的角度考虑好坏。开源的哲学里,非自由软件之所以不好,是因为他们采用了一种劣等的开发方式。而自由软件运动则以为,非自由软件本身就是一个社会问题。解决的方案则只能是抛弃非自由软件,转投自由软件。
“自由软件”,“开源软件”,既然都指的是同类软件,那何必在名字上这么较真呢?恐怕还是有这个必要的。因为不同的词汇传递着不同的思维。尽管现在看来,用另一个名字称呼自由软件可以给你同等的自由,但若要长期维护用户的自由,则必须让人们意识到自由的价值。倘若你想帮助人们做到这点,那么使用“自由软件”这一称呼则尤为重要。
作为自由软件运动的成员,我们并不将开源阵营视为敌人。我们的敌人是专有(非自由)软件。但我们希望人们至少应该知道,我们所捍卫的是用户的自由。所以我们不愿被开源支持者们贴错标签。
实践中,开源与自由软件的区别
在实践中,开源的要求比自由软件宽松一些。据我们所知,几乎所有的自由软件都是开源软件。尽管大多数开源软件也同样是自由软件,但会有一些例外。首先,有些开源许可证对用户过于苛刻,它们就没有被列为自由软件。幸运的是,只有很少的软件会使用这些许可证。
另外,还有更重要的一点。很多产品会具备计算机的功能,上面会运行着自由软件。然而,如果你把这些自由软件做了修改,再安装回那些设备上,这行为则在很多设备上无法完成。换言之,这些设备制造商会禁止用户安装或运行修改后的自由软件(这包括许多Android设备),而只允许制造商授权的人或单位修改用户设备上的软件。我们把这种设备称作“tyrants”,即“专制暴君”;把这种行为称为“tivoization”。这个词源自TiVo公司生产的机顶盒。它们的机顶盒基于GNU/Linux系统,使用了很多自由软件。用户可以使用该产品,通过互联网观看视频节目。虽然TiVo公司按照许可证,发布了源代码,但是却禁止用户在机顶盒上运行自己的程序,或重新安装系统。这是我们见到的第一个“tyrant”。在这样的产品上运行的软件,哪怕是以自由软件许可证发布了代码,但是运行的二进制版本却不能被认为是自由软件。因为它们同样限制了用户的自由。而它们却符合开源软件的定义,因为开源软件仅仅通过软件许可证来界定开源和非开源。
关于“自由软件”和“开源”的常见误解
在英语中,“自由软件”,即 Free Software,这个词很容易被误解:Free一词既有免费的意思,也有自由的意项。而我们所谓的自由软件,则是“一类可以赋予用户指定自由的软件”。要解决这个问题,我们发布了自由软件的定义。为了方便理解,我们解释自由软件中 Free,是自由言论中所说的自由,而非免费赠饮中的免费。这显然不是个理想的解决方案,它无法完全杜绝这一问题。一个意思正确,又没有歧异的词显然更好些,不过前提是这词不会引起其他麻烦。
可惜的是,在英语中,能替换 Free 的词都多少有点毛病。我们考量了许多别人的建议,然而没有哪个比其他的更”正确“点(比如说,在某些情况下,法语和西班牙语中的“libre”一词更好点。可是印度的人就根本不认识这个词)。每个可能替代“Free Software”的词多少都会有些语义方面的问题—这显然也包括“开源软件”(Open Source Software)。
开源软件的官方定义(它是由开源促进会发布的,鉴于这个定义过长,就不在本文中全部引用了)是直接从我们对于自由软件的界定衍生而来。不过二者也有不同,在某些方面,开源软件的定义比自由软件更宽松。不过总体而言,开源软件的定义和我们自由软件的定义在很多地方都是等价的。
可是,“开源软件”的字面意思—同样也是人们普遍以为的意思—是“你可以看到源代码”。这样的意思比起自由软件定义来说要宽松的多,也比开源软件的定义宽松多。这样的字面意思囊括了很多既非自由也非开源的软件。
由于“开源”一词的字面意思与开源支持者的本意不同,导致很多人误解了这个词。这里引用一段Neal Stephenson文章中的话,“Linux是‘开源’软件,意思很简单,就是任何人都可以获得它的源代码”。我觉得Stephenson先生并非有意拒绝或者曲解开源软件的官方定义。恐怕他仅仅是望文生义,可惜误会了开源这词。堪萨斯州政府也曾发布了一份开源软件的简化定义:“开源软件(OSS)即一类计算机软件,用户可以免费且公开地获得其源代码;用户可以对其源代码做哪些操作,则根据软件的许可证规定各有不同”。
还有更糟糕的,纽约时报发表了一篇文章,把开源这词的意思完全拧了,文中将开源软件解释为内测版软件—就是给一小撮用户做测试的抢先版软件—这东西专有软件开发者在几十年前就发布过了。
开源的支持者们试图通过不断引用官方定义来解决这些误会。这方法显然没错,可直接引述定义对自由软件似乎更有效。“Free Software”一词字面上有两个意思,其中的自由之意是我们希望传达的。一个人如果能理解“自由言论而非免费赠饮”这句话,就不会再搞错该使用Free的哪个意项。然而,“开源”一词仅仅有一个字面意思,而这个意思与其本身要表达的意思又有所不同。结果就很难找一个简单的方法解释官方的定义。这就带来了更多的误解。
另外一个关于“开源”的误解是:开源软件意味着“不用 GNU GPL 许可证”。这个误解又常常伴随着另外一个误解:“自由软件就是使用 GPL 许可证的软件”。这显然是扭曲了自由软件和开源软件。GNU GPL 许可证也被认证为开源软件许可证。很多开源软件许可证也同时是自由软件许可证。除了GPL以外,还有很多自由软件许可证。
“开源”一词又一再地被引申到了各个领域,比如政府部门,教育,科学还有其他压根没有源代码的地方,以及和软件许可证根本扯不上关系的领域。它们唯一的共同点是:多多少少都是鼓励人们参与到某个活动中来。到头来,开源这词就被引申成了“参与性”,或者是“透明性”,或者还不如这些。最可悲的解释,则完全成了一个虚幻的商业流行词。
不同的价值观可以得到类似的结论…可惜总有例外
二十世纪六十年代,美国的极左派阵营曾由于意见分歧而党羽林立。尽管他们实际上有着相同的目的和价值观,但各个派别之间依旧水火不容,关系紧张。这使得右翼势力得以借力打力,进而攻击整个左派阵营。
由于自由软件和开源阵营存在的这种分歧,有些人就用美国极左阵营的例子,来告诫或是诋毁自由软件运动。不过现在的情况和当初极左阵营的情况正好相反:我们和开源软件阵营有着不同的目的和价值观,不过不同的观点却导致了很多相同行为—比如说开发自由软件。
于是大家看到的结果就是:来自自由软件运动的人和来自开源阵营的人经常一起在同一个项目中一起工作,比如一起开发软件。这是值得一提的:尽管大家观点不同,但却可能在同一个项目中工作。当然,我们和开源阵营各自不同的观点有些时候也可能会导致不同的行为。
开源的基本思路是:允许用户修改和再发布软件,是为了让软件更加强大和可靠。可惜这不是个必要条件。很多专有软件的开发者技术也很强。有些时候,哪怕专有软件不尊重用户的自由,依然可以开发出强大而可靠的软件。对于这个事实,自由软件支持者和开源阵营的人对此反应就会不同。
对于一个纯粹的开源狂热者来说—假设他没有被自由软件的理想所影响—可能会说,“你们(专有软件开发者)竟然没用我们的开发模型,还能开发出这么好的软件。这太让我感到意外了。能给我拷一份你们的软件吗?” 这样的态度会让专有软件的诡计得逞—剥夺我们的自由。
而自由软件支持者则会说,“您的软件非常吸引人,不过我更看重我的自由。很遗憾,我不得不放弃使用您的软件。我会支持一个项目,开发一个实现类似功能的自由软件。” 你若真心珍视你的自由,我们就可以用行动去捍卫它。
强大而可靠的软件,未必是个好东西
大家都希望软件强大而可靠,因为我们都觉得软件是为用户服务的。既然是为用户服务的,那强大而可靠的软件显然可以更好地服务用户。
但是必须要明确,只有当软件尊重用户的自由时,我们才说软件是在为用户服务。倘若软件本身就有意剥夺用户自由,为其设置各种障碍,那么如此的软件更强大仅仅意味着更多的羁绊,更可靠也就意味着这些障碍难以克服。现实生活中,恶意流氓的功能在专有软件中比比皆是:监视用户,限制用户,后门,强制升级等等。而一些开源软件支持者们竟希望在他们的开源软件中实现类似功能。
迫于电影和唱片公司的压力,越来越多的个人软件被设计得有意限制用户的行为。这种恶意功能的官方讲法是数字版权管理(参见DefectiveByDesign.org)。这种功能与自由软件的核心精神完全背道而驰。说起来,这已然不仅是精神层面背道而驰了,在实际操作上,DRM 的开发者们试图让用户无法修改软件,甚至将此视为违法行为。
尽管如此,一些开源软件的支持者们依然提议开发所谓“开源 DRM”软件。这背后的逻辑是:发布这些限制用户自由的软件的源代码,并且允许用户修改它,就可以造出更强大可靠的软件,来继续限制用户的自由。然后,这些软件会被拷贝到某个设备上一并卖到你手里,而那个设备则禁止你修改运行其上的软件。
这样的软件也许称得上是开源软件,并且也的确用的是开源的开发模式。但是它不可能成为自由软件,因为它根本没有尊重用户的自由。倘若说开源的开发模式可以成功地制造如此软件,并且让这些软件更强大更可靠,进而限制你我的自由,那只能说这次开源把一切变得更糟了。
令人生畏的自由
当年那些人之所以从自由软件运动中分裂出来,发起开源软件运动,主要原因就是因为“自由软件”的道德基础让不少人如坐针毡。的确如此,倘若说起道德,比如用户的自由,开发者的责任等等,往往会迫使人们去思考一些常被忽视的问题,好比说某些行为是否符合道德规范。这种说教确实会让人心生不快,有些人则因此把它们抛诸脑后,从此不闻不问。但这并非意味着,每当论及道德,我们就该退避三舍,闭口不谈。
遗憾的是,开源的领导者们恰恰是选择忽视了这些问题。他们意识到,只要在道德和自由方面装聋作哑,转而只讨论某些自由软件当下可以创收多少效益,就没准能让他们更高效地“卖”软件给一些特定用户,尤其是商业用户。
从这套理论的观点看,这方法倒也真算行之有效了。开源这词说服了众多商业和个人用户,使得他们他们开始使用,甚至开发自由软件,由此扩大了我们的社区。然而如此的扩张仅仅是表面上的,停留在仅仅关注实用的层次上。由于开源的哲学仅仅停留在实用层面,进而阻碍了人们理解自由软件更深层次的含义。它为我们的社区添加了新鲜血液,却没能教会那些新人如何维持这样一个社区。至此为止,倒也还好,但它还不足以捍卫自由。把用户吸引到自由软件社区来,仅仅是万里长征的第一步,他们还需要懂得去成为自己自由的维护者。
这些没能理解自由软件含义的用户,早晚会出于某些实用角度的考虑,再转投专有软件。无数的软件公司已经开始做出这样的尝试吸引用户使用专有软件,哪怕是发行免费的专有软件。用户只有在懂得珍视自由软件赋予他们的自由之后,才会拒绝如此诱惑。所以,我们必须反复强调自由,才能渐渐扩散自由的理念。“保持沉默”的信条在商业化的过程中可能会有用,但过分强调它,让热爱自由被视为自私,则会害了整个社区。
如此的危机恰恰是我们当前面临的。众多参与自由软件社区的人们,尤其是自由软件的发行商们,对于自由总是闭口不谈 — 往往是因为他们想要“在商业上被认可”。几乎所有 GNU/Linux 的发行版都会在其基础版中搀入专有软件。它们甚至将此宣传有一种优势,而非缺陷。
带有专有插件的软件,和含有专有软件的 GNU/Linux 发行版之所以有生存和发展的空间,就是因为我们社区中大多数人并没有坚守自己的自由。这并非巧合。大多数 GNU/Linux 用户是被“开源”一词吸引而来,而开源则没有把维护用户自由作为其目标。无视自由的言论口口相传,漠视自由的态度比比皆是。人人如此,互相影响。要扭转这样的局势,我们唯一能做的,就是更多地谈论自由,而非把它搁置一边。
总结
开源的支持者们把一个个用户拉入他们的阵营,而提醒用户维护自由的任务,则落到了我们自由软件支持者们的肩膀上。我们要敢于用比以往更大的声音说“这是自由软件,它才是真正尊重你的自由的软件!”—每当你把“开源软件”一词替换成“自由软件”的时候,你就是在支持我们的运动。
脚注
Lakhani 和 Wolf 在关于自由软件开发者动机的 论文 中提到,很大一部分开发者都认为软件本该自由,由此才参与开发自由软件的。可惜他们的调查的是SourceForge上的开发者,而SourceForge网站本身则并不认为软件自由是个伦理问题。