企业如何选择一个开源「好」项目?

开源 · 三句半

oss-roast

需求明确是关键

风险考量要周全

开源虽好不白捡

别忘合规!

显然,开源已成为一股不可阻挡的洪流,企业拥抱开源,积极参与开源项目不仅是响应技术潮流的必然选择,更是实现自身技术创新、市场拓展等战略目标的新途径。然而,在企业进行开源治理的关键一点就是选择适合自己企业的开源项目。面对琳琅满目的开源项目,企业如何做出正确的选择却成为了一大挑战。

融入开源的第一步

企业如何选择合适的开源项目?

合适的开源项目仅能帮助企业加快技术创新和业务发展,还能帮助企业建立可持续的开源治理体系,从而使企业在市场竞争中保持技术领先地位。尽管大型科技企业已经有较完善的开源治理策略,但许多中小企业在选择开源项目时仍缺乏清晰的方向和有效的策略。本文结合多家公司治理经验,提炼出一套安全实用的策略,帮助企业选择开源项目。

“制度先行”,打好开源标准化工作基础

很多人认为,在选择和使用开源项目之前,制定一套开源相关的制度往往被视为繁文缛节,而忽视其重要性。但这些制度并不是多余,而是确保企业能够安全高效地开展开源项目管理标准化工作的关键。其中,必要的制度包括:开源项目使用制度、开源项目贡献制度、开源项目风险管理制度。

开源项目使用制度。开源项目使用制度是确保企业在使用开源项目时遵循一定规范和流程的基础。该制度应明确企业如何评估、选择、引入、使用和更新开源项目。其中包括建立清晰的决策流程,确保所选项目与企业的技术战略和业务需求相匹配。

同时,使用制度还应规定对开源项目的持续监控和维护,以确保其安全性、稳定性和性能满足企业要求。

开源项目贡献制度。除了使用开源项目外,企业还应积极参与开源社区,为开源项目做出贡献。开源项目贡献制度旨在鼓励和支持企业员工参与开源项目的开发、测试、文档编写等工作。通过制定明确的贡献指南和流程,企业可以确保员工的贡献符合开源社区的规范和标准。

此外,贡献制度还有助于提升企业在开源领域的声誉和影响力,吸引更多优秀人才加入。

风险管理制度。使用开源项目不可避免地会面临各种风险,如法律风险、安全风险、技术风险等。开源项目风险管理制度旨在帮助企业识别、评估、监控和应对这些风险。

其中应包括风险识别机制,定期评估开源项目的潜在风险;风险监控机制,持续跟踪开源项目的安全漏洞和法律纠纷;以及风险应对机制,制定应急预案和补救措施,以减轻潜在风险对企业的影响。

“择优录取”,项目的选型和引入

根据《信息技术 开源治理 第2部分:企业治理评估模型》中所言,在项目选型上企业研发项目在需要引入开源项目前对其进行评估,可以根据以下四个维度对开源项目进行综合考量。

综合上面维度考虑,我们可以将开源项目引入分为以下流程:

需求分析与评估

1. 明确业务需求:确定企业需要引入开源项目来解决的具体问题或实现的功能。

2. 技术评估:分析开源项目的技术栈、架构、性能等是否符合企业的技术要求和标准。

3. 成本效益分析:评估引入开源项目的成本(包括人力、物力、时间等)与预期收益之间的平衡。

项目筛选与审查

1.市场调研:收集并整理相关领域的开源项目,了解其活跃度、社区支持、文档完善度等指标。

2.筛选审查:基于业务需求和技术评估结果,筛选出几个潜在的候选项目,对候选项目进行审查。

3.许可证检查:核实候选项目开源项目的许可证类型,确保满足选型规则条件。

原型测试与验证

经过筛选审查后,企业应选出几个候选的开源项目,进行原型测试与验证。这一阶段的重点是:

1.搭建测试环境:模拟实际生产环境,对开源项目进行安装部署和配置。通过模拟实际生产环境,对开源项目进行安装部署和配置,以确保其在真实场景中的可行性。

2.功能性验证:编写测试用例,验证项目是否满足企业的基本功能需求。通过编写测试用例,全面验证项目是否满足企业的基本功能需求,确保其功能完备且符合预期。

3.兼容性与集成性测试:确保所选开源项目能够与企业现有的系统和工具无缝集成,避免在实际应用中出现兼容性问题。

4.安全性测试:通过代码检测、软件成分分析、渗透测试、权限验证等手段,全面评估项目的安全性,确保其在应用过程中不会引入安全风险。

