什么是开放式源代码软件?

香港城市鸟瞰图

作者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

什么是开放式源代码软件?

开源软件 (OSS) 是通过开放式协作开发和维护的源代码。任何人都可以按照自己的意愿使用、审查、修改和重新分发开源软件 (OSS),通常无需支付费用。

开源软件与 Microsoft Word 或 Adobe Illustrator 等专有或闭源应用程序形成鲜明对比。创作者或版权持有者会将专有或闭源软件出售给最终用户,而除非版权持有者另行规定,否则最终用户不得编辑、增强或重新分发该产品。

“开源”也指一种基于社区的方法,该方法可通过开放式协作、包容性、透明度和频繁公开更新来创建任意知识产权(例如,软件)。

开源已成为现代软件开发的核心支柱,尤其是在现代企业 DevOps 模式中,这一模式是一套用于加速高质量应用程序和服务交付的实践、协议和技术。通过将开源工具集成到 DevOps 工作流中,团队可以简化流程、自动化重复性任务并促进更紧密的协作,最终加快开发和部署周期。

Linux 基金会的一项研究表明,任何给定软件的代码库中,有 70-90% 是由开源组成。1许多常用的软件即服务 (SaaS)应用程序,如 HubSpot 和 Salesforce,都在其基础设施中集成了一定程度的开源软件。即使是像苹果这样传统上封闭的生态系统也依赖于开源工具。例如,许多 iOS 开发人员使用开源代码库和框架来加快开发速度并提高效率

生成式人工智能的加速推动了这一趋势:2023 年发布的三分之二大语言模型 (LLM),用于构建生成式 AI 应用的最常见基础模型,都是开源的。2

辅以专家洞察分析的最新科技新闻

通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。每份时事通讯都包含取消订阅链接。您可以在此管理您的订阅或取消订阅。更多相关信息,请参阅我们的 IBM 隐私声明

开源软件简史

直到 20 世纪 70 年代中期,IT 专业人员一直认为计算机代码是计算机硬件运营中隐含的部分,而不是受版权保护的独特知识产权。组织会编写自己的软件,而代码共享则是一种常见做法。

版权作品新技术应用委员会成立于 1974 年。它认定软件代码是适用于版权保护的一种创意作品。此论断推动了作为一个行业的独立软件发行业的发展,而专有源代码则是其中的主要收入来源。随着个人计算让应用程序进入了每张公司办公桌和许多家庭,软件市场的竞争变得异常激烈。而软件发行商对其产权受到侵权的警惕性也变得越来越高。

一场反对专有软件限制与约束的运动于 1983 年开始。彼时,程序员 Richard Stallman 对用户无法以他们认为合适的方式来定制专有软件从而完成其工作的观念感到愤怒。Stallman 认为“软件应该是自由的,就像言论自由那样,而不是像免费啤酒那样”,同时他还倡导可免费定制软件这一观念。

Stallman 创立了“Free Software Foundation”并继续推动 AT&T 旗下 UNIX 操作系统的开源替代方案以及其他应用程序的开发工作。此外,他还首创了反版权软件许可证(即,GNU 通用公共许可证 (GPL)),该许可证要求所有已增强其源代码的人员同样向所有其他人员免费发布其编辑版本。

Eric S. Raymond 于 1997 年发表的文章“The Cathedral and the Bazaar”是自由软件运动中的又一个分水岭。Raymond 将专有软件开发典型的封闭、自上而下的方法(其中所有开发工作均由一个核心小组(他称之为“教堂”)来处理)与通过互联网来开放、自由共享的公共开发(“集市”)进行了对比。此后不久,Netscape Corporation 将其 Mozilla 浏览器代码作为开源软件进行了发布,而开源运动自此也实现了合法性。

由于很多人认为 Stallman 的“免费软件”一词不适当地强调了“免费”是软件的主要价值,因而在 1999 年采用了“开源”一词。开放源代码促进会 (OCI) 的创建便是为了倡导这一理念;此外,该组织还通过开源定义为行业建立了基本规则,同时还负责托管合规的开源许可证。如今,“免费软件”、“开源软件”、“免费开源软件”和“免费或自由开源软件”均指同一对象:源代码可供公众使用和定制的软件。

应用程序开发

开启旅程:云端企业应用程序开发

