信息技术的哲学思考 ——浅谈开源软件

信息技术的哲学思考

——浅谈开源软件

1. 什么是开源软件

​ 所谓的“开源软件”,即为“开放源代码的软件”。经过数十年的演变,开源软件已经在操作系统、3D建模、音频处理以及计算机语言、互联网应用等诸多方面占有一席之地。根据开源软件行业的资深人士及Debian的创始人,Bruce Perens的定义来说,开源软件应当包含以下特性:

  • 自由再散布(Free Distribution):允许获得源代码的人可自由再将此源代码散布。
  • 源代码(Source Code):程序的可执行档在散布时,必需以随附完整源代码或是可让人方便的事后获取源代码。
  • 派生著作(Derived Works):让人可依此源代码修改后,在依照同一许可协议的情形下再散布。
  • 原创作者程序源代码的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本号码以与原始的代码做分别,保障原始的代码完整性。
  • 不得对任何人或团体有差别待遇(No Discrimination Against Persons or Groups):开放源代码软件不得因性别、团体、国家、族群等设置限制,但若是因为法律规定的情形则为例外(如:美国政府限制高加密软件的出口)。
  • 对程序在任何领域内的利用不得有差别待遇(No Discrimination Against Fields of Endeavor):意即不得限制商业使用。
  • 散布许可协议(Distribution of License):若软件再散布,必需以同一条款散布之。
  • 许可协议不得专属于特定产品(License Must Not Be Specific to a Product):若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必需要符合开放源代码的条件。
  • 许可协议不得限制其他软件(License Must Not Restrict Other Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的许可条件也要遵照开放源代码的许可。
  • 许可协议必须技术中立(License Must Be Technology-Neutral):意即许可协议不得限制为电子格式才有效,若是纸本的许可协议也应视为有效。

​ 其中,开源软件所使用的许可协议(或称许可证)都允许其源码、蓝图、或设计基于明文规定或明示条件下,被所有人使用、修改而且/或分享。但基本上所有的开源软件都禁止或限制企业和个人对开源软件进行修改后的盈利行为。也有一些开源软件作者允许个人几乎不受限制地使用自己所有的开源软件,但是对于企业对自己开发的开源软件的使用和修改有着严格的限制。

​ 一般来说,现行的几种主流许可协议(如Apache 许可证、BSD 许可证、GNU 通用公共许可证、GNU 宽通用公共许可证、MIT 许可证、Eclipse 公共许可证和Mozilla 公共许可证)都大同小异,但是在某些细微之处有所不同。某种程度上,多种多样的许可证对于开源软件的开发和共享起到了反作用。目前有超过 180,000 个可用的开源项目和 1400 多个独特的许可证,这使得企业决定如何在“闭源”项目和产品中管理开源软件使用的复杂性显著增加。

​ 在开源软件的发展历程中,开放源代码促进会(OSI)和自由软件基金会(FSF)以及GNU计划对开源软件的发展起到了重要作用。它们一同催生了著名的Linux操作系统、Mozilla浏览器、C/C++编译器GCC和文本编辑器Emacs等诸多简单实用的开源软件。

​ 时至今日,开源软件随着互联网的发展和普及正在茁壮成长。由Linux的创造者,Linus Torvalds开发的Git系统使得可以众多开发者各司其职、一起完成同一个项目。因此而生的Github、Gitpage等已经成为了目前开源软件的核心平台。

2. 开源软件的历史

​ 我们知道,在上世纪50年代计算机刚刚出现的时候,使用笨重而复杂的计算机一般都是科学工作者。进入到上世纪70年代,欧美国家中数量稀少的计算机从业者们一些大学生们开始共享软件以相互学习并发展技术。然而随着计算机造价降低和经济发展,出现了不少专注于软件、硬件开发的大型商业公司。与此同时,欧美国家相继通过法案,将计算机软件涵盖进了自己法律体系中原有的知识产权保护体系。开源软件随即因为缺少竞争力和宣传方式、开发成本低、时间长等方式而被挤压进边缘。但是开源软件的开发、传播和使用仍然没有停止。

​ 在70年代末期至80年代早期,一些人对于软件从免费转向收费并且不再提供源代码这一现象感到不适应或不满,其中最著名的就是发起了自由软件运动的Richard Stallman。

​ 回到1980年,时年27岁的Richard Stallman还在麻省理工学院(MIT)的人工智能实验室工作。当时实验室购进的一台施乐9700激光打印机限制了用户访问其软件源代码,从而使得用户无法自行排除故障;另一件事是Richard曾经在一个古老的编程语言——LISP的编译器的项目上工作了一段时间。后来,Symbolics公司向他索取该编译器的代码,Richard便提供了公有领域的代码。该公司在拿到代码后对编译器进行了扩充和改进。得知此事后的Richard向Symbolics公司索取改进后的代码,但是被拒绝,原因是修改后的代码属于专有软件。终于,在1984年,Richard Stallman辞去了他在人工智能实验室的工作,并继续留在MIT以发起、宣传和推进自由软件运动。

​ 在此后,开源软件如雨后春笋涌现。Donald Knuth在 1979 年开发了TeX排版系统,它后来发展成为了著名的LATEX排版系统,成为了科学工作者撰写专业文档的重要工具之一;Richard Stallman本人在 1983 年开发的GNU操作系统虽然已经经历了近40年还未完工,但是使用其组件的Linux已经成为了拥有全球第三大用户群体的操作系统。

​ 1997年,Eric S. Raymond出版了《大教堂与集市》(The Cathedral and the Bazaar),对黑客社区和自由软件原则进行了反思性分析,并且在1998年获得了巨大反响。这也影响到了网景通讯公司(Netscape Communications Corporation)将其开发的网景网络套件(Netscape Communicator Internet)作为自由软件来开放。网景网络套件成为了后来的Mozilla,也就是火狐浏览器(Firefox Broswer)的基础。

​ 随后,自由软件运动的几名创始人发现,应当使得开源软件更深一步地进入商用软件领域。他们将自由软件重新命名为“开源”软件,随后组建了开放源代码促进会。这两个组织至今仍然是开源软件和自由软件社区的引领者。

​ 需要注意的一点是,Richard Stallman本人并不希望将“自由软件”和“开源软件”混为一谈,虽然这两者在今天已经几乎没有定义上的区别。

3. 开源软件本身及其利弊

​ 在《大教堂与集市》一书中,Eric S. Raymond认为,开源软件的开发过程应当像是“一些建筑师和魔法师在各个角落各司其职,以建造一个巨大的教堂”。这在上世纪中后期还会有诸多困难。而随着Git软件的出现,分布式开发和流程管控、分支式提交等协作式开发已经成为了开源软件开发的重要组成部分。开源软件本身秉承着平等、自由的理念,开源社区乐于接受志愿者的开发提交和资金捐助。

​ 由于开源软件本身的性质,开源软件的使用者也大多是计算机领域的相关从业人员、学生或爱好者。这使得开源软件的使用者同时也成为了开发者。他们在使用开源软件的同时,也能向开发者提交Bug反馈和功能、优化上的意见和建议。这种流程使得开源软件的发展形成了一个重要的正向循环。同时,这也使得开源软件的开发者经常在其并不完善的情况下将其发布,来为自己的开源软件寻找潜在的使用者和协同开发者。

​ 同时,开源软件也是高度模块化的,很少有“浑然天成”的开源软件。有一句话流传在开发者群体内:“不要重复造轮子”。一般来说,开源软件本身易于使用、更改的特性使得它也可以并易于被其他的开源软件使用。因此,一个开源软件内部经常包含其他的开源软件,形成了一个层层嵌套的模式。

​ 开源软件经常会一次发布多个版本,如LTS(Long-time Support,长时间支持)版本、Preview(预览)版本等。这使得用户可以依照自己的需求来选择使用稳定、完善的版本来作为生产环境,或者尝试最新的、甚至是Nightly-build(每晚构建)版本来尝试软件中的新特性,并向开发者做出反馈。

​ 但同时,开源软件的诸多优势也使得开源软件面临一些劣势。

​ 开源软件的个体化发展,使得开源软件的开发更加节约成本、省时省力。然而在开发一些更大规模的项目时,其开发流程的管控更加困难。开放源代码也使得黑客能够更加容易地洞察代码中存在的缺陷,从而轻易使用软件漏洞来达到恶意目的。其次,开源软件由于其开放式开发的特点,易于被植入恶意代码,或者在代码中进行各种宣传活动。

​ 最近的一个例子是在俄乌冲突中,一些开源组织和开源软件的维护组织、团体,如影响力巨大的编程语言PHP、全球第二大开源代码托管平台GitLab和世界最大的开源包管理系统Node.js等都官方或者半官方地公开表达了自己的立场。其中最引人瞩目也最恶劣的行为之一,是node-ipc包的作者 RIAEvangelist在其为用于构建用户界面的渐进式框架,vue-cli中使用自己的node-ipc来向特定的俄罗斯和白俄罗斯用户投毒。如果使用这个开源软件报的主机IP地址来自俄罗斯或白俄罗斯,该代码将对其文件进行攻击,将文件全部替换成 ❤符号。

4. 总结与后记

​ 经过将近40年的发展和演变,开源软件已经从极少数爱好者的技术交流演变成为了我们今天使用的计算机环境的基石。甚至在我撰写这篇文章时,也是在一个著名的LInux发行版——Manjaro操作系统上,使用开源桌面Gnome,通过开源浏览器Chromium来查找资料并写作。开源这一行为本身就带有浓烈的叛逆和反抗气质,来源于开发者们对计算机技术商用、私有和垄断的反抗,并致力于传播平等、自由和免费的理念。其影响力已经突破了技术层面,进入了社会学、经济学甚至是政治领域。委内瑞拉已经通过法案,规定所有的软件在其国土内一旦发布超过两年,即自动进入开源领域。开源软件也影响到了其他知识载体和表达形式,如书籍、电影和音乐等的“海盗党”,一种反对知识产权制度的互联网运动。

​ 但是开源软件的前景并不乐观。随着全球化热潮减退,孤立主义和保守主义的抬头,开源软件也不可避免地受到影响。除了提升企业形象,互联网巨头们很难从参与开源软件社区中获得想要的利润。

​ 新千年已经过去五分之一,开源的前景充满着机遇和挑战。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2022 Dissolve

请我喝杯咖啡吧~

支付宝
微信