风险评估与应对策略

在选择开源项目之前,企业应对可能面临的风险进行评估,并制定相应的应对策略。常见的风险包括:

1.技术风险:开源项目可能存在技术上的局限性、不成熟或潜在缺陷,企业应仔细评估项目,通过性能测试工具模拟高负载和并发场景,检测项目在性能、稳定性等方面的表现。

2.社区风险:开源社区的变化(如核心开发者流失)可能影响到项目的长期维护和发展。企业应密切关注开源社区的动,与核心开发者建立良好关系,以便及时获取项目更新和支持。

3.许可风险:某些开源许可证的变更可能导致企业,需要调整使用策略或面临合规性问题。企业应通过工具审查项目的许可证,并通过SCA工具检测项目依赖的问题,确保其与企业的商业模式和合规要求相符。

4.安全风险:开源项目可能成为不法分子的攻击目标,从而间接攻击引入项目的企业,导致开源软件供应链安全风险增加。企业应加强对开源项目的持续管理和监控,定期通过SCA工具进行组件识别与漏洞分析,结合SAST工具对源代码扫描检测,有效加强项目安全性。

决策与审批

1.制定决策报告:汇总项目筛选与审查的结果,形成详细的决策报告,包括推荐引入的开源项目及其理由。

2.内部审批:将决策报告提交给企业的决策层或相关技术委员会进行审批。确保决策过程透明且符合企业的决策流程。

入库集成

1. 入库管理:将选定的开源项目的代码/制品拉取到企业内部,并入企业开源项目管理库,供后续进行使用和管理。代码/制品需要从官方或者可靠的源下载,避免引入安全隐患。

2. 文档编写与培训:编写开源项目的使用文档和培训材料,为企业员工提供必要的技术支持和培训。

精选开源项目,引领技术未来

面对开源的洪流,企业如何乘风破浪,抓住技术革新的机遇,关键在于能否精准地选择并引入适合自己的开源项目。通过制定一套完善的开源项目选择策略,企业可以快速融入开源项目,持续推动技术创新和业务拓展。

推荐阅读

企业如何安全参与开源项目?

面对开源许可证的隐患,如何做出明智选择?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/280404.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang 异步(bsd/linux)io

Golang 异步(bsd/linux)io 在日常开发中,读写文件的底层调用函数是syscall.Read/Write。一切都是围绕这两个函数展开的,不过有时候需要或者就是单纯想异步执行。liburing是linux上一个很好的原生异步io库,这里需要适配bsd派系的系统&#xf…

自动化的免下车服务——银行、餐厅、快餐店、杂货店

如果您在20世纪70年代和2020年分别驾车经过免下车服务餐厅(汽车穿梭餐厅),您会发现,唯一的不同是排队的车型。50多年来,免下车技术一直为我们提供着良好的服务,但现在也该对它进行现代化改造了。 乘着AI和自…

IOS/Android App备案(uniapp)

IOS/App备案 IOS备案Android备案 IOS备案 准备好p12证书即可 链接: https://aitoolnav.caichuangkeji.com/#/AppMd5 Android备案 上DCLOUD开发者中心,找到相关应用后,直接查看证书即可获取到MD5 公钥:先根据上述页面下载证书,…

ping 通ip,ping 不通域名

在linux 系统中,ping 通ip,ping 不通对应的域名时,可直接修改系统配置文件 vi /etc/hosts 加入 ip 域名

程序员们的“薪饭碗”:学会鸿蒙开发以后有哪些就业方向?

近期,鸿蒙相关内容一直是IT行业热聊话题。先是徐大嘴宣布鸿蒙 Next版本不在兼容Android,然后就是各大互联网公司纷纷加入到鸿蒙原生开发的队列,再然后网传出鸿蒙开发岗位薪资与需求了突增,超出了一些传统开发岗位的需求与薪资水平…

uni-app 中两个系统各自显示不同的tabBar

最近在一个uni-app项目中遇到一个需求,在登录页面成功登录以后需要判断身份,不同的身份的进入不同的tabBar页面,但是在uni-app项目中pages.json中的tabBar的list数组只有一个,且不能写成动态的,那如何实现这个需求呢?答案是需要我们自定义tabBar。 目录 1、我们确…

postman 用上一个请求的响应体中的字段设置下一个请求的请求参数

文章目录 IntroPostman usagePre-request ScriptTests javascripts API Intro 这一切都是为了增加自动化动作所占的比例(减少人手工操作复制粘贴可能会造成的错误)。 Postman usage 最常用的:选HTTP方法类型、写URL,在Headers中…

