更新时间:2023-08-18 10:29:34
不知您是否已经注意到,在软件开发的行业中,各种字面相近、甚至相同缩写的技术术语层出不穷。它们往往会让我们在概念上相互混淆,甚至有些“找不到北”。其实,在各种不同的重要场景中,我们应当尽量采用准确的术语,来清晰地表达上下文的意思,并避免给读者产生歧义。
自由软件、开源软件、免费软件,这三个业内最常见出现的软件术语,想必您很难用一句话就说出它们之间的区别。本文将重点和您讨论这三个术语之间的主要区别,以便您在构建技术类产品时,能够做出正确的选择。
自由软件(Free Software)
首先,我们必须弄清楚的是:所谓“Free Software”中的“free”一词强调的是自由,而不是价格上的免费。因此,为避免英语歧义,有时人们也称为:libre software。
支持自由软件开发的非营利组织--自由软件基金会(Free Software Foundation,FSF,请参见-)是这样定义的:“自由软件是指那些授予用户自由共享,学习和修改权利的软件。”该名称由FSF在上个世纪八十年代所创造。也就是说,您可以对此类软件做任何想做的事情,甚至可以对其原有版本进行改进,进而从中获利。
在FSF的定义中,自由软件必须遵守如下四个“自由支柱”(注意这些是权利而不是义务):
FSF同时强调:自由软件不仅仅局限于非商业用途。如果某个商业软件程序能够允许用户间接获取上述“自由”,那么它也属于该类型。
此外,与免费工具不同的是,由于用户可以自由地进行修改,因此自由软件允许用户访问其源代码。
从理论上说,任何自由软件的许可证,都应该使得用户能够从上述四点中受益。这些许可证既可以是保护性的,也可以是非保护性的。其中,前者将要求其使用者维持软件原有的使用,研究,分发和修改等权利(也就是业界经常提到的:著佐权,copyleft)。而后者则允许使用者在二次分发时修改这些权利。
以下是最常用来定义自由软件的三种许可证(请参见)类型:
在完全尊重自由性的方面,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是两款最常见的免费软件。它们虽然可以被免费使用,但是其源代码并不对外公开。在实际商业环境中,大多数开发人员通常会选择将免费软件作为免费增值的服务、或以共享软件的形式进行销售,以便鼓励用户购买其对应的、功能更为强大的版本。这里的免费增值服务是指那些免费提供的程序,它们往往需要用户花费更多的钱,才能获得额外的、更为全面的功能。
可见,免费共享软件就是指那些最初无需任何附加费用,即可使用的程序。它们鼓励用户去分发其副本。不过,此类不收费期往往只会持续一段时间。过期以后,用户还是需要付费才能继续使用。
结论
综上所述,无论您是在开发构建手机游戏、加密货币交易的机器人、还是网站等其他技术产品,都请确保使用正确的术语,来进行准确地描述。此外,如果您想将创建好的程序免费地发布到某个开源社区,也请确保事先进行了足够的研究,透彻了解了所选许可证的局限性和相关责任。