开源软件导论
第一章:开源概述 开源是什么 在 20 世纪 70 年代末,Richard Stallman 在 MIT 人工智能实验室安装了一台新的打印机,当时他在那里工作,这台打印机运行专有固件。打印机出现问题时,理查德·斯托曼很沮丧,因为他无法获得打印机软件的副本并编辑代码来解决。这种挫败感时自由与开源运动的起源。 对于所有人而言,开源的好处: 获取任何给定工作的源代码、配置文件和文档。 自由地使用、修改和分发这些代码。 摆脱厂商的恶意绑定 更高的合作程度 对于开源的使用者而言,他们想要达成目标不会受到制约,最大程度地发挥自己的意愿。 对于开源的贡献者而言,他们可以在不付出实际代价的情况下,为开源软件做出贡献,在自己的简历中展示自己的能力。 开源历史上的 6 个关键时刻 RMS 和打印机 在 20 世纪 70 年代末,Richard·M·Stallman(RMS)是麻省理工学院的一名员工程序员。他的部门像当时许多大学一样,共享一台 PDP-10 计算机和一台打印机。他们遇到的一个问题是,纸经常在打印机中卡住,导致一连串的打印任务堆积在队列中,直到有人修理好卡纸问题。为了解决这个问题,麻省理工学院的员工想出了一个很棒的社会性解决方案:他们编写了打印机驱动程序的代码,以便当打印机卡住时,会向所有当前等待打印任务的人发送一条消息:“打印机卡纸了,请修理。“这样,它就不会长时间卡住。 1980 年,实验室接受了一台全新的激光打印机的捐赠。然而,当斯托曼要求获取打印机驱动程序的源代码,以便重新实现社会黑客技术,让系统在纸张卡住时通知用户时,他被告知这是专有信息。他听说另一所大学的一位研究员拥有一个研究项目的源代码,当机会出现时,他请求这位同事分享——而对方拒绝时他感到震惊。他们签署了保密协议(NDA),斯托曼认为这是对黑客文化的背叛。 20 世纪 70 年代末至 80 年代初,软件被视为有价值,这种软件传统上与硬件一起以源代码形式提供。越来越多的麻省理工学院研究人员开始创办软件公司,而销售软件许可证是他们商业模式的关键。保密协议和专有软件许可证成为常态,最好的程序员被从麻省理工学院等大学招聘来参与私人开发项目,在那里他们无法再分享或合作。 作为对此的反应,斯托曼决定创建一个完整的操作系统,它不会剥夺用户理解其工作原理的自由,并且如果他们愿意,还可以进行修改。这就是自由软件运动的诞生。 GNU 的创建和自由软件的兴起 到 1983 年底,斯托曼准备好宣布他的项目并招募支持者和助手。1983 年 9 月,他宣布了 GNU 项目的创建(GNU 代表 Gnu’s Not Unix——一个递归缩写)。该项目的目标是克隆 Unix 操作系统,以创建一个赋予用户完全自由的系统。 1984 年 1 月,他开始全职从事该项目,首先创建了一个编译器系统(GCC)和各种操作系统工具。1985 年初,他发布了《GNU 宣言》,号召程序员加入,并成立了自由软件基金会以接受捐赠来支持这项工作。这份文件是自由软件运动的创始章程。 《GNU 通用公共许可证》的编写 直到 1989 年,自由软件基金会和理查德·斯托曼(RMS)编写并发布的软件都没有统一的许可证。Emacs 在 Emacs 许可证下发布,GCC 在 GCC 许可证下发布,等等;然而,在一家名为 Unipress 的公司强迫斯托曼停止分发他们从詹姆斯·高斯林(Java 之父)那里获得的 Emacs 实现版本后,他意识到需要一种保护用户自由的许可证。 GNU 通用公共许可证(General Public License )的第一个版本于 1989 年发布,它包含了 Copyleft(一个双关语——版权的反面是什么?)的价值观:你可以使用、复制、分发和修改受许可证保护的软件,但如果你进行了修改,你必须与修改后的二进制文件一起分享修改后的源代码。分享修改后软件的简单要求,再加上 1990 年代互联网的出现,使得自由软件运动的去中心化协作开发模式得以蓬勃发展。 “The Cathedral and the Bazaar” 到 20 世纪 90 年代中期,Linux 开始兴起,自由软件逐渐成为主流——或者用"不那么边缘化"来形容可能更准确。Linux 内核的开发方式完全不同于以往所见,而且非常成功。在内核社区的混乱中,秩序和快速发展的项目应运而生。 1997 年,Eric·S·Raymond发表了具有里程碑意义的文章《大教堂与集市》,比较和对比了 GCC 和 Linux 内核的开发方法论及社会结构,并分享了他在 Fetchmail 项目上使用"集市"开发模型的个人经验。雷蒙德在这篇文章中描述的许多原则后来成为敏捷开发和 DevOps 运动的核心——“尽早发布、频繁发布”、代码重构以及将用户视为共同开发者,这些都是现代软件开发的基础。 这篇论文被认为将自由软件推广给了更广泛的受众,并说服了当时软件公司的领导层,让他们认为以自由软件许可证发布软件是正确的做法。雷蒙德后来在创造"开源"这一术语和创建开源研究所方面发挥了重要作用。 《大教堂与集市》被认为是 1998 年 Netscape 网络浏览器 Mozilla 源代码发布的关键文件。当时,这是首个将现有、广泛使用的桌面软件作为自由软件发布的大规模发布,使其进一步引起了公众的关注。 开源 早在 1985 年,RMS 本人就意识到用来描述软件自由的"free"一词具有模糊性。在《GNU 宣言》中,他将"give away"和"for free"视为容易混淆零价格和用户自由的概念。当自由软件在 1990 年代末进入主流受众时,“Free as in freedom”、“Speech not beer"等口号很常见,但许多知名社区人物认为需要一个更易于大众理解的概念术语。 1998 年, Netscape发布了 Mozilla 的源代码,包括 Eric Raymond、Bruce Perens、Michael Tiemann、Jon “Maddog” Hall 以及许多自由软件界的杰出人物在内的一群人聚集在帕洛阿尔托讨论一个替代术语。Christine Peterson 提出了"开放源码"这一术语来描述自由软件,后来 Bruce Perens 和 Eric Raymond 共同创立了开放源码研究所。他们认为,与专有软件的根本区别在于源代码的可用性,因此这是品牌推广中应该首先强调的重点。 同年,在 Tim O’Reilly 组织的一次峰会上,当时自由软件领域一些最具影响力的人物聚集在一起,讨论各种新的自由软件品牌。最终,“开源”战胜了“源码”,开源开始被社区中的许多项目所采用。 然而,也存在一些分歧。理查德·斯托曼和自由软件基金会继续倡导“自由软件”这一术语,因为他们认为,与专有软件的根本区别在于用户自由,而源代码的可用性只是实现这一目标的手段。斯托曼认为,如果将重点从自由上移开,未来源代码可能会开放,但软件用户将无法享有修改软件的自由。随着网络部署的软件即服务以及嵌入设备的开源固件的出现,这场争论至今仍在继续。 企业对开源的投资—VA Linux、Red Hat、IBM 20 世纪 90 年代末,一系列备受瞩目的事件推动了自由和开源软件的专业化进程显著加速。其中,1999 年 VA Linux 和 Red Hat 的首次公开募股是最引人注目的事件。这两家公司作为上市公司在首日股价均大幅上涨,证明了开源软件如今已进入商业化并走向主流。 1999 年,IBM 宣布通过投资 10 亿美元支持 Linux 的开发,使传统企业用户使用它变得风险更低。次年,Sun Microsystems 发布了其跨平台办公套件 StarOffice 的源代码,并创建了 OpenOffice.org 项目。 硅谷对开源项目的巨额资金投入、华尔街对围绕开源软件建立的年轻公司的关注,以及像 IBM 和 Sun Microsystems 这样的科技巨头所带来的市场信誉,共同促成了开源的大规模采用,以及接纳了有助于其繁荣的开发模式,这些因素导致了 Linux 和开源在当今科技行业的统治地位。 ...