开源软件简史(一)

作者:OSCHINA2021.09.01 10:04浏览量:221

简介:当有人说到自由或开源软件时,到底是什么意思?

原文:A Brief History of Open Source Software 作者:Andy Updegrove,编译:御坂弟弟

今天,每个人都在使用开源软件,数百万人在为其贡献代码。事实上,今天开源软件的用户和创造者中,大部分的人还很年轻,他们从未见过一个不依赖开源软件的世界。换句话说,人们很容易把这种开放协作的卓越产品视为理所当然。

但这是一个错误认知,尤其是考虑到这种独特的现象能够扎根繁荣是多么难能可贵。因此,本文将通过回顾远程开发者如何开始合作创建开源软件、使其分发成为可能的法律工具如何演变而来以及世界如何接受它,来讲述这一切是如何发生的。

在信息技术的早期,计算机在交付时已经安装了操作系统和基本的应用软件,并且提供可编辑的源代码而不需要额外费用。但是,随着软件作为一种独立的产品出现,独立软件供应商不再提供源代码以利用这一商机,并防止竞争者获取其商业秘密。这种做法产生了预期中的结果,即计算机用户开始依赖独立软件供应商提供支持和升级。

由于计算机用户在应用软件上的投资越来越大,他们也被 “锁定 “在硬件上,因为放弃或重新配置他们现有的应用软件去在新供应商的专有操作系统上运行的成本很高。其结果是,1980 年代中期出现了一场运动,支持分发人类可读的源代码和修改、分享以及分发该代码与通常的、机器可读的程序代码的合法权利。这种 “自由软件” 的早期支持者认为共享源代码的权利是一种基本的自由,并创建了许可证 —— 特别是 GNU 通用公共许可证 —— 要求厂商将自己的创新成果回馈给项目社区。支持这种观点的人通常被看作 “自由软件运动 “的一部分。后来的一个派别只关注可自由共享代码的实际优势,他们称之为 “开源软件”,导致该群体的行为被称为 “开源运动”。

同时,互联网使一种高度分散的软件开发模式成为可能,这种模式以自愿贡献代码和全球协作为基础。这些发展的合力导致了数百万个自由软件和开源软件开发项目的迅速扩散,创造了许多 “最佳 “的操作系统和应用软件产品。今天,几乎所有的专有软件都包含了开源软件,而且越来越多的关键软件平台和程序是完全开源的。

虽然 “自由软件” 和 “开源软件” 这样的术语听起来很普通,但如果正确理解的话,它们意味着政治哲学、革命热情、技术发展方法、传统以及激进的法律理论和冷硬的商业实用主义等元素。毋庸置疑,如此丰富的属性对于任何有兴趣快速了解这种现象到底是怎么回事的人来说,可能都是一个挑战。

花时间去更好地了解 FOSS(Free and open source software,自由和开源软件)的原因有很多。从社会政治的角度来看,FOSS 运动是一个更广泛的社会政治倡议的一部分,部分原因是互联网能够在全球范围内实现信息共享和人们的积极合作。就自由软件运动而言,该运动对许多传统的版权和专利法律限制的实用性和公平性提出了质疑,并寻求为所有人的利益解放软件。开源软件的支持者主要希望允许开源软件不受传统的专利限制而自由使用,与之不同的是,自由软件的倡导者则支持一套道德规则,其目的不仅是为了促进自由使用,而且是为了激励 —— 在某些情况下还要求 —— 那些从这种使用中受益的人也将自己的修改和补充贡献给开发者社区。

从经济角度看,开源软件开发模式以多种方式重新梳理了软件开发的商业现实。 对于软件供应商或用户来说,通过参与一个有许多其他开发者参与的开发项目,可以从根本上降低开发某个软件的单位业务成本。 对于最终用户来说,获得开源软件产品的源代码可以使其独立于专有供应商,因为最终用户可以修改代码,或将开发工作进行竞标。对于商业中间商来说,可以努力在免费提供的核心代码基础上开发增值服务,并由开发者社区维护。对于决策者来说,开源软件为国内供应商提供了公平竞争的机会,同时降低了采购公共信息技术系统的成本。从市场的角度来看,开源软件模式是一种颠覆性的力量,它为现有的和新的企业提供了机会,使它们能够撼动那些依靠专有开发和销售模式取得优势的根深蒂固的市场参与者的主导地位。

今天,FOSS 已经变得如此普遍,一个有效的 IT 采购和管理必须对 FOSS 的内容有一定了解。此外,开发和使用 FOSS 产品的积极参与者还需要知道 FOSS 在未来会如何发展,以及对于任何参与 FOSS 开发、使用 FOSS 产品或在自己的产品中嵌入 FOSS 代码进行转售的人相关的 FOSS 法律问题。