在本视频中,Peter Haumer 博士通过演示不同的组件和实践(包括 IBM Z Open Editor、IBM Wazi 和 Zowe),探讨了混合云环境中现代企业应用程序的开发现状。

开源与开放标准

开源不应与开放标准混淆。开源软件是指其源代码可供任何人免费使用、修改和分享的软件。这方面的一个例子是 Linux作系统,它是由全球社区协作开发的。

相比之下,开放标准是公开可用的指导原则,可确保不同技术之间的互操作性。例如,超文本传输协议 (HTTP) 就是一种开放标准,它定义了 Web 浏览器和服务器如何通信。

虽然开源软件可能会采用开放标准来确保兼容性,但它们是不同的概念。开源是关于使软件代码易于访问的,而开放标准则侧重于制定不同系统如何协同工作的规则。

企业和个人计算中的开源

如今,开源软件已在计算领域发挥着至关重要的作用,而开源技术则为互联网、商业计算和个人计算打下了基础。现在,几乎所有计算设备均包含多种开源代码,而这些代码通常会由开发人员用于执行各种基本操作以及更高级的功能。

一些最常用的开源软件应用程序包括以下几种:

  • Linux 操作系统,它是 UNIX 操作系统的开源替代方案
  • Mozilla Firefox,一款最初基于 Netscape Navigator 的 Web 浏览器
  • LibreOffice,可与 Microsoft Office 媲美的一套办公自动化应用程序
  • GIMP(GNU 图像处理程序),Adobe Photoshop 的一款开源替代方案
  • VLC 媒体播放器,一款用于观看视频的跨平台应用程序

开源程序也广泛应用于网络、企业和云计算领域。IT 专业人员认为在其组织的部署中最常见的开源软件类别包括了:

  • 编程语言和框架
  • 数据库和数据技术
  • 操作系统
  • 基于 Git 的公共存储库

为什么用户和组织选择开源

选择开源软件的原因可谓因人而异、因组织而异。很多情况下,最终用户完全不知道他们的计算机或移动设备上运行了哪些开源程序。终端用户下载免费的应用程序(例如 Mozilla Firefox 浏览器或 Android 应用)也是很常见的。这些用户希望获得软件的功能,但并无意重写,甚至不打算查看其源代码。

另一方面,公司可能会因为开源软件成本低(甚至免费)、可以灵活定制源代码,或拥有庞大的用户与开发者社区支持等原因,而选择开源软件而非专有软件。

专业或业余程序员可能会自愿将其开发与测试技能提供给开源项目,而此举通常旨在提升其个人声誉并与该领域的其他人员建立联系。眼下,各大公司为开源项目提供带薪员工以增添开源软件开发的活力并帮助确保产品的高质量已成为一种普遍现象。

虽然开源产品可为公司节省许可成本,但它们也可能会产生其他成本,而此类成本通常涉及网络集成、最终用户与 IT 支持以及通常包含在专有软件中的其他服务。尽管如此,许多组织认为企业级开源软件在可靠性和安全性方面至少与专有软件同样出色。他们往往对开源解决方案更有信心,因为可以检查程序代码,从而确切了解自己在计算基础设施中添加了什么。

程序员如何创建开源软件

开源开发模式涵盖了方方面面。大量开源程序均由独立程序员或小型程序员团队来发起。例如,Guido van Rossum 表示:他在 1989 年 12 月的圣诞假期周有空闲时间,因此开始开发现在颇为流行的 Python 编程语言。类似地,LinkedIn 为内部使用开发了分布式流处理平台 Apache Kafka,随后将 Kafka 开源并捐赠给 Apache 软件基金会

随着这些项目以及其他类似开源项目的成熟,它们已涉及成千上万的程序员,而这些程序员则贡献了无数行代码且负责测试软件、编写文档、构建项目网站等等。

另一方面,Google 工程师发起了 Kubernetes 容器编排平台,将其作为 Google 内部创建的用于平衡服务器工作负载技术的开源实现。Google 通过在 Linux 基金会内创建了一个名为“云原生计算基金会”的新联盟,从而将该项目引入开源社区。自那时起,数以千计的开发人员便致力于这一不断发展的内核,其中包括各大计算机公司的代表。

