什么是开源软件(OSS)?
开源软件开发的关键原则
在透明度、协作和分散化的关键原则指导下,开源软件模型从社区创建代码,并从代码中创建社区。
合作
与闭源软件不同,OSS 不仅可供任何人使用,还可以在此基础上进行开发。这促成了一个全球贡献者网络,他们通过集体审查、测试、记录和修补代码来共同完成项目。
透明度和安全性
开源软件开发是公开的,这意味着所有工作,包括代码库和用户之间的交流,都可供开源社区查看。透明度可以培养贡献者之间的信任,为创新和发挥铺平道路。而且由于代码库是公开的,用户可以快速识别并修复出现的安全漏洞。
去中心化
由于社区开发代码,并且没有任何个人或公司拥有该代码,因此开源是一种本质上分散的软件开发形式,具有更少的孤岛、瓶颈和进入壁垒。
为什么开源对您的业务很重要?
开源是一种无价的技术和框架,它继续定义着组织如何进行软件开发 — 这就是为什么如今大多数商业代码库中都有 OSS 组件。开源软件的好处数不胜数,但以下只是企业和开发人员继续投资该模式的几个关键例子:
-
灵活性和定制性。由于您可以修改源代码以满足您的确切需求,因此 OSS 在构建新应用程序或改进现有解决方案时提供了广泛的灵活性和自由度。
-
最新技术。OSS注重透明度、协作和去中心化,促进了当今一些最具创新性的项目的发展。其中许多项目(如 Linux 和 Apache)后来成为行业领军者。
-
不受供应商限制。无需与技术供应商签订长期合同,意味着您可以有更多的预算和带宽来试验各种工具和集成。
-
节省成本。OSS源代码是免费的,与专有或闭源解决方案相比,总体拥有成本更低。
-
社区支持。OSS项目充分利用了开发者社区的专业知识。社区在整个开发、审查和部署过程中都做出了贡献,从而加快了更新速度并减少了漏洞。
在企业层面,OSS通过实现软件开发生命周期各个方面的现代化,使开源企业受益。豪华汽车品牌使用 OSS 组件来构建更快的流程并加速软件交付,而财富 500 强公司则依靠企业平台来整合和集中管理代码。借助 OSS,企业组织可以享受无缝集成的代码、更少的孤岛以及安全、大规模交付软件的能力。
开源软件如何运作?
开源代码通常存储在公共存储库或 repo 中,任何人都可以访问、贡献和共享(取决于权限)。贡献者将新版本的代码上传到项目,在现有工作的基础上进行构建和改进,以提供新功能和更新。所有工作都在 repo 中公开进行,以便任何人都可以添加内容。
代码通常附带许可证,该许可证定义了用户可以对软件做什么和不能做什么。有些许可证是宽松的,允许您出于任何目的使用和分发代码,而其他许可证可能要求您在共享时明确记录任何更改。其他许可证可能规定源代码的所有副本都是免费的,可供公众使用。当今最流行的一些许可证包括:
-
MIT。MIT许可证对源代码的使用限制很少,因此成为最宽松、使用最广泛的自由许可证。该许可证的唯一要求是,代码的未来版本必须包含原始版权声明和许可证本身的副本。
-
GNU 通用公共许可证 (GPL) v2。GPLv2由 GNU 项目创建,明确要求源代码可供公众使用。GPLv2 也是一种版权左翼许可证,这意味着任何版本的源代码也必须在同一许可证 GPLv2 下发布。
-
GNU GPLv3。与前身一样,GPLv3 也要求将来版本的代码以相同的许可证发布。与 GPLv2 不同,GPLv3 与流行的 Apache 2.0 许可证兼容,专门针对专利权,并且不要求将源代码公开。
-
Apache 2.0。与 MIT 许可证非常相似,Apache 2.0 许可证是一种流行且宽松的软件许可证,允许用户对代码进行任何操作 — — 只要他们记录所做的任何重大更改。
开源软件的优缺点
即使在企业组织中,OSS 也达到了主流增长和采用的新高度,预示着协作软件开发文化的兴起,以及更高的投资回报率 (ROI)。不过,开源并非没有缺点。让我们来看看它的一些优点和缺点:
优点
-
成本。OSS工具附带免费提供的源代码,从而降低了总体拥有成本。
-
创新。OSS鼓励用户创造性地解决问题。用户可以根据需要进行任意数量的更改,甚至可以构建自己的全新应用程序。
-
更新速度更快。得益于贡献者网络,与闭源解决方案相比,OSS 项目往往能够更快地修复错误。
-
缩短上市时间。当无法从头开始构建自己的解决方案时,采用开源代码可以帮助您的产品快速上市。
-
信任和透明度。由于所有工作都是公开的,因此用户可以相信代码社区正在妥善维护活跃的项目。
-
开发者的支持。开发者支持开源,因为它拥有熟悉的流程、协作文化和效率。IT 领导者更有可能选择为开源做出贡献的供应商。
-
学习机会。公共存储库为新开发人员提供了大量的实践资源,以及可供寻求支持的内置网络。
缺点
-
学习难度更高。由于 OSS 的流程、界面和文化以开发人员为中心,非程序员可能更难掌握它。
-
总体来说不够完善。一些 OSS 项目规模较小、仍处于测试阶段或不再维护,这意味着它们可能不太可靠,不适合用于生产环境。
-
许可问题。目前有数百种开源许可证,其中一些非常详细和具体。如果您使用复杂的技术堆栈,那么跟踪所有许可协议可能会很棘手。
-
责任问题。与闭源软件不同,开源软件通常不提供保修或责任保护。用户全权负责维护合规标准,这可能会在长期内产生问题。
-
安全问题。尽管现在许多平台都已部署了应用程序安全 (AppSec) 工具和实践,但 OSS 历来被认为是企业公司中不太可靠的选择,而且这种污名可能仍然存在。
流行的开源软件
开源深深植根于现代发展的基础之中,为组织每天使用的应用程序、工具和框架提供支持。
以下仅列举一些当今最流行的开源应用程序:
-
GNU/Linux
-
火狐浏览器
-
Ruby on Rails
-
VLC 媒体播放器
-
jQuery
-
Node.js
-
Kubernetes
-
GIMP
-
重击
构建安全的开源代码
开源代码库的安全性和可靠性取决于其贡献者,这就是为什么需要在社区层面解决安全性问题。如今,许多组织都采取了“左移”安全方法。虽然安全专家通常在 DevOps 生命周期结束时进行审计,但“左移”安全模型鼓励开发人员在从开始到结束的每个步骤中采取主动的安全方法。