这几个词的混用问题,已经存在了 10 年之久。任凭自由软件基金会,开源软件基金会如何费尽口舌的解释,很多人仍然对这些概念不求甚解。
免费软件(Freeware)
免费软件这个定义相当的宽松——泛指一切不需使用费用购买的软件。即使你这个软件有着相当夸张的使用许可证,只要(在某些情况下)不用支付任何费用,那么它就是免费软件。
自由软件(Free Software)
自由软件,是以 GPL 许可证为代表,可以不受限制地自由使用、复制、研究、修改和分发的软件。虽然自由软件通常是免费的,但并不完全如此(记得RHEL吗)。因为按照 GPL 许可证,不单独出售自由软件,就是合法的,因此 GPL 允许商业行为。同时,BSD 等多种许可证也是符合自由软件定义的。
但自由软件是 Free Software,如果你说你的软件是 Free Software,人们听到之后就会:这个 Software 是 Free 的,不要钱。尽管自由软件基金会如何强调,以至于说完 Free Software 之后就本能的补充 Free As In Freedom,但收效甚微。威力避免歧义,除了下文中的 Open Source Software 之外,其实我更喜欢一种不太流行的说法:Libre Software。
另外,BSD 许可证也是一种自由软件许可证。部分 BSD 的支持者,而且同时是 GPL 的反对者认为:GPL 许可证过于严格,根本不自由,把以这种许可证发布的软件成为“自由”软件颇具讽刺意味。但另一部分人不认同这种观点:法律剥夺了你使用奴隶的自由,你就说这个国家的公民不自由?通常认为,若要严格的保证软件能永久的自由,GPL 许可证是不二选择。
开源软件(Open Source Software)
因为自由软件一词存在歧义,Raymond 提议创立新名词 Open Source Software,这样就可以打消所有的疑虑了,而后来的营销活动也恰恰证明了这是非常正确的决议。如同自由软件,开源软件也允许商业行为。
从“消除歧义”这一点上,Stallman 是非常支持“开源软件”这个名词的。但“开源软件” 还自由吗?因此,很多自由软件的支持者认为开源软件是偷换概念,将“自由”这一属性去除,仅仅留下“开源”的性质,最终留下一堆可以看到源码却丝毫不自由的软件。当然,“自由软件”也是“开源软件”的一个子集,但如果你混淆这两个名词,就做好迎接无限麻烦的准备吧。
但实际上,“开源软件”概念在创立之初就已经考虑到“可以看到源码却丝毫不自由的软件”的危害了。因此”开源软件“在其定义中作出了严格的限制,只有符合限制条件的软件才能被称作”开源软件“,而其它不符合的仅仅是”公开源代码的软件“。然而,“自由软件”的标准又比“开源软件”严格。
- 公开源代码的软件 – 不自由
- 开源软件 – 自由
- 自由软件 – 高度自由
- 由于这三者之间都是涵盖的关系,所以判定自由度时以其可以满足的“最严格”标准来算。
因此,把这两类软件通常为”开源软件“是最安全的,但实际上,由于两者之间的矛盾,我建议大家把这两类软件统称为 FOSS (Free and Open Source Software) 以示对两派人的尊重。
公开源代码的软件(通用英文说法是?)
不符合“开源软件”定义的,由于其自由度不够,其充量就是公开源代码的软件,而不能自称“开源软件”。收费的,可以叫“公开源代码的商业软件”;不收费的,就叫“公开源代码的免费软件”。最坏的情况下这些软件可能仅仅只能让你浏览源代码,但不能借鉴也不能做丝毫修改,有些公开源代码的软件声称自己是开源软件,通常都会遭到社区的谴责和非议。
太严格了
有些软件作者不愿意让商业资本参与进来,直接在许可证中禁止一切商业用途,确实是相当严格。但实际上这违反了”自由软件“和”开源软件”的定义,也是不自由。“自由软件”和“开源软件”希望在自己的利益不被侵害的前提下,允许任何性质的使用,同时包括商业用途。对于这样严格的软件,我们不妨给它个客气点的说法:准自由软件。
这方面著名的例子是 MAME —— 一款街机游戏模拟器,它禁止商业用途而“沦为”“公开源代码的软件”。
2013年05月05日 — 12:52
还有一个 GNUPlot。
虽然名字里有 GNU 却和 GNU 半点关系都没有,而且是开放源代码的非自由软件……
Minix 也算是开放源代码的非自由软件,还有一塌糊涂 BBS 的 BBS 软件也是开放源代码的非自由软件。这样的软件往往是给学生学习研究用的时候可以免费。
2013年05月05日 — 14:35
新版 Minix 已经是 BSD 风格许可了。谭宁邦当时要是把 Minix 代码开放,也能省下 Linus 许多口水啊。