在开源社区中,有很多人经常把免费软件、自由软件、开源软件这三个概念混淆在一起。

今天就来和大家谈谈这三个软件到底有什么不一样。


免费软件


用户可以免费使用该软件,但通常会有其他权限的限制:

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多年来已经证实,“越开放,越安全”。

用了这么久开源社区,还搞不明白免费/自由/开源软件?相关推荐

  1. 开放共建,长安链开源社区获中国科协“科创中国”优秀开源社区奖

    2月20日中国科协主办的2023年"科创中国"年度会议上发布2022年开源创新榜,长安链开源社区荣获"优秀开源社区"荣誉. 社区是开源发展的底座,是技术创新的方 ...

  2. 2013年度开源社区年会,3W咖啡免费让你更多接触开源

    地点:3W咖啡 时间:2013年12月29日12:30 - 17:30 会议介绍 活动由开源力量.CSDN CODE和各开源社区共同主办. 活动邀请到中国本土开源项目创始人.核心贡献者齐聚一堂,共话开 ...

  3. 开源?结缘!Towhee 开源社区与上海人工智能实验室 OpenDataLab 成为开源生态合作伙伴

    今天,很荣幸向 Towhee 开源社区的伙伴和用户们.Milvus 开源社区的生态伙伴们分享这份喜悦:我们与上海人工智能实验室 OpenDataLab 在开源领域建立了合作伙伴关系! 希望在接下来的持 ...

  4. 整合开源治理经验,共谋开源社区发展|2023 开放原子全球开源峰会开源社区治理与运营分论坛即将启幕

    在数智时代广泛连接.同步演进和网状协作特性的催化下,开源社区正在成为技术应用和行业数字化发展的重要推动力量.开展数字技术开源社区的有效治理,对调和相互冲突的内外部需求.协调相互竞合的参与主体.整合差异 ...

  5. 墨天轮访谈 | 叶金荣:GreatSQL开源社区——做中国广受欢迎的开源数据库

    分享嘉宾:叶金荣 万里数据库开源生态负责人 整理:墨天轮社区 导读 大家好,我是来自万里数据库的叶金荣,GreatSQL开源社区的愿景是做中国广受欢迎的开源数据库,这也是我今天分享的主题. Great ...

  6. 知识图谱开源社区_您需要了解的关于开源社区中的倦怠的知识

    知识图谱开源社区 今年年初,我筋疲力尽. 碰巧的是,当时我也在研究倦怠的话题. 我花了一些时间将自己的研究和经验总结出来. 最近,国际疾病分类将倦怠归类为职业现象. 它把倦怠定义为"概念化的 ...

  7. 如何加入Apache开源社区:Apache ServiceComb (incubating) 微服务开源项目实例讲解

    近期,热衷开源和微服务的伙伴们非常关注如何加入到 微服务 开源项目 Apache ServiceComb (incubating) 社区.Apache ServiceComb 作为开源的Apache软 ...

  8. 还搞不明白“响应式编程”,那得看这篇

    响应式编程详解 响应式编程是一种基于异步数据流驱动.响应式.使用声明式范式的编程模型,需要遵循一定的响应式编程开发规范,并且有具体的类库实现.响应式编程基于数据流而不是控制流进行业务逻辑的推进. 响应 ...

  9. 【C语言】还搞不明白结构体吗?不妨来看看这篇文章,带你初步了解结构体

最新文章

  1. liunx配置本地yum源和更新aliyun yum源
  2. Android中minSdkVersion、targetSdkVersion、maxSdkVersion的作用
  3. [剑指offer] 数组中只出现一次的数字
  4. [CF1442 D] Sum(分治优化dp + 结论)
  5. 手把手一起 图形化安装 k8s 集群
  6. 如何妥善处理WebBrowser对Javascript的错误问题,阻止JS弹出框,提高用户体验(原创)...
  7. C++中使用模板,new创建2维动态数组
  8. 在搭载苹果M芯片的 Mac 上重新安装 macOS 时收到个性化错误怎么办?
  9. [状压dp][剪枝搜索] 洛谷 P2831 愤怒的小鸟
  10. IDEA自定义注释模板
  11. Mac升级文件不见了怎么恢复?
  12. ueditor如何改变图片大小等比缩放
  13. 三大跨境电商平台开店必备的材料
  14. matlab 符号微积分
  15. 我的Java学习之路2009-11-17
  16. 史上最全Elasticsearch学习
  17. 实验室第一次考核(C语言)
  18. STM32cube HAL库两条命令实现i2c通信---Nucleo L476RG用I2C实现tmp117模块温度读取并串口打印
  19. 对核函数(kernel)最通俗易懂的理解
  20. 计算机程序执行的两种方式:解释执行和编译执行

热门文章

  1. 更多丰富内容,请转移至博主的个人博客——SeaDream乄造梦
  2. python模块安装(大合集)
  3. 漏洞通告 | Atlassian Confluence存在远程代码执行漏洞,悬镜云鲨RASP天然免疫防护...
  4. 【JAVA面试题】java面试题100道详解
  5. pyqt5 制作壁纸切换工具实例 第一章
  6. 使用Vmware虚拟机装载Linux系统如何联网
  7. 伪静态、静态、动态url
  8. ERP系统有哪些品牌?
  9. 给一个向量进行归一化
  10. ZYNQ-Linux设备树驱动下的双DMA循环切换传输数据