什么是开源:包含历史、许可证和用途的完整指南

最后更新: 九月5, 2025
  • 开源允许您以明确的许可证查看、修改和共享代码。
  • 其文化以透明度、协作和快速原型制作为基础。
  • 有许可证、版权许可证、LGPL 许可证和公共领域许可证。
  • 公司和基金会(例如 OSI、AWS)推动标准和采用。

开源插图

我们每天使用的数字世界依赖于开源软件:从托管网站的服务器到手机、浏览器,以及日益重要的人工智能领域。虽然有时会被误认为是“自由软件”,但开源的本质不在于价格,而在于查看、研究、修改和共享代码的自由。

我们说的不仅仅是一种理念:它也是一种工作和生产技术的方式,在这种方式下,全球社区共同贡献改进、修复漏洞并加速创新。的确,越来越多的公司参与其中,因为他们发现,从长远来看,开放协作往往能带来可靠、安全且经济高效的产品。

什么是开源
相关文章:
什么是开源:深入了解

什么是开源?

当我们说软件是开源软件时,意味着它的源代码对任何想要审核、修改或扩展它的人都是开放的。开发者可以添加功能、修复漏洞或重新设计程序的部分内容,并根据许可协议重新分发这些改进。例子不胜枚举:从Linux(操作系统)到Mozilla Firefox(浏览器),再到数据库、云计算工具和机器学习应用程序等等。

这种模式不仅限于交付代码:它还建立了一套透明的参与规则、变更审查规则以及修改版本分发规则。这使得社区和组织能够在共同的基础上进行构建,并减少对供应商的依赖。

开源社区的代表

历史与演变:从免费软件到开源软件

20世纪80年代,理查德·斯托曼通过GNU项目引领了自由软件运动,其核心理念十分明确:用户拥有运行、研究、修改和共享程序的自由。他著名的比喻强调,“自由”意味着解放,而非一定是“免费的”。

随着专有软件的兴起,代码成为受保护的资产,用户失去了定制或审核程序的能力。1997年,埃里克·S·雷蒙德发表了《大教堂与集市》一文,这篇开创性的文章对比了封闭式开发(“大教堂”)和互联网上开放协作的开发过程(“集市”)。

1998年,一个里程碑式的事件发生:网景公司发布了其浏览器(Mozilla项目)的源代码,这最终催生了Firefox和Thunderbird。同年,开源促进会(OSI)成立,正式确立了“开源”一词及其定义。其理念在于强调开放式开发的方法论和商业优势,并将其与“自由软件”的哲学内涵区分开来。

随着 GitHub 等平台的兴起,协作变得全球化且普及化。最初对专有软件封闭性的“反抗”,最终演变为行业标准,IBM 和微软等公司也积极支持社区项目。

源代码 vs. 二进制文件:为什么了解源代码很重要

计算机并不理解高级指令:它执行的是由编译器和解释器生成的二进制文件(字节码或操作码)。可执行文件是针对操作系统定制的,并且从设计上来说,人类难以阅读。因此,如果只分发二进制文件,如果没有高级逆向工程工具,审计或重用工作成果将非常复杂。

开源通过发布源代码打破了这种壁垒。虽然这并不意味着它可以毫无限制地使用,但它确实允许任何人学习、提出修改意见或创建分支项目来探索新想法。开放的协作促进了交叉引用、错误检测和持续改进。

开放社区的文化原则

开源社区拥有共同的价值观和目标,这些价值观和目标指导着决策。在实践中,他们优先考虑透明度:所有与贡献相关的信息(代码、讨论、计划)都是公开的,这提高了决策质量,也让任何人都能更轻松地加入。

  PhotoGIMP:如何将GIMP变成Photoshop的视觉替代品

开放协作是另一项关键原则。项目以集体努力的方式构建:我们欢迎对他人工作成果的改进,并制定明确的规则以保持技术一致性,同时允许其他人在未来对解决方案进行调整。

此外,我们鼓励通过迭代周期进行快速原型开发。我们会测试各种想法,从经验中吸取教训,并将行不通的想法果断舍弃,从而强化实验文化。

作为一种治理机制,许多社区追求包容性的精英统治:所有声音都能被听到,同时,那些证明自身价值的想法会得到更多的支持和集体努力。

