初探开源软件

2019-03-23

简介

开源软件,就是开放源代码的软件,软件的作者在发布软件的同时,也会公开出软件的源代码。

开源软件$\neq$免费软件

开源软件通常确实是免费的,但是并不等于免费软件。免费软件不一定开源,比如QQ,微信。开源软件也可以收费,比如著名的红帽公司(Red hat)就是著名的开源商业软件公司。当然有的同学会问了,既然它都把源代码公开了,那还不是谁想用就能用,根本不需要交钱,红帽公司还能赚到钱吗?你说的很有道理,我们的确可以直接下载到红帽公司发布的软件,不管是源码还是二进制的,甚至可以在流传出的一些不需要序列号的版本中免费使用。不过免费的版本是不支持在线更新的,同时也无法享受红帽公司对付费用户的技术支持服务。红帽公司对此的看法是:我们的付费客户真正看重的不是我们的软件本身,而是我们提供的服务。针对红帽公司的操作系统RHEL,有人将它的源代码重新编译并发布了一个真正免费的操作系统CentOS,其功能、性能和稳定性和RHEL毫无区别,甚至还可以在线更新,只是同样没有技术支持,并且由于红帽的商标是有版权的,里面所有红帽的商标都换成了CentOS自己的。一般来说,个人搭建网站服务器首选的操作系统就是CentOS,主要就是看中它和商业软件相同的稳定性。

自由软件又是什么

有时候我们在网上还会看到自由软件这个名词。自由软件意味着使用者有运行、复制、发布、研究、修改和改进该软件的自由。它反对以申请专利的形式将软件据为私有。自由软件基金会就是自由软件的主要倡导者。他们还创造出了GPL许可协议,GPL的基本原则就是:你可以“自由”地运行、拷贝、修改和再发行使用GPL授权的软件,但你也必须允许别人也能“自由”地运行、拷贝、修改和再发行该软件以及你在该软件的基础上加以修改而形成的衍生软件产品。但是以我个人的观点来看,这就像共产主义社会,在目前来看,实在是太理想化了,会挫伤人民群众的生产积极性。除了GPL之外,也有其他的许可协议,从网上找了一张图可以很清楚地说明:
许可协议

还可以再谈一谈关于自由软件基金会的一些事情。自由软件基金会的创始人Richard Stallman(理查德斯托曼)一开始的设想是要自己开发一个完全自由的操作系统的,叫做GNU。结果搞了好久都没搞出来,后来就退而求其次,开发了C语言编译器(gcc)和文本编辑器(emacs)。结果后来一个叫Linus Torvalds的竟然把操作系统搞出来了,命名为Linux。理查德斯托曼觉得Linux挺好,就把它当作GNU的替代品了。而且因为Linux用到了gcc,也就是受了GNU项目的帮助,所以理查德斯托曼觉得Linux应该叫做GNU/Linux。不过Linux创始人Linus对GNU/Linux这个说法是嗤之以鼻的,因为开发Linux完全就是他的个人行为,和自由软件运动没有半毛钱关系,只是用了一下gcc编译器而已。

一些著名的开源软件

  • Linux: 著名的操作系统
  • Git: 著名的版本控制软件
    Git也是由Linux创始人Linus Torvalds创作的,原因是曾经管理Linux的版本控制软件要开始收费了,Linus就自己写了一个免费的版本控制软件(又一个大神自己造轮子的故事,之前我们已经提过两个大神造轮子的故事了,一个是里奇和汤普森两个好基友,一个是高德纳老爷爷,现在又有一个Linus伯伯)
  • Chromium:Google为发展自家的浏览器Google Chrome而开启的项目。Chromium与Google Chrome共享大部分代码和功能,但功能和商标之间有一些细微差别,而且Chrome是闭源的。大部分国产浏览器都是基于Chromium开发的。
  • Eclipse: 著名的Java集成开发环境
  • Codeblocks: 著名的C语言集成开发环境
  • nginx: 著名的Web服务器软件