随着时间的推移,生态系统必须能支持开源软件项目。GitHub、Bitbucket、SourceForge 和 Google Code 等代码托管服务可提供中央存储库、版本控制和其他功能,从而使不同的分散工作组能协作处理和管理开源项目。在 2023 年报告中,GitHub 注册了 1 亿名使用其产品的开发者。3

一些非营利组织,如自由软件基金会 (Free Software Foundation) 和开放源代码促进会 (OCI),已经出现以支持并资助开源项目的持续维护。此外,还有数十个特定于应用程序的基金会(例如 Linux 基金会)支持特定的开源程序以及支持这些技术的相关项目。

开源软件和知识产权

“开源”和“专有”代表某一应用程序中所含知识产权 (IP) 的所有权的替代方法。通过开源,IP 旨在使公众受益,而知识产权的所有权则不附带任何盈利动机。相比之下,专有软件可通过收取订阅费或专有许可费将知识产权的价值货币化。

然而,开源软件背后的理念并不主要是反盈利或反资本主义的宣言。不过,在其用户社区手中,这款软件自然会通过为更多用户提供更大价值而实现其最大潜力。

作为历史上最大规模的开源项目,互联网最初被用于分享学术论文;而在此狭隘用例之外的一切都是无数人设想和实现新可能性所带来的结果。

虽然开源软件对公众是免费开放的,但它并不属于公有领域后者是一种法律上的知识产权类别,不存在所有权。通过对传统版权的巧妙改造,开源软件创建者首创了所谓的“反版权”;该机制允许公众无限制地使用、更改和重新分发源代码,但禁止他人将基于此代码的作品制作成受版权保护的专有软件。然而,如今却有 100 多种不同类型的开源软件许可证,而其中某些则明确允许基于开源代码而构建的衍生作品获得版权并进行销售。此现象为那些创建开源软件的人群扩大了商业机会。

开源软件许可证

同样,Stallman 的 GPL 规定所有人均能以其认为合适的方式重写他的软件,只要由此产生的代码是免费发布以供所有人使用的。通过此方式,GPL 反版权许可证创建了一种新的准公共领域知识产权,但由原始版权所有者向其施加了可通过法律途径来执行的限制,以免他人在后续提出针对限制性所有权的主张。

从那时起,已经制定了许多开源软件许可证;开放源代码促进会列出了 100 多种已批准的开源许可证。其中部分许可证允许通过开源代码来创建专有产品。

开源许可证有时会被归类为“宽容型”,即允许用户对自己的作品进行版权保护。或者,有时它们也被归类为“保护性”,如同“反版权”。MIT 和 BSD 开源许可证是最常用的宽松型许可证,而 GPL 则仍是最常用的保护性反版权许可证之一。很多替代许可证均与 GPL 或 MIT 兼容,这意味着根据此许可证编写的软件代码可在使用 GPL 或 MIT 许可证的其他应用程序中使用。

开源商业模式

创建开源软件虽然看似是一项高尚的事业,甚至可谓慈善事业,但对其进行创建、维护和发展却涉及若干工作,而完成这些工作则关乎金钱。幸运的是,开源项目以及围绕它们来打造的公司可通过多种方式实现蓬勃发展。

其中一种途径是向基金会进行慈善捐款。企业之所以有兴趣支持开源软件,是因为它在提供重要功能的同时能显著节省成本,而且企业通常会出资并安排有薪员工参与开源项目的开发。然而,这主要提供的是长期的技术维护,并不会为开源项目带来利润。

更常见的商业模式则是向客户收取享受支持和专业知识的费用。1993 年,Red Hat 开始销售其 Linux 操作系统的企业再发行版,以便向客户收取享受支持和附加功能的费用,从而明确用于解决企业在部署未经策划且持续更新的操作系统时可能遇到的问题。2012 年,Red Hat 成为首家收入超过 10 亿美元的开源软件公司;2019 年,IBM 公司以 340 亿美元收购 Red Hat,创下历史上最大的软件收购记录。

多年来,Red Hat 已将其开源生态系统扩展到 Linux 之外,在开发和支持其他关键开源项目(如 Kubernetes 和 Ansible)方面发挥了领先作用,这些项目已成为其云原生自动化解决方案的核心组成部分。

WordPress 最初是一个博客平台,现在则被广泛用于构建、管理和托管网站。WordPress 作为基于云的或 SaaS 平台运营,并向客户收取分层订阅费用,用于网站托管、支持以及额外功能(例如电子商务功能或 SEO 工具)。