众包图

开源软件特性:从设计到开发

要被视为真正开放的项目,必须根据开源许可证发布,该许可证必须符合以下标准:允许分发源代码、修改和衍生作品,不得歧视任何人或用途,且不得有任意的商业限制。

开放式设计是指通过透明的流程进行规划和优先级排序,让社区能够影响产品路线图。虽然达成共识需要时间,但往往能带来更符合用户实际需求的解决方案。

开放式开发采用包容性和可见性的流程(例如,公共存储库和工具、明确的贡献接受标准),以便根据改进的质量而不是提交者的资历来评估改进。

开放的社区追求一个友好的环境,让每个人都能晋升到领导岗位,在开发者和用户的共同目标之间取得平衡。

开源软件与专有软件:可靠性、安全性和许可

在专有软件中,维护依赖于控制代码的单一组织。相比之下,许多开源项目拥有成千上万的贡献者,他们分散在各地,通过持续的审查和交叉测试,往往能带来更高的可靠性。

在安全领域,所有代码都可能存在缺陷;区别在于响应速度。开源项目往往会在社区报告漏洞后迅速发布修复程序。漏洞的可见性促使人们尽快修复,并且通常还能改进原始软件。Heartbleed 漏洞事件凸显了这种风险以及整个生态系统的应对能力。

许可协议也各不相同。专有软件的发布条款限制了代码的查看、编辑或重新分发。而开源许可则允许使用、修改和共享(具体条件取决于软件类型),并减少了厂商锁定。

最常见的开源许可证类型

公共领域:允许不受限制地修改、使用和商业化。通常情况下,作者会有意放弃版权,或者他们的作品已进入公共领域。

宽松型许可(例如 Apache、BSD):要求极低。允许创建和重新分发修改版本,甚至可以将其集成到商业产品中,但必须保留版权声明和基本条款及条件。

LGPL(宽松版 GPL):专为库文件设计。它允许应用程序(包括商业应用程序)链接 LGPL 模块。如果库文件本身被修改,则修改后的版本必须以相同的许可证重新分发。

Copyleft(例如 GPL):要求衍生作品在分发时必须遵循相同的条款。您可以出售软件,但购买者保留重新分发的自由。此外,必须注明原作者。

开放标准:规则,而不是代码

开放标准是公开的技术规范,旨在促进互操作性和统一性。它们便于实施和更新,不会造成不必要的障碍,从而简化了操作:从将笔记本电脑连接到任何路由器到使用跨平台兼容格式,都变得更加便捷。

  迷你电脑适合专业图形设计吗?

注意:标准和开源软件并非同一概念。标准定义的是某类软件的编写方式或运行方式,而非代码本身。要被视为“开源”,其实现不得依赖专有技术。

谁负责监管开源?

开源促进会 (OSI)是一个非营利组织,负责维护开源定义和已批准的许可证列表。遵循其准则即可使用“OSI 认证”标签,这有助于建立信任并促进项目和公司之间的合作。

商业模式和商业版本

开源软件也实现了商业化。一种常见的策略是为企业环境提供服务和支持。红帽公司(被IBM收购,这是该领域规模最大的交易之一)的案例表明,生产平台的策划、认证和维护蕴藏着巨大的商机。

另一种方法是SaaS模式:底层是开源软件,顶层是托管服务。例如,WordPress就结合了开源软件、主机托管、技术支持和高级功能,这些服务通过订阅的方式付费使用。

数据库和ERP 系统中通常存在双重许可模式:开放版本(例如 GPL)和专有版本,后者包含额外功能(完全托管、企业级备份、额外加密),用于特定的商业用途。

此外,一些生态系统通过流量、合作关系或市场平台来创造收入。例如,Firefox 等浏览器通过与搜索引擎的协议为其部分开发提供资金;而协作平台则将免费产品与付费计划和服务相结合。

企业参与:从 AWS 到基金会

大型公司会为关键项目贡献代码、资金和人员。例如, AWS定期向数千个社区(GitHub、Apache、Linux 基金会等)做出贡献,并致力于安全改进、可扩展性、性能和新功能的开发,从而使其客户能够在云端无缝部署开放技术。

