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

news/2024/7/10 19:22:08 标签: 开源

开源 · 三句半

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.niftyadmin.cn/n/5441415.html

相关文章

【C++】为什么vector的地址与首元素地址不同?

文章目录 一、问题发现:二、结果分析三、问题解析 一、问题发现: &vector和&vector[0]得到的两个地址居然不相同,对数组array取变量名地址和取首元素地址的结果是相同的。这是为啥呢? 使用下面代码进行验证:…

【Kotlin】扩展属性、扩展函数

1 类的扩展 Kotlin 提供了扩展类或接口的操作,而无需通过类继承或使用装饰器等设计模式,来为某个类添加一些额外的属性或函数,我们只需要通过一个被称为扩展的特殊声明来完成。通过这种机制,我们可以将那些第三方类不具备的功能强…

AIOCR:AI文字识别web集成系统@Kylin+RISCV

基于kotti_ai的AI文字识别web集成系统 AIOCR项目目标: 在KylinRISCV搭建一个kotti_ai构架的网站,提供AI OCR文字识别web服务。 二期目标:在AIOCR的基础上提供chatgpt和文心一言等大模型调用,建立综合大模型应用平台。 功能&am…

Kafka总结问题

Kafka KafkaKafka Kafka的核心概念/ 结构 topoic Topic 被称为主题,在 kafka 中,使用一个类别属性来划分消息的所属类,划分消息的这个类称为 topic。topic 相当于消息的分配标签,是一个逻辑概念。主题好比是数据库的表,或者文件系统中的文件夹。partition partition 译为分…

Unity Toggle与Toggle Group的妙用

Toggle与Toggle Group结合使用,妙处多多。 因为在同一Toggle Group内只有一个Toggle可以被选中,那么对于我们要创建单选按钮组、游戏的一些开关、暗夜模式、筛选不同显示内容等功能都非常好用。 比如我要实现通过点击不同按钮,从而筛选显示不同内容&am…

Maxwell监听mysql的binlog日志变化写入kafka消费者

一. 环境: maxwell:v1.29.2 (从1.30开始maxwell停止了对java8的使用,改为为11) maxwell1.29.2这个版本对mysql8.0以后的缺少utf8mb3字符的解码问题,需要对原码中加上一个部分内容 :具体也给大家做了总结 : 关于v1.…

FDU 2018 | 1. 求众数

文章目录 1. 题目描述2. 我的尝试 1. 题目描述 AcWing 3685 求众数 给定一个长度为 n 的整数序列,请你求出该序列的众数。 众数就是一个序列中出现次数最多的数字。 如果不唯一,则输出小的那个值。 输入格式 第一行输入一个整数 n,表示有 …

vim | vim的快捷命令行

快捷进入shell界面 -> :nnoremap <F8> :sh<CR> -> 绑定到了F8 :nnoremap <F8> :sh<CR> 快捷执行 -> :nnoremap <F5> :wa<CR>:!g % -o a.out && ./a.out<CR> -> 绑定到了F5 :nnoremap <F5> :wa<CR>…