其他开放软件创建者不会向其软件收取任何费用,但却会因其软件产生的流量而获得可观收入。例如,GitHub 的收入来自其网站上的广告;Mozilla Firefox 的收入来自其支持的搜索引擎。

开源人工智能时代

根据开放源代码促进会的定义,开源人工智能指的是“基于允许用户自由使用、研究工作原理、检查组件、修改及分享(无论是否对系统进行更改)的条款而提供的 AI 系统”。这种方法强调可访问性、灵活性和透明度,允许任何人合作改进技术。

开源 AI 有助于创建一个更加民主和创新的生态系统。向公众提供 AI 系统可以促进更大的协作并加速该领域的进步。IBM (Granite)、Meta (Llama) 和 Mistral AI 等大型组织正在引领开源 AI 的开发,为全球开发人员和研究人员提供先进的工具。例如,IBM 的人工智能平台 watsonx.ai,利用多种关键的 AI 开源工具和技术来支持创新和性能。

大语言模型 (LLM) 是一种先进的 AI 系统,它利用深度学习和庞大的数据集来生成文本、转换语言和创建各种形式的内容,可以分为两大类:专有 LLM 和开源 LLM。这两种类型都是生成式 AI 的关键,生成式 AI 是一种根据学习到的模式和数据(文本、图像或音乐)生成新内容的技术。

开源 LLM 尤其对生成式 AI 生态系统至关重要,因为与专有模型相比,它们促进了更透明、更易于访问和社区驱动的方法。

与专有的 LLM 模型(例如 Google 的 LaMDA 和 OpenAI 的 ChatGPT-3 和 GPT-4)相比,开源 LLM 具有明显的优势。例如,允许开发人员检查、修改和改进模型,从而实现快速创新和定制。

另一个例子是,IBM® Granite AI 模型可在 Hugging Face 和 GitHub 上以 Apache 2.0 许可证获取,其性能可与更大型系统相媲美,但所需计算资源远少,展示了开源模型在生成式人工智能领域如何提供更高效的替代方案。此外,开源 AI 为希望使用专有数据微调生成式 AI 模型的组织提供了一种具有成本效益的解决方案。

2025 年,中国公司 DeepSeek 推出的 R1 大型语言模型颠覆了 AI 市场,其训练成本仅为 560 万美元,相较于 ChatGPT 等商业领军者仅为一小部分。这一进展展示了开源大语言模型 (LLM) 如何与商业产品竞争,在本例中,通过使用更经济的硬件和较少的高端微芯片实现。5这一变化凸显了开源模型在推动生成式人工智能技术普及化方面的作用。

开源与安全

开源软件市场将从 2024 年的 418.3 亿美元增长到 2025 年的 489.2 亿美元,年复合增长率 (CAGR) 为 16.9%。3这一快速增长使开源安全(即在开发和生产环境中管理使用开源软件所带来的安全风险的实践)变得愈发关键。

关于开源软件的主要安全隐患,其核心在于某些组件的来源不明且缺乏设计文档,这可能存在潜在漏洞。一旦项目使用了这些被篡改的库文件,就会导致供应链攻击。

作为其漏洞管理策略的一部分,许多组织使用开源情报 (OSINT),即收集和分析公开可用的信息,以评估威胁、做出决策或回答特定问题。OSINT 是开源安全更广泛战略中的一个强大网络安全工具,因为它利用大量开放数据来识别威胁、跟踪潜在风险,并确保开源软件保持安全可靠。

相关解决方案
IBM Enterprise Application Service for Java

完全托管的单租户服务,用于开发和交付 Java 应用程序。

深入了解 Java 应用程序
DevOps 解决方案

使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。

深入了解开发运维解决方案
企业应用程序开发服务

云应用程序开发意味着一次构建、快速迭代和随处部署。

应用程序开发服务
采取后续步骤

借助 IBM 云应用程序开发咨询服务,您可以获得提供专家指导和创新解决方案,使您的云策略更为精简高效。与 IBM 的云专家合作,实现应用程序的现代化改造、扩展和加速,为企业带来变革性的成果。

深入了解应用程序开发服务 开始免费使用 IBM Cloud 进行构建