liukai 发表于 2023-12-2 11:39:01

明白:趣谈自由软件与开源软件


  简而言之,自由软件是一种高尚的价值观,而开源软件则是一种实用主义。漏洞代码片段https://www.checode.cn/西安奇科厚德信息科技有限公司是一家专注于软件成分分析系统,开源代码合规性和安全性检测的高新技术企业,公司致力于开源软件测试技术的研究,开发了具有完全自主知识产权的Checode开源助手代码检测分析系统,漏洞猎手,开源助手,软件溯源,开源代码检查工具,成分分析测试软件,源代码安全检测系统,软件成分分析系统!
https://img0.baidu.com/it/u=2129863070,4163182092&fm=253&fmt=auto&app=138&f=JPEG?w=320&h=180

  今天的程序员,说起开源软件,相信没有人不知道。

  开源生态已经成为一种强大的存在,从语言,框架,工具到各种软件,开源的东西可谓应有尽有,一应俱全。

  但在开源软件之前,还存在另外一个很重要的概念,可能现在有非常多的程序员并不是非常熟悉这个概念,那就是:自由软件及其背后的自由软件运动

  从本篇开始,我将谈论这个非常有趣的话题,那就是自由软件与开源软件

  这是第一篇

  其实,很长一段时间内,我也不太清楚什么是自由软件,对它也没有太多概念。更不知道它与开源软件的方方面面的有趣的事情。我相信这个现象在国内程序员或业界应该也是普遍存在的,许多人也并不非常了解或甚至没有听过自由软件这个概念及它背后的理念。

  一直以来,国内更流行的概念是开源,使用开源,推广开源。从阿里2008年发起去IOE运动以来,开源的理念在国内业界早已深入人心。

  阿里去IOE靠的是什么,当然就是开源了。

  开源的理念对程序员来说早已是家喻户晓了,但与开源有千丝万镂关系的另一个概念自由软件,却处于一种相对较为尴尬的处境,它所倡导的理念及它本身在国内并不为人非常熟悉。

  最开始听说与自由软件相关的理念,是FOSS这个概念。

  在我浏览国外技术文章的过程中,最经常遇到FOSS这个词,后面无意间我才知道这个词代表的是Free and Open Source Software,由于不知道自由软件的概念,我一直认为这个代表的是“免费与开源软件”的意思。后面经过查阅才理解,原来它真正的意思是”自由与开源软件“

  什么是自由软件?我第一次非常好奇这个概念

  而后在寻找CentOS的替代服务器版本时,一路寻找到Debian这个发行版本。而在Deiban官网的首页中,它们对宣称自己是:

  Debian是一个完全自由的操作系统

  它们说自己是完全自由的操作系统,没有说自己是开源免费的操作系统。我一直以来对Linux这种操作系统的理解都停留在它们都是开源免费的,并没有自由的理解在内。

  而后在Debian的"我们的理念“文章中,我真真正正看到了一个基于自由理念信念下的自由的操作系统是怎么一回事了。

  这里,当我们使用自由(Free)这个词时,我们关心的不是金钱,而是软件自由。

  首先可以肯定一点是,自由软件与开源软件肯定是不一样的,不然也不需要用另一个名字。事实上,开源软件是从自由软件中衍生出来的,这一点后面再说。

  自由软件关注的是使用软件的自由

  自由软件是由以下四个自由来定义的,它们包括

  自由之零:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。自由之一:用户可以自由的学习与修改软件,那做为这个的前提,用户是要能自由的访问到软件的源码自由之二:用户可以自由的分发软件给别人,以帮助他人自由之三:用户可以自由的分发修改后的软件版本,以使整个社区从修改中受益。

  当一个软件满足了上述四个要求之后,就可以称自己为自由软件

  自由软件的倡导者认为,不满足上述要求的软件,就是非自由软件,按照上述标准,有非常多的开源软件并不完全满足这个标准。

  自由软件的关注点在于使用软件的自由,它将专有软件或叫私有软件视为对立。

  自由软件运动是为用户的计算自由而战斗。

  自由软件带有比较明显的个人印记,直到现在仍是如此。推动自由软件的核心人物是:Richard Stallman

  这里简要列出一些有关自由软件运动的历史,有助于大家对自由软件运动有更好的理解。

  发起GNU运动 1983年

  自由软件的创始人Richard Stallman在1983年,就发起了一个叫GNU的运动,也就是开发一套与Unix完全兼容,并且100%完全自由的操作系统。

  这就是GNU运动。GNU是一个集合,代表着构建一个完全自由的操作系统的所有方面,从内核到编译器,到桌面等。比如Gnome属于GNU的一部分。GCC也属于GNU的一部分。GNU也有自己的内核 - Hurd (还在开发中)

  事实上,现在大家熟知Linux系统中相当一部分的软件都属于GNU。

  成立自由软件基金会 1985年

  GNU并不是Richard Stallman一个人在开发,有许多的人参与到这个运动,为了开发一个完全自由的操作系统。Richard Stallman是其中的核心与精神领袖。

  为了更好的推动GNU,使之可持续下去,Richard Stallman在1985年的时候成立了自由软件基金会。

  GNU + Linux的双剑合并。1991年

  事实上,在1990的时候,GNU运动已经开发出了一个操作系统几乎所有方面的软件,这确实是令人难以置信的工作。

  但是,它们独独缺少一个稳定的操作系统内核。虽然GNU有自己的内核开发-Hurd。但直到现在,这个内核仍然没有稳定,内核工作的复杂度远超他们的预计。

  但幸运的是,Linux的创始人Linus Torvalds在1991年时,编写了一个类Unix内核并开源出来。

  对GNU来说,这是个很好的东西,于是GUN在做了大量修改与适配后,后面与Linux内核结合起来。形成了自由的操作系统。

  对自由软件运动来说,他们认为这样的操作系统应该称呼为:GNU/Linux。

  但今天,我们基本上称呼这样的系统为另一个名字:Linux

  开源软件的兴起与发展 1998年

  并非全部的自由软件用户和开发者都赞同自由软件运动的目标。1998年,自由软件阵营中的部分成员分裂出来,并以“开源”为名继续开展活动。

  而后,我们都知道,开源的理念不断兴起,它不断的发展与壮大,其声势与影响力早已远超自由软件的运动。

  现在,开源的理念早已远胜于自由运动的理念。

  不要说普通计算机用户,就算对于大多数程序员来说,可能知道开源的也远胜于知道自由软件运动。

  如果按照各自的理念与要求,自由软件一定是需要开放源代码,否则无法实现自由运动的四个自由。而开源软件有相当一部分也其实是满足这四个自由。

  也就是它们之间有非常大的重叠。

  但自由软件运动并不赞同开源软件运动,他们认为开源软件运动错失了自由软件的初衷与目标。

  那究竟这两者之间有什么不同呢,它们到底各自在关注什么?

  简而言之,自由软件是一种高尚的价值观,而开源软件则是一种实用主义。

  最开始出现的是自由软件,在1983年的时候,自由软件的创始人Richard Stallman就发起了GNU运行,意图打造一个完全自由的操作系统并为此而付出努力。

  而开源运动则是从自由软件运行中分化出来的,在1998年的时候,自由软件阵营的一部分成员因不赞同自由软件运动的目标,从自由软件运动中分裂出来,以开源的名言开展活动。

  现在,开源的理念更深入人心,为人所熟知。而自由软件的理念仍在努力奋斗中,其影响力似乎比不上开源运动。

  那究竟自由软件与开源软件运动两者之中的差异有哪些,它们到底有什么分歧?

  在说分歧前,先说共同点:

  共同点一: 它们的重叠性非常高

  其实,绝大多数大家比较熟知或常用的开源软件,其理念是同时符合自由软件的理念的。

  比如浏览器中的Firefox以及Chromium(Chrome的开源版本),Linux操作系统中的相当大一部分,以及开源的数据库MariaDB,Postgres等,它们本身同时符合开源软件的理念,也符合自由软件的四个理念。

  自由之零:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。自由之一:用户可以自由的学习与修改软件,那做为这个的前提,用户是要能自由的访问到软件的源码自由之二:用户可以自由的分发软件给别人,以帮助他人自由之三:用户可以自由的分发修改后的软件版本,以使整个社区从修改中受益。

  当然,开源软件中也存在一些不太符合自由软件的理念的,比如一些限制修改或商用的开源协议。

  共同点二:它们都主张源码是开放的

  开源软件这名称就是从源码开放这一点来的,这是它的核心主张。而自由软件的四个自由,若不能自由的获取源代码,也就无从谈起了。

  所以无论是自由软件或是开源软件,其源码一定是开放并可以任意获取的。

  共同点三:它们都将专有软件视为"另一边"

  无论是自由软件或是开源软件,它们都拥有同一个核心的价值观:

  我们与专有软件是不同的

  当然,怎么个不同法,其实还是有区别的。 这点后面再说

  共同点四:它们共同改变了行业的生态

  我们得感谢自由软件与开源软件,它们的确改变了行业的生态。若是没有自由软件以及开源软件,如果我们的行业的生态全是由专有软件把持,很难想像今天的互联网能快速发展到如今的地步。

  最大的分歧:理念与目标的差异

  自由软件的理念是为用户的计算自由而战斗,用户应该能自由的使用任何计算资源,从操作系统到软件等一切。而专有软件这种是不合理的,限制了用户的自由,是不应该存在的。

  而开源软件的理念是通过开放源代码,让更多的程序员参与进来的方式,使软件变得更加强大,并且通过开源的模式惠及更多用户。

  所以,从上述理念上来看,就得出了我开篇的话语:

  自由软件是一种高尚的价值观,而开源软件是一种实用主义

  分歧二:对专有软件的立场不同

  自由软件将专有软件视为敌人,是对立面。专有软件在自由软件运动中是不该存在的东西。

  而开源软件运动对专有软件的立场是:不使用开源的方式,怎么可能构建出稳定可靠及惠及更多人的软件?

  显而易见,两者的立场是有差异的。

  而现实中,开源软件运动中有大量的专有软件公司参与,某种程度上说,开源软件与专有软件是有紧密联系的,密不可分的。

  比如MySQL是开源的,但它还有个功能更强大的企业版。企业版在功能上更多更强大,而这些功能点也没有开源。类似的现象在开源的世界是其实是普遍存在的。

  甚至相当一部分开源软件压根就是专有软件公司贡献的。

  这种现象在自由软件运行中可能是不被接受的。

  现在你应该对自由软件运动与开源软件运动有了解了,也能理解为什么开源软件发展的更好,而自由软件运动却不是特别好的原因所在了。

  开源软件运动的理念,其实是对专有软件的一种有益的补充,它其实并没有反对专有软件,也不会去谈软件自由的问题,这是它迅速发展的原因所在,它与专有软件形成了良好的互动,也就是大家各有市场。

  而自由软件运动则其实是一种抗争,它试图定义一种完全不同的软件生态,这种行为稍微想像下,会有多少软件商业公司支持呢?它试图颠覆当前的软件生态,重新构建一个不同的生态,这种做法的当然是举步为艰的。

  我们仍然要向它们表达敬意,自由软件运动是先行者,它也实实在在的改变了我们软件的生态。

  在自由软件与开源软件中,一个非常有意思也有有争议的话题就是:

  到底我们通常叫Linux服务器的这种操作系统,是该叫Linux还是该叫GNU/Linux?

  而这个有意思的点在于,自由软件的创始人Richard Stallman以及Linux内核的创始人Linus Torvalds都卷入到其中。

  下一篇继续聊:趣谈自由软件与开源软件(三):一个名称的争议,究竟是该叫Linux还是GNU/Linux

  作者:御剑 ,原文:https://taoofcoding.tech/blogs/

螃蟹哥 发表于 2024-2-26 01:49:12

学习了,谢谢分享、、、

黯然 发表于 2024-3-1 10:47:17

帮帮顶顶!!

苦浪漫 发表于 2024-3-7 22:30:46

帮帮顶顶!!

黯然 发表于 2024-3-11 19:22:16

过来看看的

拉皇帝 发表于 2024-3-14 06:39:35

不知该说些什么。。。。。。就是谢谢

黑哥 发表于 2024-3-17 05:51:46

不知该说些什么。。。。。。就是谢谢
页: [1]
查看完整版本: 明白:趣谈自由软件与开源软件