20

自由软件、开源软件、免费软件,您真的分得清吗?

 4 years ago
source link: http://developer.51cto.com/art/202006/618518.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【51CTO.com快译】不知您是否已经注意到,在软件开发的行业中,各种字面相近、甚至相同缩写的技术术语层出不穷。它们往往会让我们在概念上相互混淆,甚至有些“找不到北”。其实,在各种不同的重要场景中,我们应当尽量采用准确的术语,来清晰地表达上下文的意思,并避免给读者产生歧义。

qmERry3.jpg!web

自由软件、开源软件、免费软件,这三个业内最常见出现的软件术语,想必您很难用一句话就说出它们之间的区别。本文将重点和您讨论这三个术语之间的主要区别,以便您在构建技术类产品时,能够做出正确的选择。

自由软件(Free Software)

首先,我们必须弄清楚的是:所谓“Free Software”中的“free”一词强调的是自由,而不是价格上的免费。因此,为避免英语歧义,有时人们也称为:libre software。

支持自由软件开发的非营利组织--自由软件基金会(Free Software Foundation,FSF, 请参见- )是这样定义的:“自由软件是指那些授予用户自由共享,学习和修改权利的软件。”该名称由FSF在上个世纪八十年代所创造。也就是说,您可以对此类软件做任何想做的事情,甚至可以对其原有版本进行改进,进而从中获利。

在FSF的定义中,自由软件必须遵守如下四个“自由支柱”(注意这些是权利而不是义务):

  • 可以在任何使用环境中自由地部署软件,而没有任何限制。例如,某个程序的许可证会在30天后过期,那么它就不是自由软件。
  • 可以自由地研究软件的工作方式,并能够根据实际需要和偏好进行修改。
  • 可以自由地二次分发(re-distribute)某个软件,以帮助有需要的人。此处的二次分发既可以是有偿的,也可以是无偿的。
  • 可以自由地增强软件的性能,并发布增强的功能,进而让社区(各种程序员或非程序员)能够从中受益。此类行为既可以是有偿的,也可以是无偿的。

FSF同时强调:自由软件不仅仅局限于非商业用途。如果某个商业软件程序能够允许用户间接获取上述“自由”,那么它也属于该类型。

此外,与免费工具不同的是,由于用户可以自由地进行修改,因此自由软件允许用户访问其源代码。

从理论上说,任何自由软件的许可证,都应该使得用户能够从上述四点中受益。这些许可证既可以是保护性的,也可以是非保护性的。其中,前者将要求其使用者维持软件原有的使用,研究,分发和修改等权利(也就是业界经常提到的:著佐权,copyleft)。而后者则允许使用者在二次分发时修改这些权利。

以下是最常用来定义自由软件的三种许可证( 请参见 )类型:

  • MIT(麻省理工学院)许可证:这是一种相对宽松的软件授权条款,但是对于软件的重用场景,是有所限制的。
  • GNU通用公共许可证v2:这是一种著佐权类型的许可证,它允许用户可以自由运行,研究和改进软件。
  • Apache许可证v2:这是一种许可性的证书,要求保留版权声明和免责声明。
  • BSD许可证系列:它们是一组非著佐权类许可证,在使用和二次分发软件方面提供了最小的限制。

在完全尊重自由性的方面,Linux操作系统算是自由软件领域最典型的一个范例了。其中我们比较熟悉的一个发行版便是赫赫有名的Debian。

开源软件(Open Source Software)

虽然术语名称有所不同,但是开源软件与自由软件在含义上比较相近。它们有着一套相似的许可证和软件权限。

支持开源软件开发的非营利组织--Open Source Initiative(OSI, 请参见 )极力倡导:任何开源软件都必须遵循如下标准:

  • 可以被免费进行二次分发。
  • 源代码应当公开、可用。
  • 可以与原始软件不同的格式进行修改和分发。
  • 软件本身不应歧视任何个人或团体。
  • 软件本身不应限制其他软件的使用或调用。

尽管这两个术语都源于支持自由软件的思想(包括上面提到的使用,研究,共享和修改的权利),但是从历史上看,自由软件的叫法早于开源软件,而且它们的目标和理念也有所不同。

开源一词是在上个世纪九十年代后期,针对自由软件的限制而引入的。实际上,OSI让它具有了“教育和倡导开放式开发流程的优势”( 请参见 )。开源软件“提供了一种与潜在的软件用户和开发人员相互动的宝贵方法。通过一个具有互动参与性的社区,大家可以创建新的或改进原有的源代码。”可见,“开源”一词强调了自由软件的一个实际好处便是:支持各种软件开发项目中的协作。换句话说,开源是一种更加面向业务的开发理念,而自由软件则是一种针对社会和道德的哲学。正是由于“开源”一词较少地强调了自由性,因此它更为企业所接受。

我们以Android移动操作系统为例,它属于开放源代码类软件,但是不能被称为自由软件。其原因就在于它没有遵从上述四个“自由支柱”。

为了最大程度地减少误解,并避免自由软件和开源软件之间的术语之争,业界在后续又出现了诸如FOSS(free and open source software)和FLOSS(free, libre, and open source software)之类的其他术语。

免费软件(Freeware)

免费软件是指您可以在不产生任何费用的情况下使用某个软件。与开源软件和自由软件不同,免费软件给最终用户提供了最小的自由度。一般而言,用户虽然可以免费地使用某个软件,但是在未经作者许可的情况下,通常无法对其进行修改,调整,以及二次分发。可见,免费软件通常是在不包含其源代码的情况下被共享使用的,这是和开源软件、以及自由软件的本质区别。

Skype和Adobe Acrobat Reader是两款最常见的免费软件。它们虽然可以被免费使用,但是其源代码并不对外公开。在实际商业环境中,大多数开发人员通常会选择将免费软件作为免费增值的服务、或以共享软件的形式进行销售,以便鼓励用户购买其对应的、功能更为强大的版本。这里的免费增值服务是指那些免费提供的程序,它们往往需要用户花费更多的钱,才能获得额外的、更为全面的功能。

可见,免费共享软件就是指那些最初无需任何附加费用,即可使用的程序。它们鼓励用户去分发其副本。不过,此类不收费期往往只会持续一段时间。过期以后,用户还是需要付费才能继续使用。

结论

综上所述,无论您是在开发构建手机游戏、加密货币交易的机器人、还是网站等其他技术产品,都请确保使用正确的术语,来进行准确地描述。此外,如果您想将创建好的程序免费地发布到某个开源社区,也请确保事先进行了足够的研究,透彻了解了所选许可证的局限性和相关责任。

【原标题】Free Software vs Open Source vs Freeware: What's the Difference? (作者: Dr. Michael Garbade )

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK