什么是开源软件 (OSS)?
原文作者:NGINX
原文链接:什么是开源软件 (OSS)?
转载来源:NGINX 中文官网
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
开源软件(OSS)是指一种可促进软件源代码共享和协作的软件开发模式。在这种模式下,源代码面向公众免费提供,可供任何人查看、修改和分发。OSS 通常由开发者社区协作开发而成,并在开发者们的共同努力下得以改进和增强。
开源概念的核心是提高透明度,促进社区驱动的开发,并推动创新。与专有软件(由单个实体拥有和控制)不同,开源软件支持用户根据自身需求访问、修改和分发软件。该模式催生了一个跨越广泛领域的庞大的开源项目生态系统。
开源软件的优势
开源软件的诸多优势推动了其在各个行业中的广泛采用和迅速普及。了解这些优势能够帮助个人和企业在考虑在其项目中使用开源软件时做出明智的决策。
借助开源的力量,个人和企业可从丰富的软件生态系统受益,并为全球开源社区的知识积累和创新做出贡献。
成本效益
开源软件最显著的优势之一是其成本效益。它通常可免费使用,无需支付许可费用。这就使企业可以更高效地分配其资源,从而将节省的资金用于其他地方。
透明度和可审计性
开源软件通过开放源代码以供查看,提供了出色的透明度。这种透明度让用户可以了解软件的运行方式,并验证其安全性和完整性。企业可以执行代码审计,识别和处理漏洞,并确保软件满足其具体要求。保持开放还可促进多元化贡献,推动创新和知识共享。
安全防护
上述透明度和开放性亦可增强安全防护。通过查看源代码,开发者可审查其是否存在漏洞,确保开发出更可靠的产品。此外,开源项目自身的庞大社区意味着可以更快地发现和修复漏洞。来自社区的定期更新也有助于及时抵御新兴威胁。
灵活性和定制化
开源软件提供了专有软件通常缺乏的灵活性和定制选项。用户可以根据其独特需求自由修改和调整源代码,从而更灵活地实现特定功能或满足具体要求。这种高定制化支持企业根据其工作流定制软件,以最大限度地提高效率和生产力。
快速创新与密切协作
开源项目营造了一种推动创新和知识共享的协作环境。来自全球社区的开发者和贡献者能够自由分享其专业知识、创意想法以及对软件的增强改进。这种协作方式不仅有助于快速创新、频繁更新,而且还便于持续改进软件特性、功能及性能。
广泛支持和知识库
开源软件通常有着用户和开发者组成的大型多元化社区,广泛的支持网络提供包含论坛、邮件列表、在线社区及协助和指导文档在内的各种资源。用户可充分利用社区的集体知识和专业经验,更轻松地解决问题,快速找到解决方案,并取长补短。
厂商独立性
开源软件减少了对特定厂商或提供商的依赖。在支持和维护服务方面,组织不会被锁定于单个软件厂商。用户可以自由选择多个服务提供商、顾问或内部资源,以满足其支持和定制化需求。这种独立性支持更灵活地管理软件解决方案,并降低厂商锁定的风险。
广泛的生态系统和集成选择
开源软件通常拥有一个丰富多样的生态系统,其中包括辅助工具、库及扩展插件等,进一步增强了其功能和集成能力。这种生态系统可支持开源软件与其他开源解决方案或专有解决方案无缝集成,为用户提供广泛的选择,以扩展其软件功能,并优化工作流。
长期生命力和连续性
开源软件项目往往具有较高的长期生命力和连续性。开源开发的协作特性可降低单点故障的风险。即使某一特定项目暂停或被放弃,源代码的可用性也支持社区或其他利益相关者分叉该项目并继续对其进行独立开发,以确保软件的长期可用。
政府要求使用开源软件
鉴于开源软件的上述显著优势,许多国家和地区的政府纷纷出台相应政策或律令来推动企业内部使用开源软件。下面列举了一些突出的政府示例:
美国 – 2016 年颁布的《联邦源代码政策》要求联邦机构将至少 20% 的新开发定制代码以开源形式发布。此外,美国国防部(DoD)还发布了《国防部开源软件政策》,鼓励使用开源软件并为开源社区贡献一臂之力。
英国 – 英国政府已将开源软件作为其数字服务标准的一部分。《政府服务设计手册》鼓励人们使用开放标准和开源解决方案,以提高互操作性、透明度和成本效益。英国政府数字服务局(GDS)等多家政府机构积极推动开源项目,并与公众共享其代码。
法国 – 法国政府发布了一系列指导方针,建议在公共采购流程中优先考虑开源软件。2012 年发布的《Ayrault Circular》(埃罗通告)强调了开放标准和开源解决方案在确保互操作性、竞争优势及成本优化方面的重要性。
德国 – 《数字议程(2014-2017 年)》中包含一项在公共采购中优先考虑开源解决方案的承诺。德国慕尼黑市的 “LiMux” 项目旨在将其 IT 基础设施迁移到开源软件,引发了全球广泛关注。尽管近年来发生了一些变化,但开源仍是德国各政府机构 IT 战略的一部分。
巴西 – 2003 年,巴西启动了 “Software Livre Brasil” 计划,旨在推动在公共行政管理中使用开源软件。巴西联邦政府于 2018 年发布的《自由软件推广和使用框架》建议政府机构优先考虑开源解决方案,以确保安全防护、成本节省和技术主权。
印度 – 2015 年出台的《印度政府开源软件采用政策》敦促政府机构将开源解决方案视为首选方案。该政策强调了节约成本、促进本土创新和避免厂商锁定的必要性。
开源软件的风险
重要的是要认识到使用开源软件存在风险。了解这些风险可以帮助个人和企业在利用开源软件时做出明智的决策。通过正确理解、周密规划和实施风险管理策略,企业可充分利用开源软件的力量,同时化解潜在挑战。
安全漏洞
虽然开源软件的开放性允许通过同行审核来增强安全性,但它也将源代码暴露在攻击者的目光之下。如果发现安全漏洞而未及时处理,则可能会给软件及其用户带来风险。开源项目必须实施主动安全防护实践,包括漏洞管理、代码审计和及时的安全更新。
缺少支持和文档
开源项目可能拥有不同级别的支持和文档。与通常提供专门支持团队的专有软件不同,开源项目可能部分或完全依赖由社区驱动的支持渠道。根据项目的受欢迎程度和社区参与度,用户可能会在寻求及时帮助或完备文档来解决问题时遇到挑战。
有限的控制和定制化
开源软件支持自由修改和定制代码,这也意味着需要用户自己根据其具体要求来对软件进行维护和增强。这可能需要技术专业知识、资源投入和持续努力,以确保兼容软件生态系统的未来更新和变更。
兼容性和集成挑战
开源软件可能在兼容和集成其他专有软件或非标准软件方面面临挑战。在努力确保互操作性的同时,用户还必须考虑集成不同软件组件时可能出现的复杂问题。如要缓解上述风险,全面测试和了解依赖关系必不可少。
质量控制和维护
开源项目的分散性有时会导致质量控制和维护实践方面的不一致问题。并非所有开源项目都有严格的测试、质量保证流程或专门的维护团队。依靠开源软件的用户应评估项目的成熟度、社区活动及日常维护工作,以衡量其稳定性和长期生命力。
法律和许可因素
开源软件通常受特定许可证的约束,这些许可证规定了用户和开发者的权利与义务。GNU 通用公共许可证(GPL)等一些许可证规定了某些义务,例如共享修改或衍生作品。违反许可证条款可能会产生一系列法律后果。企业必须了解其所用开源软件的许可要求并确保遵守任何适用许可证。
项目放弃
开源项目依靠的是开发者和社区成员自愿做出的贡献。在某些情况下,由于资源匮乏、工作重点变化或其他因素,项目可能会暂停或被放弃。高度依赖此类项目的用户便会在获得持续支持或更新方面面临严峻的挑战,这可能会影响他们自己项目的稳定性和长期生命力。
如何提高开源软件安全性
确保开源软件安全需要采用各种实践和策略,以规避潜在漏洞并增强软件的整体安全性。因此,必须建立以安全为中心的思维模式,采用主动式方法,并与开源社区展开紧密协作,不断提高软件的安全性和保障其用户的合法权益。
下面列出了一些供您考虑的关键实践和策略:
软件物料清单 (SBOM) – 创建一份 SBOM,该文档提供了软件项目所用组件和依赖项的详细清单。您的 SBOM 应列出软件使用的所有软件组件、库、框架及其相应的版本。就开源软件而言,SBOM 在确保透明度、安全性和合规性方面发挥着关键作用。
主动安全防护实践 – 在整个软件开发生命周期实施主动安全防护实践,其中包括定期执行安全审计、代码审查和渗透测试,以发现和处理潜在漏洞。通过建立专门的安全团队或聘请外部安全专家,您能够掌握有关安全风险识别和缓解的专业知识。
及时进行安全修复 – 时刻警惕安全漏洞,及时安装补丁并应用更新。密切关注来自开源社区或项目维护者的安全公告和通知。及时安装安全补丁有助于保护软件免受已知漏洞和恶意利用的影响。
安全编码标准 – 在开发或支持开源软件时,遵守安全编码实践。遵循既定的安全编码标准和准则,包括输入验证、正确的错误处理、安全身份验证和授权机制及安全数据存储实践,以最大限度地减少常见的编码错误和漏洞。
负责任的披露 – 建立清晰渠道以负责任地披露安全漏洞。鼓励用户与安全研究人员以负责任和协调一致的方式向项目维护者报告漏洞。迅速响应漏洞报告,评估其影响,并及时提供修复程序或缓解方法以保护用户安全。
安全测试和审计 – 对软件进行全面的安全测试和审计,包括定期漏洞扫描、渗透测试和以安全为中心的代码审查。使用自动安全测试工具来发现常见漏洞,例如 SQL 注入、跨站脚本攻击(XSS)或不安全的直接对象引用。定期安全审计有助于发现和处理潜在的安全漏洞。
保护依赖项和库 – 开源软件通常依赖第三方库和依赖项。确保这些依赖项保持最新状态,并且没有已知安全漏洞。定期监控并更新软件所用的依赖项的版本,因为过时或易受攻击的依赖项会引发安全风险。
安全配置和部署 – 关注安全配置和部署实践,并遵循服务器强化、安全网络配置及敏感数据加密方面的行业最佳实践。利用可自动实施安全部署实践的工具和框架,最大限度地减少人为错误并降低错误配置风险。
安全教育和意识 – 加强开源软件开发者、贡献者和用户的安全教育并提升其安全意识。提供有关安全编码实践、安全配置及常见安全隐患的培训或资源。在开源社区中打造安全意识文化,在所有层面确保安全至上。
参与社区互动 – 围绕适用软件参与开源社区互动。参与讨论、订阅邮件列表或访问论坛,随时了解安全相关主题、最佳实践及新兴威胁。与其他社区成员展开协作,切磋交流,解决安全问题,并共同努力提高软件安全性。
定期安全评估 – 对软件进行定期安全评估和审计。这可能需要委托第三方安全公司来执行全面的安全评估和渗透测试。定期评估有助于发现新漏洞或新兴威胁,并确保软件的安全措施保持稳健。
开源软件技术支持合同的优势
开源软件的技术支持合同是贡献者和企业之间签订的正式协议,确立了协助和维护的条款与条件,如技术支持或漏洞修复。对于依靠开源解决方案的企业来说,签订开源软件技术支持合同可获得诸多显著优势。这些优势能够确保企业高效、从容地使用开源软件,缓解风险,并从技术投资中获取最大价值。
专家协助
技术支持合同可确保组织能从专家团队处获得支持。这些专家专门研究开源软件,精通软件的架构、功能及最佳实践。当遇到技术问题或挑战时,企业可以利用这些专业知识并及时获得可靠协助。技术支持合同通常包括专门的支持渠道,如电子邮件、电话或服务台系统,以确保及时响应和解决问题。
及时漏洞修复和更新
开源软件处于持续的开发和改进中。凭借技术支持合同,企业可及时接收软件的漏洞修复程序、补丁及更新,从而确保迅速解决关键问题,最大限度地减少对运维造成的任何负面影响。获取最新版本和更新有助于企业充分利用新功能、性能提升及安全改进。
安全与漏洞管理
使用软件的企业都高度重视安全问题。有了技术支持合同,企业便可即时获得关键安全更新和漏洞管理。支持团队将监控安全威胁并发布补丁或更新,助力及时解决任何已发现的漏洞。这种主动式安全防护可帮助缓解安全风险,并确保为软件提供更安全的环境。
故障排除和问题解决
技术支持合同为故障排除和问题解决提供了可靠的机制。企业可找专家帮忙确定问题的根本原因、诊断问题并找到适当的解决方案。支持团队将指导企业完成解决流程,提供专业知识和建议以消除障碍。
服务级别协议(SLA)
技术支持合同通常包括服务级别协议(SLA),其中规定了响应时间、解决时间及其他性能指标。这些服务级别协议不仅设定了明确的预期,确保支持团队在规定时限内提供优质服务,而且还提供了对应级别的保障和问责,以确保企业获得快速支持,最大限度地减少运维中断。
合规和法律保障
开源软件可能有具体的许可要求和义务。技术支持合同可帮助企业确保遵守许可条款,了解使用限制,并在软件相关法律注意事项方面获得指导。这有助于降低意外违规和发生潜在法律问题的风险。
缓解风险,安心无忧
有了技术支持合同,依赖开源软件的企业便可安心无忧。只需一个电话或一封电子邮件就能获得专家协助,这有助于减少焦虑,并可让企业专注于其核心业务运维。通过在最需要的时候提供可靠的支持,技术支持合同能够缓解长时间停机、数据丢失或运维中断的风险。
知识传授和培训
技术支持合同可能涵盖知识传授和培训部分,或者这也可通过与厂商展开专业服务合作来实现。这些团队能够提供指导、文档及培训资源,以帮助企业有效地使用和管理开源软件。这让企业能够充分利用软件的全部潜力,提高其内部能力,并减少在处理日常工作或小问题时对外部支持的依赖。
总结
开源软件是一种协作开发模式,通过共享和自由分发源代码来提高透明度、灵活性和创新能力。凭借经济高效性、定制选项和广泛的支持网络,开源软件获得了广泛青睐。不过,开源软件也存在安全漏洞、兼容性挑战和项目放弃等风险。为缓解这些风险,组织应积极采取一些措施,包括采用主动安全防护实践、与开源社区互动以及签订技术支持合同。技术支持合同可帮助您通过专家协助、漏洞修复、安全管理、故障排除及合规保障来缓解开源软件风险。
NGINX 如何助一臂之力?
NGINX 很高兴提供以下资源,以帮助您开启或持续推进开源之旅。
NGINX 的开源项目
博客
电子书
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
版权声明: 本文为 InfoQ 作者【NGINX开源社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/3482705773f2f744ec368e1d3】。文章转载请联系作者。
评论