主页 topics 什么是开源软件? 什么是开源软件?
开放源软件是以开放协作方式开发的,其源源代码可用任何人使用、检查、修改和再分发。
使用台式计算机工作的男士
什么是开源软件?

开源软件是通过开放协作开发和维护的软件,通常免费提供,可供任何人使用、检查、修改和重新分发。 这与专有或闭源软件应用程序(如 Microsoft Word、Adobe Illustrator)形成对比,这些应用程序由创建者或版权所有者出售给最终用户,除非版权所有者说明,否则不能对其进行编辑、增强或重新分发。

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

开源软件简史

到上 70 年代中期的时候,计算机代码还被视为计算机硬件运行的一部分,而不是受版权保护的唯一知识产权。 组织自己编写软件,而且分享代码也是一种很常见的做法。

版权作品新技术利用委员会 (CONTU) 成立于 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 年采用了“开源”一词。 开源倡议就是为了倡导这一点而创建的。该组织还通过开源定义为行业建立了基本准则,并拥有符合要求的开源许可证。 今天,自由软件、开源软件(或称为 OSS)、自由和开放源代码软件(或称为 FOSS)和/自由开放源软件(或称为 FLOSS)这些术语都指同一种事物:具有可供公众使用和定制的源代码的软件。

企业和个人计算中的开源

开源软件现在在计算中扮演着至关重要的角色,开源技术为互联网、商业计算和个人计算提供了基础。 几乎所有的计算设备现在都包含许多类型的开放源代码,通常被开发人员用来执行基本操作,通常还有更高级的功能。

一些最流行的开源软件应用程序包括 

  • Linux 操作系统,Unix 操作系统的开源替代品
     

  • Mozilla Firefox,一种最初基于 Netscape Navigator 的 Web 浏览器
     

  • LibreOffice,这是一套可与微软 Office 相媲美的办公应用程序。
     

  • GIMP(GNU 图像处理程序),Adobe Photoshop 的开源替代程序
     

  • VLC Media Player,用于观看视频的跨平台应用程序

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

  • 编程语言和框架
     

  • 数据库和数据技术
     

  • 操作系统
     

  • 基于 Git 的公共存储库
     

  • 人工智能/机器学习/深度学习框架

为什么用户和公司选择开源

选择开源软件的原因各有不同,取决于人和组织。 在许多情况下,最终用户完全不知道他们的计算机或移动设备上的开源程序。 最终用户下载免费应用程序(如 Mozilla Firefox 浏览器或 Android 应用程序)的情况也很常见。 这些用户只是想要软件的功能,从未想过要重写代码,甚至看都不想看。

另一方面,公司可能会选择开源软件而不是专有软件的原因是,因为开源软件的成本低(甚至没有成本),可以灵活地定制源代码,或者存在支持应用程序的大型社区。 专业或业余程序员可能会自愿将他们的开发和测试技能提供给开源项目,通常是为了提高他们的声誉并与该领域的其他人建立联系。 现在,公司普遍为开源项目提供有薪员工,以支持开源软件开发的活力,并帮助确保高质量的产品。

虽然开源产品可以节省公司的许可成本,但可能会产生额外成本,一般是网络集成、最终用户和 IT 支持,以及通常包含在专有软件中的其他服务。 尽管如此,许多公司认为企业开源软件至少与专有软件一样可靠和安全,并且更习惯使用开源解决方案,因为他们可以检查程序代码并确切了解这些程序正在向其计算基础架构中添加什么内容。

开源软件是如何开发的

开源开发模式无所不包。 大量的开源程序都是由单独的程序员或小型程序员团队开发的。 例如,Guido van Rossum 说,他当初之所以从事与研究如今火热的 Python 编程语言,是因为他在 1989 年的圣诞节假期周有空闲时间。同样,Apache Web 服务器也是由一小群程序员开始的,他们一起努力以增强这款服务器软件,这些软件最初是由 Robert McCool 作为超级计算项目的本科生编写的。

随着这些项目和其他类似的开源项目的成熟,成千上万的程序员贡献了无数行代码,还有测试软件、编写文档、构建项目网站等。

在另一个极端,Kubernetes 容器编排平台是由谷歌工程师发起的,作为一种技术的开源实现,最初为平衡谷歌服务器工作负载而在内部创建的。 谷歌通过在 Linux 基金会内部创建一个名为云原生计算基金会 (CNCF) 的新联盟,将该项目引入到了开源社区。 此后,数千名开发人员致力于不断发展的内核,其中包括大型计算机公司的代表。

随着时间的推移,生态系统必须支持开源软件项目。 GitHub、BitBucket、SourceForge 和 Google Code 等代码托管服务提供中央存储库、版本控制和其他功能,使不同的分布式工作组能够协作和管理开源项目。 仅 GitHub 就注册了 8300 万开发人员和超过 2000 万个开放项目存储库(每个存储库代表一个开源项目的一个独特分支)。

已经出现一些非营利组织来支持和资助开放源码项目的持续维护,如自由软件基金会和开放源码倡议 (OSI)。 并且有几十种特定于应用程序的基础。 例如 Linux 基金会,它支持特定的开放源程序和支持这些技术的相关项目。

开源软件与知识产权

“开源”和“专有”代表应用程序中包含的知识产权 (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,这是历史上最大金额的软件收购。

WordPress 最初是一个博客平台,现在被广泛用于构建、管理和托管网站。 WordPress 的运营方式是一家基于云或软件即服务 (SaaS) 的平台,向客户收取 Web 托管、支持和增加站点功能(例如,电子商务功能、SEO 工具)的分层订阅费。

其他开放软件创建者对他们的软件不收取任何费用,但由于自己的软件产生的流量而获得可观的收入。 例如,GitHub 通过其网站上出现的广告赚取收入;Mozilla Firefox 从其支持的搜索引擎中获得收入。

相关解决方案
IBM 云上的 Red Hat 软件

IBM 和 Red Hat 解决方案旨在提高生产力、降低成本和改善业务成果。

探索 IBM 和 Red Hat 解决方案
IBM LinuxONE

了解安全的开源软件服务器,具备针对关键应用的最佳安全性和可扩展性。

LinuxONE 一探究竟
Linux on IBM Z

IBM Z 大型机平台上的 Linux 操作系统具备混合多云中的数据隐私和网络安全特性。

了解 Linux on IBM Z
IBM Power 上的 Enterprise Linux

借助 IBM® Power® 上的 Enterprise Linux®,您可以利用行业领先的云原生部署选项,放大开源技术的诸多优势,如可靠性、安全性和可扩展性。

探索 Linux on Power
资源 IBM 的开源技术

从区块链到容器,从人工智能到操作系统,我们的开发人员正在创建新兴的开源项目,并为这些项目提供代码、文档和支持材料。

您的开源软件安全吗?

改善您的软件供应链可以显著降低您受到危害的风险。

采取下一步行动

在 IBM,我们的使命是帮助客户以最快速度完成其业务数字化转型之旅,这是基于 Red Hat 开源技术的敏捷基础,可让你一次构建,随处部署。 了解 IBM 和红帽解决方案如何提高生产力、降低成本、改善业务成果和加速数字化转型,无论您从事哪个行业。

探索 IBM 和 Red Hat 解决方案