什么是开源?
开源是一种分散的生产模式,允许任何人修改和共享技术,因为其设计可公开访问。该术语起源于软件开发环境,表示软件符合某些自由发布标准。今天,术语开源方式指的是基于自由信息交换、快速原型设计和协作开发原则的更广泛的价值集。任何人都可以贡献新的想法,进一步改进技术,使其有机发展。
为什么开源很重要?
开源的想法源于技术社区。技术创新需要全球协作才能发展。例如,假设美国的一个编程团队为金融应用程序开发新的开源技术。澳大利亚的另一个编程团队修改了该技术,使该技术具有更适合卫生部门的新功能。然后,亚洲的第三个团队开发了新的开源产品,将原始技术作为核心组件。
这种知识共享和集体创新使整个社区受益。将技术锁定在专利、版权和昂贵的许可之后会限制进步。在过去几十年里,许多流行的开源项目促进了全球技术的快速进步。
开源的原则是什么?
任何开源项目背后的核心原则如下:
社区
开源社区是一群人为实现共同目标而聚集在一起而形成的社区。他们共同的价值观和目标指导决策,并推动开源项目向前发展。
透明度
开源项目确保社区中的每个人都可以访问完成最佳工作所需的信息和材料。有了对全局的认识,团队成员可以做出更有效的决策,并在彼此的想法和发现的基础上再接再厉。
开放式协作
社区项目鼓励团队合作,以便团队可以解决个人无法解决的问题。例如,任何开源项目的成员都会做出改变,以改进其他人所构建的内容。您还可以建立规则,以便其他人将来可以根据需要修改解决方案。
快速原型制作
开源项目遵循迭代方法,在这种方法中,团队成员经常创建和共享原型。快速原型制作鼓励一种实验文化。您可以改进和推进有效的更改,放弃无效的更改。
包容性精英领导体制
开源运动鼓励不同的观点和对话。社区通过协商一致做出决策,但也优先考虑成功。最好的想法会得到开源社区更多的支持和助力。
开源软件有哪些特点?
任何开源软件的特点都与开源运动的价值观密切相关。
开源
开源软件必须在符合特定分发标准的开源许可证下发布,例如:
- 对作为聚合软件分发的组成部分出售或赠送软件没有任何限制
- 必须包含源代码并允许分发
- 必须允许修改和衍生作品
- 该计划所附权利必须适用于所有人,不得歧视
开放式设计
开放式设计保证了设计和规划软件的透明和开放过程。这是让社区推动软件的设计和功能路线图。这可能具有挑战性,因为获得社区共识可能是一个耗时的过程。然而,社区认可的设计会带来更好的产品,从而更有效地满足用户的需求。
开放式开发
开放式开发是采用包容和透明的开发过程,让每个人都能平等参与。可公开访问的服务为发展活动带来了可见性。例如,开源项目通常采用一组标准,明确说明评估贡献的指标。这允许对所有软件更新给予同等考虑,无论该更新来自首次贡献者还是高级开发人员。
开放式社区
开放式社区可以确保软件开发社区是一个包容的环境,所有声音都能被听到,任何人都可以升任领导职位。它通过建立共同目标和建立牢固的联系来平衡开发人员和用户的需求。
什么是开源软件?
开源软件是任何人都可以检查、修改和改进源代码的软件。源代码是软件的一部分,计算机程序员通过操作软件来更改应用程序的功能或添加新功能。任何有权访问软件源代码的人都可以通过向应用程序添加功能,或解决现有错误来改进或自定义应用程序。您今天使用的大多数 Web 应用程序和设备中都有开源软件。开源软件的一些示例包括 Linux(一种开源操作系统),以及 Mozilla Firefox(一种开源互联网浏览器)。
开源软件和其他类型的软件有什么区别?
有时,创建软件的企业或个人出于商业原因更愿意对软件进行控制。他们保留对源代码的专有所有权,这意味着只有他们才能修改代码以修复错误或添加新功能。此类软件称为专有软件或闭源软件。Adobe Photoshop 和 Norton AntiVirus 产品就是专有软件的示例。
开源软件与闭源软件
开源软件与闭源或专有软件之间的三个主要区别如下:
可靠性
安全性
任何源代码都可能存在安全漏洞,使其容易受到网络攻击。但是,开源软件具有修复速度更快的优势。一旦您或其他社区成员报告安全漏洞,开源项目会在一两天内发布代码更新。如果商业公司开发开源软件,高可见性会迫使尽快解决问题,甚至可能会带来更好的原创软件。
相比之下,专有软件的更新周期更长,原因如下:
- 供应商在给定项目上工作的人员可能较少。
- 供应商可能会优先考虑财务问题而不是安全漏洞。
- 供应商可能会延迟发布安全更新,因为他们更喜欢捆绑多个更改并一次性发布。
许可
- 修改个人项目的源代码。
- 如果用户继续允许其他人查看其更改,则重新分发修改后的代码。
有哪些类型的开源软件许可?
尽管开源许可的限制比专有许可少,但权限的级别和范围因类型而异。以下是一些常见的开源许可类型。
公共域许可
公共域许可表示任何人都可以不受限制地修改、使用软件或将软件用于商业用途。在大多数情况下,公共域开源软件创作者有意或自愿决定不对软件进行版权保护。
宽松式许可
宽松式开源许可包含对如何修改或分发软件的最低要求。这种许可类型的一些示例是 Apache 许可和 Berkeley Source Distribution(BSD)许可。虽然原始软件是受版权保护的开源软件,但用户可以将修改后的版本重新发布并用于商业用途。
较宽松公共许可
较宽松公共许可(LGPL)允许您无限制地使用开源组件。这些组件通常可以作为称为库的代码模块访问,您可以将其插入任何代码并使用。如果在应用程序中使用 LGPL 源代码,则可以将应用程序用于商业用途。但是,如果修改现有 LGPL 代码,则必须再次在同一许可下重新分发此代码。
Copyleft 许可
- 如果修改 copyleft 开源组件,则必须随应用程序一起发布所有新的源代码。然而,如果您只在内部使用该应用程序,而从不向公众发布,则不必这样做。
- 您可以出售您的 GPL 修改代码,但如果买方愿意,可以进一步重新分发。
- 您必须在新代码的版权声明中注明所有过去的代码作者。
谁监管开源软件?
开放源代码促进会(OSI)是一个全球性的非营利组织,致力于教育和倡导所有类型的开源软件。作为一个标准制定机构,它负责维护开源定义,这是一个文档,合法地定义了使任何软件开源的条件。
通过遵循该组织的开源定义,您可以获得 OSI 批准的许可商标。该商标可以建立信任,鼓励其他人做出贡献并与您协作。OSI 维护着一份已批准许可的列表,并在开源社区中批准新许可。它还规定了软件的开放标准要求。
什么是开放标准?
开放标准是支持技术一致性和互操作性的软件开发规则。开放标准可免费用于实施、采用和更新。因此,它们使我们日常生活的许多方面更加舒适和方便。
例如,标准允许所有类型的计算机连接到所有类型的无线路由器。您可以使用笔记本电脑从家里和您喜欢的咖啡馆连接到互联网,而不管他们使用什么路由器。如果没有这些标准,您将不得不找到一家所用路由器与您的笔记本电脑兼容的咖啡馆!
开源与开放标准
标准是编写特定类型的源代码的规则、指南和规范,而不是代码本身。软件标准必须遵循某些规则才能被归类为开源。例如,如果您需要专有技术来实现某些标准,那么这些标准就不是开源的。
为什么存在商业版本的开源软件?
创作者和其他公司通过销售加载项(如分析或安全),这些加载项能够吸引更大的业务,以此将许多开源项目货币化。私营公司可以通过在其应用程序代码中包含这些开源程序,将公共领域中的所有软件商业化。他们还可以在不同的许可下发布同一软件的不同版本。
例如,假设一家公司在通用公共许可(GPL)和专有许可下发布了一个数据库管理系统。任何人都可以使用 GPL 版本进行软件开发,只要他们将新代码设置为开源。相比之下,专有版本提供了其他软件服务,例如:
- 一种完全托管式数据库服务
- 企业级数据备份服务
- 附加安全加密
开源软件和自由软件一样吗?
自由软件一词是指一种社会运动,也称为自由软件运动,旨在为软件用户获得并保障一定的自由。这项运动旨在确保用户可以自由地执行以下操作:
- 运行软件。
- 研究软件。
- 修改软件。
- 共享软件副本。
开源软件与自由软件
今天,自由软件是指公共领域的开源许可。与自由软件运动不同,开源软件现在包含更多类型的许可,并且可以对用户施加一些限制。因为免费软件和自由软件这两个术语可以互换使用,所以最好将免费软件称为公共领域软件。
开源软件与免费软件
免费软件一词仅表示在有限时间内免费提供的原本商业产品。免费软件也可以是免费试用版本或产品的有限功能版本,否则就需要支付订阅费。即使您可以使用免费软件,您也无权以任何方式转售、共享或修改它。
AWS 如何为开源软件做出贡献?
在 AWS,我们相信开源对每个人都有好处。我们致力于将开源的价值带给我们的客户,并将 AWS 的卓越运营带给开源社区。AWS 工程师定期开发开源软件,并为 GitHub、Apache、Linux 基金会等上的数千个开源社区做出贡献。以下是我们支持开源的其他几种方式:
- 我们努力确保客户能够在云中部署和操作他们首选的开源软件。AWS 支持比其他云提供商更广泛的开源技术。
- 我们在开源社区有几个长期项目。我们不断为这些项目提供错误修复、安全性、可扩展性、性能和功能增强。
- 我们与领先的开源公司密切合作,从 HashiCorp 到 MongoDB,再到 Confluent 和 Red Hat,帮助他们超越客户预期。