到底什么是开源软件?

我们经常说某某软件是开源的,那么到底什么样的软件才算是开源软件呢?开源软件这个概念又是怎么兴起的呢?

【1】自由软件运动

提到开源软件,就不得不从自由软件运动说起,既然强调自由,那软件的自由是指什么?又是什么限制了软件的自由呢?

最早的软件都是在小圈子里流转的,源代码在早期程序员黑客圈子里被自由分发和改进。时间来到1980年代,当年27岁的 理查德-斯托曼 正在麻省理工学院人工智能实验室工作,他发现施乐公司捐赠给实验室的激光打印机经常出现卡纸的情况。他试图找到这款打印机的驱动源代码来修改,但是发现施乐公司只提供了编译好的二进制文件,并没有提供源代码。

除了打印机事件,斯托曼还发现很多程序员开始和商业公司签署保密协议,答应公司不能将源代码泄露。这就让斯托曼感觉到整个黑客文化圈子的氛围正在发生变化。公司为了商业利益开始限制其他人使用源代码或者停止提供源代码。

斯托曼从道德的角度来看待自由软件,他希望软件的源代码能被自由的分发修改,反之则是对他人使用软件自由权利的践踏、是不符合道德的。

讲到这里我们也大概回答了开头的问题,软件源码被自由获取分发修改的自由正在被商业公司限制。在斯托曼看来是一个需要解决的问题。最终促使斯托曼开始了 GNU 运动,他的目标就是构建一个完全自由的操作系统 ,为了区别有著作权的Unix操作系统,起名 GNU’s Not Unix 简称GNU,并在1985年成立了自由软件基金会。创新地提出了 GNU 通用公共许可证GPL协议,协议让软件的自由使用、学习、修改、分发得到保障。GPL协议也被行业内的很多人称为病毒式许可证,因为他像病毒一样感染所有他接触到的程序,你可以自由地使用GPL协议的软件,但是基于这些软件的衍生作品也需要使用GPL协议发布。

关键的一块拼图:Linux

但是GNU计划进行得并不顺利,直到1993年 GNU工程还是没能发布自己的操作系统内核,关键的内核Hurd迟迟没有结果。但这似乎并不是坏事,GNU操作系统的进展缓慢让芬兰赫尔辛基大学的 Linus Torvalds (林纳斯 托瓦茨)决定自己开发一个操作系统内核,也就是后来改变世界的Linux,托瓦茨自己也坦言,如果GNU操作系统进展顺利,他完全没必要开始Linux这个项目。

有了Linux操作系统,GNU工程关键的一块拼图补上了。自由软件运动也深刻地改变了软件行业,甚至改变了世界,但是故事还没有结束。自由软件取得的辉煌成绩之下也暗藏阴影,在这场运动中大家关心的是自由,对抗的是商业公司对软件自由的破坏。然而,软件行业的发展又绕不开实力雄厚的商业公司。这种矛盾该如何解决?另外,为什么Linux获得了如此的成功?这些问题都需要更好的答案。

【2】开源软件运动 

自由软件和开源软件的关系又是如何的呢?用斯托曼本人的话说:我是搞自由软件的,并不是搞开源的。可见在斯托曼眼里自由软件和开源软件似乎泾渭分明。其实我想斯托曼更希望软件是纯粹的远离商业,也并不想弥合软件自由和商业的关系。

1996年2月自由软件基金会赞助的名为“自由发布软件大会”在马萨诸塞州的剑桥召开,看似团结的大会,终于在最后林纳斯的发言中不再掩饰这种对商业软件看法的分歧。林纳斯公然表达了自己是微软Powerpoint 的忠实发烧友,并且表达了自己不会因为是自由软件的开发者就抵制一切商业软件,那些能帮助我们更好完成工作的软件为什么不用呢?也许正是林纳斯这种开放的心态,让他得到了更多人的支持。也正是他的开放,创造了新的linux的开发模式。

自由软件社团的主要成员 Eric S. Raymond (埃里克·雷蒙德)在他的著作《大教堂与市集》一书中给出了精确的概括: GNU程序就是教堂,他们都是有计划地修建而成的宏伟的黑客精神的纪念碑,经得起时间的考验。而另一方面,linux则更像是一个嘈杂的大市集,它是在internet去中心化的松散结构中开发出来的。毫无疑问雷蒙德更加欣赏linux这种市集一样的开发模式,并在自己的演讲中宣传这种开发模式的好处,雷蒙德的演讲让彼时正在苦苦和微软IE浏览器竞争的网景公司似乎看到了新的模式和希望。1998年1月,网景公司宣布计划开放他的旗舰产品Navigator Web浏览器源代码,以此希望能得到黑客们的支持,继续完成后续的开发。在此之前的1997年自由软件社团的主要成员 Eric S. Raymond 埃里克·雷蒙德 ,Tim O’Reilly 山景城会议,为了避免自由软件中free字样给大家带来免费的误导,讨论使用开源软件(Open Source)术语,并成立了开源软件促进会:Open Source Initiative(OSI),为开源软件制定规范。他也深度参与了网景公司浏览器的开源事宜。

虽然网景公司后续被AOL收购,在收购之前创建了Mozilla社群,直到今天网景虽然不复存在,但是Mozilla社群为我们带来了firefox浏览器、Rust编程语言。

开源软件促进会

由雷蒙德等人发起创建的 开源软件促进会(Open Source Initiative,缩写:OSI)是一个非盈利的行业协会类型的组织。至今依然存在,你说这么个组织是负责认证每一款软件是不是开源软件吗?不是的,该组织是给开源软件协议做认证。开源软件协议必须符合相关要求,其中主要包括提供源代码、不得歧视个人、群体、领域,协议许可证不得限制特定软件、或者限制其他软件、保持技术中立等。

目前被认证的开源软件协议包括:GPL、MIT、APACHE 、中国的木兰宽松许可证等。所有基于这些开源协议发布授权的软件,就是一款真正的开源软件了。明白了这一点,你会发现有很多所谓的开源软件,只是开放源代码而已,使用协议并不符合开源软件的要求,使用会有很多不确定的限制和法律风险。

最后

这篇文章简单的把开源软件的由来给大家介绍了一下,希望对你理解开源软件有帮助,开源软件不只是开放源代码,更是一种文化和软件开发模式。不管是自由软件运动还是开源软件运动,都创造性地推动了软件行业的进步,乃至世界的进步。感谢所有为开源软件做过贡献的程序员们。你喜欢哪些开源软件?请留言,我们一起交流。

bye,下次见。

这个小文我参考了不少资料,罗列如下:

  • http://choosealicense.online/

  • https://opensource.org/

  • https://www.gnu.org/gnu/linux-and-gnu.html

  • https://en.wikipedia.org/wiki/Open-source-software_movement

  • Goodbye, “free software”; hello, “open source”:http://catb.org/~esr/open-source.html

  • Eric S. Raymond’s homepage:http://www.catb.org/~esr/

  • 《若为自由故-自由软件之父-理查德·斯托曼传》

  • 《大教堂与市集》纸质图书,作者:Eric S. Raymond

  • 《开源软件文集》纸质图书

  • 《只是为了好玩 – linux之父林纳斯自传》纸质图书

© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容