自由和开源软件

跳转至: 导航, 搜索
  • Live CD 和 DVD 上的所有的软件都是自由开源的,只有几个明显的例外(Flash、Opera、Acrobat Reader和更多)在非 oss 软件库。当我们谈论自由软件时,我们指的是自由(Freedom)而不是价格(Free of charge);
  • 推荐阅读另一篇相关的文档:Free and Open Source

时至今日,人们更多地使用 Free and Open Source 这个统称词组;前者(Free)指代自由软件基金会,后者(Open Source)指开放源代码促进会。而 Free and Open Source Software (FOSS,自由和开源软件)则是在此精神下诞生的产物。


何为自由(Free)

1984 年 Richard M. Stallman(理查德·斯托曼) 和 GNU 发起了自由软件运动,随后建立了自由软件基金会(Free Software Foundation)。

根据斯托曼和自由软件基金会的定义,自由软件赋予用户四种自由:

  • 自由之零:不论目的为何,有使用该软件的自由。
  • 自由之一:有研究该软件如何运作的自由,并且得以修改该软件来符合用户自身的需求。获取该软件之源码为达成此目的之前提。
  • 自由之二:有重新散布该软件的自由,所以每个人都可以借由散布自由软件来敦亲睦邻。
  • 自由之三:有改善再利用该软件的自由,并且可以发表修订后的版本供公众使用,如此一来,整个社区都可以受惠。如前项,获取该软件之源码为达成此目的之前提。

如果一软件的用户具有上述四种权利,则该软件得以被称之为 “自由软件” 。也就是说,用户必须能够自由地、以不收费或是收取合理的散布费用的方式、在任何时间再散布该软件的原版或是改写版,在任何地方给任何人使用。如果用户不必问任何人或是支付任何的许可费用从事这些行为,就表示其拥有自由软件所赋予的自由权利。

误区

1. 自由软件没有著作权

大部分的自由软件可以无需费用自由获取,并且它的源代码可以自由修改并散布,但它并不是没有著作权。著作权是当某项作品完成时就自然产生了,不需申请或注册,在自由软件的场合,仍然经常要求署名或维持相同许可。以本文为例,本文在写作的同时,作者即拥有著作权,任何人皆无法剥夺。而当用户花钱购买某套软件时,所购买的只是“使用权”,用户必须接受该软件的软件许可证才能使用这个软件;而软件的原作者则仍然保有其“著作权”。

2. 自由软件会使用封闭格式

封闭软件通常会使用专属的封闭格式,并且不允许用户分发,这极大地限制了用户的自由。而自由软件则完全不同,由于自由软件的源代码是公开的,所以它所使用的任何格式都是透明的。自由软件永远不会只发布专属的封闭格式软件来限制用户修改的自由。


何为开源(Open Source)

1998年2月,开放源代码促进会(Open Source Initiative, OSI)由布鲁斯·斐伦斯埃里克·斯蒂芬·雷蒙等人创立,启发于当时网景公司为了与微软的 IE 浏览器竞争,将他们的旗舰产品网景浏览器发布成自由软件。

一些对自由软件以及 GNU/Linux 感兴趣的人,打算用更符合市场口味的方式来介绍自由软件,试图在商业中找到合适的位置,减少意识形态上的沟壑。这导致了开放源代码(Open source,简称开源)这个称谓的产生,同时也导致与理查德·斯托曼及其自由软件基金会的分道扬镳。

开源的定义

虽然 OSI 的主要目的是使得源代码可为用户所获得,但 OSI 也在开源的定义中加入了其他的目标。

  • 自由再散布(Free Distribution):允许获得源代码的人可自由再将此源代码散布。
  • 源代码(Source Code):程序的可执行档在散布时,必需以随附完整源代码或是可让人方便的事后获取源代码。
  • 派生著作(Derived Works):让人可依此源代码修改后,在依照同一许可协议的情形下再散布。
  • 原创作者程序源代码的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本号码以与原始的代码做分别,保障原始的代码完整性。
  • 不得对任何人或团体有差别待遇(No Discrimination Against Persons or Groups):开放源代码软件不得因性别、团体、国家、族群等设置限制,但若是因为法律规定的情形则为例外(如:美国政府限制高加密软件的出口)。
  • 对程序在任何领域内的利用不得有差别待遇(No Discrimination Against Fields of Endeavor):意即不得限制商业使用。
  • 散布许可协议(Distribution of License):若软件再散布,必需以同一条款散布之。
  • 许可协议不得专属于特定产品(License Must Not Be Specific to a Product):若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必需要符合开放源代码的条件。
  • 许可协议不得限制其他软件(License Must Not Restrict Other Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的许可条件也要遵照开放源代码的许可。
  • 许可协议必须技术中立(License Must Be Technology-Neutral):意即许可协议不得限制为电子格式才有效,若是纸本的许可协议也应视为有效。

差异

形式上

开源软件和自由软件是两个不同的概念,前者(开源)覆盖的范围远比后者(自由)涵盖的范围要广阔得多。自由软件的定义比开源软件更加严格,能符合自由标准的软件也是开源软件,但符合开源标准的软件未必符合自由软件的标准。

内涵上

  • 一般而言,自由软件运动是基于政治及哲学思想(有时被称为所谓黑客文化),将尊重用户自由作为道德标准的理想主义运动,而开放源代码运动则主要注重使用开放的开发方式,尽可能的使软件优化。
  • 自由软件和开源软件在理念上的冲突是常有的,自由软件基金会不认可开放源代码促进协会拥抱商业化,忽视用户的 “自由” 权利的现实主义理念;而开放源代码促进协会也不赞同自由软件基金会将道德强加于人的理想主义观念。

自由开源软件的馈赠

自由以多种方式回馈用户。若没有获得代码修改并发布的权力,像 openSUSE 这样的发行版是不会出现的。

修改软件

自由意味着您可以消除软件的 bug,或修改以执行您的要求,甚至修正安全问题。若是闭源软件,您只有等待提供者添加功能或消除 bug,他们并非都遂您的愿。

分享

自由软件允许您分享软件,免除许可的顾虑,去帮助朋友与邻居。

知晓并控制

您可能并不了解闭源软件究竟都做了什么,曾发现一些非常知名的闭源软件有侦察用户并发送信息等行迹,闭源软件还有设置种种用户何时、做何事、多久等限制的趋势。而开源软件不仅可以让您查看源代码以了解程序行为,还可以改掉所不喜欢的部分。

技术上的优点

开源使得所有的人均能查看代码并改进软件,这能使软件更快更好地发展,这种 “同行评审” 系统堪比科研工作方式。相形之下,闭源的代码就非开发公司外者所能看得到的了。

经济上的优点

这也是一种公司间共担开发费用的方式。例如 Novell 和 Red Hat 曾是竞争对手,开发了许多相似的程序,但他们现在互相协助。IBM 和 HP 也可以认为是竞争对手,他们都贡献了 Linux 的内核代码等,现在共担开发费用。

自由软件营造了一种可能间接强调了支持质量的提供支持服务的竞争市场,而闭源软件实际上只有能查看源代码的开发者能提供全面的支持服务,这造成了垄断。


我不是程序员,为何关注

大多数这些自由需要您能读写代码以直接获益,然而即使您不懂代码,也可以籍由他人获益而获益。您还可以加入他们,付一点小费给程序员以修改您喜欢或需要的程序。不过,至少,您可以免费使用 openSUSE。


外部链接

参考