很多人经常会把自由软件开源软件有哪些、开源软件、免费软件这几个概念加以混淆,下面我来对这几个概念进行相关介绍,希望能对你有所帮助。
自由软件(Free Software)来自理查德·斯托曼(Richard Matthew Stallman,自由软件的精神领袖)对自由软件的定义:
自由软件的重点在于自由权,而非价格。要了解其所代表的概念,你应该将“free”作为“free speech”中的自由,而不是“free beer”中免费来理解。
注:在英语语境中,free一词同时可表示“自由”与“免费”两个意思。
自由软件代表用户可以自由地运行、拷贝、分发、学习、修改并改进该软件。
来自自由软件基金会(FSF)对自由软件的判断标准:
如果一个软件是自由软件,那么它必须为用户提供以下四项基本自由:
(1)自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。
(2)自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。
(3)自由度2:用户可以自由地分发该软件的拷贝,这样就可以助人。
(4)自由度3:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。
一个软件只有提供了以上所有的四项基本自由给它的用户,才可以被成为自由软件。否则,它就是非自由的。
自由软件的核心在于自由。
作为自由软件的用户,无论你是如何获得的拷贝(花钱购买,或者免费获取),你的四项基本自由都会被保证,你可以自由地运行,修改,发布甚至出售你拿到的自由软件。
自由软件与价格无关。
大部分自由软件是通过互联网自由发布,用户无需付费即可自由获取。由于自由软件许可协议(如GPL)并不限制贩卖自由软件或者提供商业服务,因此,自由软件也可以是商业软件,人们可以用任何价格来贩售这类自由软件。
自由软件是与专有软件(Proprietary Software)相对的概念。
专有软件是指在使用、修改、分发上有限制的软件。这些限制是由软件的所有者制定的。这些限制是通过法律或者技术上的手段实现的,有时这两种手段被同时采用。最常见的技术限制方式是保留能够被大家读懂的源代码,而只发布只有计算机才能读懂的程序(如二进制格式)。法律上的限制包括使用著作权(附带软件许可证)和专利。这些程序的源代码往往被其持有者视为商业机密。如果第三方要查看源代码时,往往需要签署保密协议。
自由软件和专有软件的定义与是否收取费用无关,自由软件和专有软件都可以免费或收费分发。区别在于:
- 自由软件源代码是公开的,可以被任何持有者随意分发,相关的复制以及服务费用也可自行决定;
- 专有软件通常会使用专属的封闭格式,其的所有者可以决定是否可以分发该软件、以及费用。
大多数自由软件都使用类似的自由软件许可协议,常见的自由软件许可有:
- The GNU General Public License v2(GPL v2)
- The GNU General Public License v3(GPL v3)
- The GNU Lesser General Public License(LGPL)
- The MIT License
- The BSD License
- The Apache License
- The Mozilla Public License (MPL)
开源软件(Open-source Software)开源软件(Open-source Software)是一种源代码可以任意获取的软件。这种软件的著作权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改以及以任何目的向任何人分发该软件。只要符合开放源代码定义的软件就能称为开源软件。大多数的开源软件同时也是自由软件。
开放源代码的定义如下:
- 自由再分发(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):意即许可协议不得限制为电子格式才有效,若是纸本的许可协议也应视为有效。
公开源代码的软件并一定就能称为开源软件。
有些软件的作者只将源代码公开,却不符合“开放源代码”的定义及条件,因为作者可能设置公开源代码的条件限制,诸如限制可阅读源代码的对象、限制派生产品等,此称之为公开源代码的免费软件。例如知名的网络论坛软件Discuz!。
免费软件(Freeware)免费软件(Freeware)是一种无须付费即可获取的软件,但通常会有其他的限制。
常见限制包括:
(1)限制软件仅能以特定方式使用,例如仅供个人使用、仅供私下使用、非商业使用、不得以此牟利、仅用于学术用途、仅用于教育用途、仅供慈善团体或人道主义团体使用、不得用于军事用途、用于公家机关,或各种限制的任何形式组合(例:授权形式可能是“私人使用免费,不得用于商业用途”);
(2)软件授权也可能施予其他使用限制,例如限制在网络上使用、限制在服务器上使用、限制与某些软件或某种硬件结合使用、禁止在网络上散布软件,仅能提供作者网站链接、不得未经作者同意便散布软件、限制复本拷贝数目等;
(3)其他的限制:例如禁止反编译软件以研究软件代码、禁止修改软件源码等。
免费软件是与商业软件(Commercial Software)相对的概念。
- 商业软件通常需要收取使用授权费以营利,但有时基于商业目的,如想让“收费版”软件(专业版、商业版)扩大市占率,而以免费方式提供免费版(免费版、个人版)软件。
- 免费软件以免费方式给予授权。可能是不限时间可用全部功能;或是仅具备部分基本功能,但同时提供有全部功能的商业版;亦或是共享软件。
小结最后简单总结如下表:
注:本回答参考了GNU官网、维基百科上关于“自由软件”、“开源软件”、“免费软件”词条内容等信息。