爬虫系列-CSS基础语法

🌈个人主页:会编程的果子君 💫个人格言:“成为自己未来的主人~” CSS全称层叠样式表 ,主要用来定义页面内容展示效果的一门语言,HTML:页面骨架,素颜CSS:页面效果美化&#xff1a…

ubuntu10.04 apache2.2开启tls1.2的支持,使现代的edge和firefox浏览器能正常访问https

最近发现自己ubuntu10.04服务器上的apache https无法通过win11上的edge和firefox浏览器访问,但xp下的ie6和ie8没有问题。 firefox的错误提示为“此网站可能不支持TLS 1.2协议,而这是Firefox支持的最低版本”。 经过检查发现: IE6访问https所需的版本是SS…

RabbitMQ--03--SpringAMQP(SpringBoot集成RabbitMQ)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringAMQP1.SpringBoot 的支持https://spring.io/projects/spring-amqp 2.RabbitTemplate3.RabbitListener(终极监听方案)4.RabbitConfig--…

【鸿蒙HarmonyOS开发笔记】通知模块之为通知添加行为意图

概述 WantAgent提供了封装行为意图的能力,这里所说的行为意图主要是指拉起指定的应用组件及发布公共事件等能力。HarmonyOS支持以通知的形式,将WantAgent从发布方传递至接收方,从而在接收方触发WantAgent中指定的意图。例如,在通…

处理器方法的返回值--返回对象Object

处理器方法也可以返回Object对象。这个Object可以是Integer,String,自定义对象, Map,List 等。但返回的对象不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的。 返回对象,需要使用ResponseBody注…

Aspose.PDF功能演示:在 JavaScript 中优化 PDF 文件

PDF 文件是一种普遍存在的文档共享格式,但它们有时可能会很大,导致加载时间变慢并增加存储要求。优化 PDF 文件对于确保无缝的用户体验至关重要,尤其是在 Web 应用程序中。因此,在这篇博文中,我们将探讨如何使用 JavaS…

Java二阶知识点总结(七)SVN和Git

SVN 1、SVN和Git的区别 SVN是集中式的,也就是会有一个服务器保存所有代码,拉取代码的时候只能从这个服务器上拉取;Git是分布式的,也就是说每个人都保存有所有代码,如果要获取代码,可以从其他人手上获取SV…

改进粒子群优化算法||粒子群算法变体||Improved particle swarm optimization algorithm

粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,其思想来源于鸟群寻食和鱼群捕食等自然现象。PSO算法通过模拟群体智能的行为,以一种启发式的方式寻找最优解,因此具有全局搜索能…

【python】2.pycharm中请选择有效的python解释器

欢迎来CILMY23的博客喔,本篇为【python】2.pycharm中请选择有效的python解释器,感谢观看,支持的可以给个一键三连,点赞关注收藏。 前言 在上一篇博客中,我们已经在电脑上安装了python3.12.2和pycharm,本期…

C数据类型(C语言)---变量的类型决定了什么?

目录 数据类型(Data Type) 变量的类型决定了什么? (1)不同类型数据占用的内存大小不同 如何计算变量或类型占内存的大小 (2)不同数据类型的表数范围不同 (3)不同类型…

jmx_prometheus_javaagent-0.19.0.jar+Prometheus+Grafana 监控Tongweb嵌入式(by lqw)

文章目录 1.思路2.部署准备3.应用jar包修改配置和导入tw嵌入式的依赖(参考)4.Prometheus部署5.Prometheus配置6.安装和配置Grafana 1.思路 Tongweb嵌入式最终是把依赖打入到java应用(也就是jar包里),然后启动jar包进行…

GaussDB(分布式)实例故障处理

一、说明 GaussDB Kernel实例出现故障时,可以按照本节的办法进行实例快速修复。 1、执行gs_om -t status --detail查看集群状态,cluster_state为Normal,balanced为No,请重置实例状态。 2、执行gs_om -t status --detail查看集群…

02分布式搜索引擎ES

elasticsearch查询 1.DSL查询文档1.1.DSL查询分类1.2.全文检索查询1.3.精准查询1.4.地理坐标查询1.5.复合查询 2.搜索结果处理2.1.排序2.2.分页2.3.高亮2.4.总结 3.RestClient查询文档3.1.快速入门3.2.match查询3.3.精确查询3.4.布尔查询3.5.排序、分页3.6.高亮 1.DSL查询文档 …