这种公私合作模式巩固了开源作为现代基础设施基础的地位,同时公司和独立开发者也贡献了补丁、文档和工具。

开源实践:数据、人工智能、区块链等

这种影响显而易见。Linux 在服务器领域占据主导地位,据权威估计,全球绝大多数网络托管服务都依赖于 Linux。基于 Linux 内核的 Android 系统允许众多厂商对系统进行定制,并将其应用于各种设备,从而普及了高端智能手机。

在云计算领域,Kubernetes已成为容器编排的事实标准。它于 2014 年发布,被各种规模的公司所使用,并催生了一个价值数十亿美元的生态系统,其自动扩展和自我修复等功能如今已成为我们习以为常的常态。

现代人工智能依赖于TensorFlow和PyTorch等开放框架,这些框架已被应用于数万个项目中,并被全球众多公司广泛采用。这种开放性加速了实验、可复现性和同行评审。

在区块链领域,以太坊和Solana等项目完全开源,允许任何人审查智能合约并创建去中心化应用(dApp)。监管辩论(例如欧盟针对稳定币的MiCA框架)以及DeFi生态系统的发展表明,开源软件如何推动金融创新,Raydium和Meteora等协议不断发展壮大,并对市场和政策环境做出响应。

行业报告显示,绝大多数公司在其技术栈中都包含开源软件,开发者社区也积极参与公共项目。学术研究也表明,由于贡献的多样性和数量,开源项目的更新速度更快。

实际运作方式

项目组织在公共代码库(GitHub 最流行)中,工作流程基于Git、问题跟踪、集成开发环境 (IDE)和同行评审。分支、测试和技术讨论的可见性使得任何人都能轻松了解项目状态并提出改进建议。

  最常用的 ERP 系统:优化公司管理

维护者制定了贡献指南、质量标准、持续集成/持续交付 (CI/CD) 以及安全策略。所有决策均公开记录;分支用于在不破坏主线的前提下进行实验,或在治理出现分歧时推广替代方案。

关键在于:仅仅在公共代码库中发布是不够的。您必须选择并声明一个符合开源软件定义(Open Source Definition)的许可证,以便明确关于使用、修改和再分发的权利和义务。

与自由软件和“自由”一词的关系

自由软件是一项倡导用户特定自由的社会运动。由此衍生出“开源”一词,作为强调其方法论和实际益处的标签。在日常用语中,它容易与“免费软件”(功能有限或仅限短期免费使用的商业产品)混淆,后者不授予修改或再分发的权利。

当理念与实践相结合时,也会使用FOSS(自由/开源软件)一词。无论如何,建议检查项目是否需要专有组件才能运行,因为即使核心组件是开源的,这也与自由软件的原则相悖。

案例和社区:Linux 内核、Red Hat 和事件

Linux内核就是一个绝佳的例子:自 1991 年以来,成千上万的贡献者每天都在添加、修正和删除数千行代码。如果没有成熟的流程、自动化测试和积极参与的全球社区,这种速度是不可能实现的。

在商业领域,红帽公司推广了一种基于支持、认证和服务,面向关键任务环境的模式,证明了开源技术也能构建强大的业务。其他项目则将开源与服务或协议相结合,为长期开发提供资金。

在Hacktoberfest(每年十月,成千上万的人参与各种项目)或拉丁美洲的FLISOL等活动中,文化得到庆祝和发展,这些活动旨在推广自由软件的使用和理念。

常见的误解和现实

“免费的软件肯定不好”:错误。开源软件质量很高,通常优于专有软件。“开源软件安全性较低,因为代码是公开的”:也是错误的。公开审查有助于及早发现和修复缺陷。

“没有支持”:这取决于具体项目。许多开源解决方案都提供专业服务计划,而且无论如何,都有庞大的公司和专家网络可以提供支持;此外,还有非常活跃的社区,他们会解答问题并记录最佳实践。

开源将技术自由与协作生产方法相结合,这种方法已从学术界的罕见现象发展成为构建基础设施、应用程序和标准的首选方式;我们在服务器、移动设备、人工智能、区块链和云服务中都看到了这一点,在这些领域,透明度、迭代速度和大规模协作使创新发展得更快,并为每个人带来更可靠的结果。