本文接下来将概述 FOSS 的历史及其拥护者、区别于其他开源软件的主要哲学差异、FOSS 提供的多种许可证以及支持和促进 FOSS 的主要非营利机构。

开源软件的基础知识

当有人说到自由或开源软件时,到底是什么意思?

答案可能非常复杂。根据不同的语境,它可能意味着广泛而不同的信息,包括法律权利和义务、社会运动的隶属关系和开发模式等不同的主题。换句话说,”开源”,特别是 “自由软件”,可能同时意味着许多东西。

在最基本的层面上,开源软件一词有时被用来指代(尽管是不正确的)向用户提供机器可读(程序)和人类可读(源代码)的软件。有时,这就是使用该词的人的全部意图,例如,当一个开发者创建了一段代码,然后将其发布到互联网上的一个公共站点上,对其再利用的限制很少,甚至没有。

然而,一个被广泛使用的开源软件很可能具有区别于专有软件的额外属性。最有可能的是,它是在一个公共网站上开发和维护的,这个网站允许任何有兴趣的程序员注册并提供帮助,不管是通过指出错误并提出修复方法,还是通过积极参与额外代码的开发,或者通过帮助记录促进他人正在进行的工作。

有关项目可能是由一个人发起的,也可能是由一群人发起的,也可能是当一个专有厂商向其开发的产品发布对象和源代码时,认为这样做会获得更大的利益(例如,由于非员工贡献的劳动,可以以较低的成本继续访问相同的代码,或者向免费下载程序的用户出售支持服务)而发起的。

通常,多个项目会合作创建软件 “堆栈”,共同提供一项基本服务。当他们这样做时,每个项目都会创建一个单一层级,同时实时协调,以确保每个层级在技术上可以互操作,并与其他层级紧密集成。

在 FOSS 变得无处不在之前,大多数计算机用户的整个生活都是在锁定的 “Win-Tel” 平台世界中度过的,而这个平台是微软操作系统与英特尔处理器结合后产生的。在应用软件领域,大多数同样的用户仍然生活在(当涉及到办公生产力工具时)微软 Office 这个方便但又受限的世界里。由于几乎所有人都在继续使用 Office,所以文本文档和电子表格得以在其他 Office 用户之间轻松交换。但用户也因此受制于人,一旦进入 Office 的世界,就很难离开。

从法律上讲,开源软件这个术语至少意味着任何人都可以自由下载代码,只要他们不试图以代码中的缺陷或侵犯任何第三方的权利而起诉开发者,并承认其代码中原始代码作者的版权。通常与自由软件运动相关的 “copyleft” 软件许可证(下文将详细介绍)有额外的、更严格的条款。任何修改版权许可的代码并销售修改后的版本的人,都必须在同样的版权许可条款下向所有人提供他们的修改,这是一个伦理和道德问题,也是对法律义务的回应。

开源软件不是对任何开发者权利的侵犯,不是对专有代码的退而求其次,也不是对企业的安全风险。它当然也不是一时流行。某种意义上说,开源软件是永恒的。虽然自由软件对客户的价值听起来很明显,但除了不需要支付许可费之外,还有其他好处。简单而言,如下所列:

对客户而言:在传统的消费者软件许可模式下,个人购买专有软件通常只需支付一次性费用,然后就可以自行使用,而商业客户则有可能在额外的服务上进行更多的投资,例如为其员工购买培训,以学习如何使用新软件,以及持续的 “支持 “服务(即:确保有人在终端提供支持,确保在复杂的企业系统上安装、集成或操作软件时遇到问题时,电话那头有人接听),以及 “维护 “权,以确保他们在软件安装后能获得更新(如错误修复和改进)。他们可能还需要支付硬件升级费用,以便能够运行新的软件,并支付顾问和其他服务提供商的费用来规划和完成升级。

所有这些费用的总和就是一个特定软件包的 “总拥有成本”,而这些额外成本的总和可能是巨大的。同样,虽然一些自由和开放源码软件可能是免费的(例如,OpenOffice 和 LibreOffice 生产力套件),但客户可能会决定购买专有替代产品。

