比尔盖子 博客

软件开放自由的文字游戏

这几个词的混用问题,已经存在了 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 —— 一款街机游戏模拟器,它禁止商业用途而“沦为”“公开源代码的软件”。

Categories: IT生活

虚拟主机迁移 » « 树莓派搭建 PPPOE 无线路由器

2 Comments

  1. 还有一个 GNUPlot。
    虽然名字里有 GNU 却和 GNU 半点关系都没有,而且是开放源代码的非自由软件……
    Minix 也算是开放源代码的非自由软件,还有一塌糊涂 BBS 的 BBS 软件也是开放源代码的非自由软件。这样的软件往往是给学生学习研究用的时候可以免费。

发表评论

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Copyright © 2023 比尔盖子 博客

Theme by Anders NorenUp ↑