用了这么久开源社区,还搞不明白免费/自由/开源软件?
在开源社区中,有很多人经常把免费软件、自由软件、开源软件这三个概念混淆在一起。
今天就来和大家谈谈这三个软件到底有什么不一样。
免费软件
用户可以免费使用该软件,但通常会有其他权限的限制:
1.源码不一定会公开/不能修改软件源码;
2.限制拷贝的代码数量和段落;
3.不得用于商业用途、不能以该软件牟利、仅供个人使用、仅供学习交流使用等等,如果有人未经作者允许则随意散布、传播,作者有权进行追责;
4.限制使用者研究、修改和再散布的权利;
免费软件免费的目的无非出于:
先提供免费版本软件扩大市场占有率,当用户多了,免费软件再采用一些其他的增值服务等等手段来收费。
自由软件
“自由软件”并不意味着售价为0,它更多地关乎自由的问题,软件如何定价并不影响它是否被归类为自由软件。
来自自由软件基金会(FSF)对自由软件的判断标准,如果程序的用户具有以下四项基本自由,才能被称为“自由软件”:
自由度0:可以按照用户意愿,自由地运行该软件。
自由度1:用户可以自由地学习并修改该软件。
自由度2:用户可以自由地分发该软件,让他人进行拷贝。
自由度3:用户把改进后的软件分享给整个社区令他人也从中受益。
其中自由度2、3的前提是,用户必须可以访问到该软件的源代码。
自由软件更像是一种观念,一开始是由支持自由软件的人士所发起的运动。
他们反对软件和数据私有化,认为这种知识产品应该共享,从而避免程序员们开发相似的系统造成重复浪费,让程序员们有时间和精力去开发更高效的东西。
这种过于理想化的思想在商业化社会中是很难行得通的。
在商业软件和自由软件的拉锯战中,开源软件就此诞生,它既满足了“知识共享”的理念,又允许人们加以修改从中谋利,进而促进人们创造知识产品的积极性。
开源软件
经过上面的解释不难看出:开源软件是指软件发行的时候附上源代码,授权用户可以修改、自由散布、衍生产品的权力。
●开源带给我们的好处是什么?
第一,软件本身得到了最大范围的使用。
开源一个软件之后可以让更多人根据自己的实际需求进行改写。
第二,软件开发程度可以不断迭代。
从软件本身的角度,开源,让更多的人参与,集思广益有助于软件的完善,开发出更优秀的软件。
第三,社会财富充分流动。
从软件行业的角度,极大的提高软件开发的生产力,我们能够自由的复用别人的开发成果,而避免重复劳动。通过开发的源代码,让软件开发者更好的学习。
●有哪些开源协议,他们有什么异同?
1.GPL:
该协议就是GNU运动发布的协议,GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用。
但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。
这也是 GPL代表的自由软件和普通开源软件的最大区别所在。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。我们熟知的Linux就是在GPL下发布的。
2.BSD协议:
BSD开源协议是一个给予用户自由度很高的协议,在该协议下,用户可以自由的使用、修改源代码,也可以将修改后的源代码作为开源软件或者私有软件发布。
BSD是对商业集成很友好的协议,BSD协议鼓励代码的共享、重用,但是要求尊重作者的著作权。
3.Apache Licence 2.0:
Apache Licence 2.0 是著名的开源组织Apache所采用的协议,和BSD很类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。
我们熟知的Tomcat、Apache、Hadoop等等都是在Apache协议下发布的。
●开软是否暴露缺点,带来安全隐患?
既然已经开源了,说明软件的缺点和安全问题都暴露在大众面前了,这样是不是会带来一定的安全隐患呢?
事实上并非如此,一个软件即便不开源,只要一个黑客的技术足够,他想找也一定能找到漏洞从而攻破它。
但是通过开源,这么多的开发者总会有人发现漏洞的,开发者们有源代码,也发现了漏洞,就可以及时对软件作出改进。
所以想要真正的安全,开源是一个不错的选择。过去20多年来已经证实,“越开放,越安全”。