虽然 FOSS 产品的总拥有成本通常会更低,但使用 FOSS 而不是专有产品也还有其他优势,包括:

  • 获取代码。当客户安装专有软件时,代码的改进和性能完全依赖于厂商,因为客户既没有技术手段(访问源代码),也没有权利(法律许可)改变代码。如果客户需要新的或不同的功能,或者在切换或升级其他系统时需要更新以保持兼容性,厂商可能愿意也可能不愿意定制程序(要么完全不愿意,要么以客户愿意支付的价格来判断)。如果厂商停止对产品的支持,或者倒闭,客户就会陷入困境。相比之下,使用 FOSS 替代产品的客户有能力也有法律权利随时修改代码。它还可以雇佣任何它想雇佣的人帮助它修改或维护程序。如果创建代码的项目处于休眠状态,客户可能会感到失望,但不会被搁浅。
  • 免于被锁定。虽然开放标准越来越多地保护客户免于 “锁定”(即对单一供应商的依赖,以及如果他们想更换供应商,必须要付出巨大的转换成本),但从一种产品更换到另一种产品仍然是困难和昂贵的。以基于 Linux 的系统为例,这种开源操作系统已经成为电信、汽车和核电站等各种环境下的主要系统,有多个独立的 “发行版”,都是基于相同的核心软件(Linux 内核)。
  • 发布周期和错误修复。运行良好的开源软件项目都在不断地进行升级和实时修复错误。客户可以更频繁地享用这些工作,而不像专有产品的用户,他们必须等到厂商决定产生小版本或大版本。由于客户可以获得开源代码,开源软件也会因此获得大量的错误报告和建议修复,这些报告和建议会不断地被评估,并在适当的时候实施。或者,正如 “Linus’s Law”(Linux 内核开发的鼻祖和持续领导者 Linus Torvalds )所说的那样。”只要有足够的眼球,所有的 bug 都是浅层次的“。与此相反,专有厂商收到客户的投诉后,必须设法重现和诊断问题,然后才能解决问题。
  • 安全性。任何人在任何地方都能看到的代码在使用上会更安全,这似乎有悖于直觉,但一般来说,流行的开源软件程序被公认为更安全,主要原因与刚才所说的相同:因为任何人都能看到代码,任何人都能追踪漏洞的来源,让项目经理知道引起关注的原因,并且能自己提出修复建议。因此,安全问题通常可以比专有项目的缺陷更快地被识别、修复并传播给所有用户。因此,开源软件越来越多地被国防、金融和其他最重视安全的用户所使用。 尽管如此,在用户数量较少的地方,开源也会像专有代码一样脆弱。Linux 基金会目前正在努力识别类似的情况,并提供资金来纠正。

对开发者而言:必须指出的是,许多 FOSS 产品中的代码是由个人在自愿的基础上而不是在其雇主的指示下创建的。这些人无偿参与的原因有很多,包括享受、挑战、在项目社区中获得地位,以及获得宝贵的工作技能以提高市场竞争力和报酬潜力。在著名的 FOSS 项目中晋升的个人可以极大地提升他们的专业资质,因为企业也是 FOSS 项目的主要贡献者,而且熟练的 FOSS 开发人员需求量很大。

起源:那些第一次了解 FOSS 的人常常感到困惑,因为那里通常没有物理上的 “位置”,即中央开发设施。这并不奇怪,因为在大多数情况下,没有个人或法律实体拥有开源软件产品中超过一小部分的代码,也没有个人或法律实体负责创建或维护这些代码(Linux 内核就是一个典型的例子,它是由成千上万的个人开发者组成的全球网络创建的)。相反,代码可以简单地托管在云端,通常由一个为此目的成立的组织免费提供,该组织还提供各种支持工具和服务。

其他项目则由非营利性基金会支持(如支持 Firefox 网络浏览器的 Mozilla 基金会),或者由所谓的 “伞形组织” 支持,如 Apache、Eclipse 和 Linux 基金会,它们主办了几十个到几百个 FOSS 项目。少数的 FOSS 项目由营利性公司支持,如 Red Hat 和 Micro Focus International,它们分别主办了 Fedora 和 SUSE Linux 发行版。他们通过在提供这些独特的基于 Linux 内核的发行版的同时提供付费支持服务来获利。

虽然在 FOSS 之上销售服务(或因使用 FOSS 而增加利润)是从 FOSS 中获得经济利益的流行方式,但它们不是唯一的方式。仅仅是与其他需要相同软件工具和平台的公司分担软件的开发成本,就降低了每个供应商的开销。而且,正如合作开发的开放标准允许竞争者以其他方式(例如,通过开发和销售高于标准化水平的专有功能和服务)相互竞争一样,FOSS 可以带来全新的、有竞争力的商业机会。目前的一个例子是移动设备市场,大多数移动电话都运行在谷歌开发的安卓操作系统上,而安卓系统本身是基于 Linux 内核的。谷歌从其确保移动平台能够显示谷歌广告并支持其他谷歌软件和服务的能力中获利;移动设备制造商由于大大降低了软件开发成本,可以以较低的价格出售更多的手机;硅供应商由于拥有移动设备的人数迅速增加,可以出售更多的芯片。

相关阅读