
第1章 开源简史
1.1 开源概述
1.1.1 相较于“自由软件”,为什么是“开源”
在20世纪中期,互联网技术和电信网络的研究者们在一种互助的研究氛围中培养了开放和协作的精神。许多科技公司的软件也自由地分发。但很快,基于版权和限制性许可证的专有软件开始兴起,并逐渐成为行业的主流。面对自由精神的逐渐丧失,崇尚黑客文化的开发者们开始采取行动。1983年,Richard Stallman启动了“GNU计划”,这成为“自由软件运动”兴起的标志性事件。
然而,尽管自由的精神鼓舞人心,但“自由软件”(Free Software)中Free一词的双重含义——既指“自由”也指“免费”——却构成了对其理解的一个主要障碍。如果人们仅将Free理解为“免费”,这不仅可能偏离自由软件的初始精神,也可能给软件的商业实践带来挑战。
那么,如何让概念聚焦在“开放源代码”上?这一议题在1998年Foresight Institute的会议上被提出[1]。当时,与会者在探讨计算机安全问题时认识到,需要一个新术语来描述那些用户可以自由访问和修改源代码的软件。Eric S. Raymond参与了会议,并根据讨论,他列出了3个可能的选项——Free Software(自由软件)、Open Source(开源)和Sourceware(源软件)。最终,与会者决定采用Open Source这一术语。自此,“开源”一词开始在编程界、产业界和媒体中迅速传播,并逐渐被广泛采纳。
“开源”作为一个将自由软件的理念与现代商业实践相结合的概念,一方面,它界定了在开源框架下软件的生产和运营等业务活动;另一方面,它延续了自由软件所倡导的自由权利,即“用户自由查看源代码、自由修改、再分发,以及自由获取和使用源代码”。
1.1.2 开源定义的确定与许可证的发布
“开源”概念确立后,界定这一概念的任务变得迫切。这一任务由开放源代码促进会(Open Source Initiative,OSI)完成。OSI基于Debian自由软件指导方针,制定了开源定义(The Open Source Definition,简称OSD),其中包含10项基本原则(更多细节,请参见6.1.1节)。
基于上述定义,OSI发布了首份正式的许可证清单,其中包括GNU通用公共许可证(General Public License,GPL)、GNU宽松通用公共许可证(Lesser General Public License,LGPL)、BSD(Berkeley Software Distribution)许可证等。为了支持新兴的Apache Web服务器项目,Apache软件基金会于1999年成立,并发布了至今仍广泛使用的Apache许可证。
此外,还有MIT(The MIT License)许可证、MPL(Mozilla Public License)许可证等,这些许可证不仅促进了开源软件在产业中的广泛应用,也确保了开源基本原则在实践中得到贯彻。
2019年,中国发布了首个开源许可证——木兰宽松许可证(Mulan Permissive Software License,Mulan PSL)。2020年,木兰宽松许可证2.0版本(Mulan PSL 2.0)获得OSI的批准,正式成为国际化的开源许可证。
1.1.3 开源内涵的延伸
自开源概念诞生以来,其内涵不断扩展和深化。最初,开源主要关注软件领域,但随着时间推移,它逐渐展现出社会化特征。如今,开源已经涵盖了开源技术、开源项目、开源社区、开源基金会、开源商业、开源理念、开源文化、开源创新及开源生态等多个方面,共同推动了开源概念的扩展和深化。
● 开源技术:指的是源代码可以公开访问、查看、使用和修改的技术,如Linux操作系统、Python语言、MySQL数据库、Apache服务器、Kubernetes容器编排技术等。
● 开源项目:指的是那些源代码获得许可并公开可用的项目。在这些项目中,贡献的代码是非常重要的,它可以来自公司或个人。开源项目构成了开源社区的基础,其运营质量直接影响着社区的发展水平。
● 开源社区:由开源项目、项目发起者、维护者、贡献者、用户及项目周边的生态系统等组成。社区成员通过共享技术、知识、经验和资源,共同致力于开发、维护和推广开源项目。
● 开源基金会:指的是为了维护开源项目、托管代码,以及推广开源原则和标准等而成立的非营利组织。自早期的自由软件基金会成立以来,已经出现了Apache软件基金会、Linux基金会、Mozilla基金会、Eclipse基金会、OpenInfra基金会等数十个开源基金会,近年来,国内也成立了首个开源基金会——开放原子开源基金会。
● 开源商业:指的是基于开源软件和开源项目进行的商业运营和实践。这种模式包括在提供开源软件的基础上,通过付费支持、服务或者特定产品功能来实现盈利,从而成为开源服务提供商;或者将开源软件作为基础设施,以减少企业重复开发的成本;此外,还可以通过资助开源项目等方式支持开源生态系统的建设与发展。
● 开源理念:源于自由、共享和协作等理念。这些理念不仅是人类文明发展中的基因传承,也是自然界秩序的基本逻辑。
● 开源文化:包括开源价值观和行为准则。与开源理念相比,它更侧重于个体的主观价值判断,并强调集体品质。开源的价值观及准则包括奉献精神、感恩意识、开放精神等。
● 开源创新:指的是将开源的理念和文化作为推动技术进步的创新手段。例如,开源数字化治理就是利用开源所倡导的开放性、透明度和协作精神来推动数字化治理的一种实践方式。
● 开源生态:广义上,包括所有与开源相关的物理层面、社群组织及思想精神,它们共同构建了一个复杂的系统;狭义上,是指以开源项目为核心,通过开发者社区的协作,形成的日常运营的开源生态系统。
从自由软件的提出到开源概念的出现,再到开源定义的明确化,如今开源的内涵已经非常广泛,并形成了不断演化的生态系统。
[1] Christine Peterson,“How I coined the term ‘open source’”。