MindSpore 软件包依赖管理规范(试行稿)
关于本文档
目标
为满足网络安全、合法合规、可追溯性要求,特拟定本规范,指导MindSpore社区正确使用开源软件。本规范的中必须,必须不能,应该,应该不能的含义参考RFC2119。
范围
本文档定义了MindSpore社区新增、升级、降级、删除开源软件包所需要遵从的策略要求。所有提交到MindSpore社区的开源软件包需要满足本文档中定义的技术要求。
本文的改进和修订说明
- 本文档由MindSpore技术委员会( Technical Steering Committee, TSC)主导起草和维护。本文档的最新版本可以在 这里 找到。
- 任何对于本文中涉及的规则的增加,修改,删除都必须被追踪,请进入该追踪系统 。
- 最终规则经过社区充分的讨论后,由技术委员会定稿。
开源软件选型原则
目的
制定本原则是为了确保MindSpore社区使用的开源软件质量可靠、安全稳定。
软件选型要求
总体要求
- 为了确保开源及第三方软件的质量,从社区引入某开源软件/版本,或者从第三方供应商处引入某第三方软件/版本,需要进行选型评估活动。
- 软件选型要求保证开源软件基本信息正确。软件基本信息包括软件名称、软件版本号、编程语言、官网地址、license、官方发布时间、源码包下载地址、二进制包下载地址、copyright等。
- 必须满足选型评估标注四个维度(合法合规、网络安全、技术生态、生命周期)的底线原则要求,不满足时,则需要采用其他软件替换或者自研。
- 原则上一款开源软件只在MindSpore社区中引入一次。
合法合规
- 禁止选用无许可证、许可证要求无法履行、有知识产权问题的开源软件。
- 优先选择有官方数字签名校验的软件包。
网络安全
- 禁止选用含非误报病毒告警的软件。
- 选用的开源软件必须有问题反馈与修复跟踪管理机制,优先选择有漏洞披露源的开源软件。
- 优先选择漏洞较少的版本。
技术生态
- 选用版本必须是正式发布的版本。未正式发布的版本(如:Beta版本,rc(Released candidate)版本)禁止引入。
- 优先选择主流的供应商/社区或社区项目。
- 优先选择版本稳定性高的软件,无已知的未解决的致命Bug。
- 优先选择代码质量高的软件。如代码结构规范、代码调试功能可关闭、有自动化构建能力、自动化测试充分等。
生命周期
- 选用成熟期或成长期的软件,禁止选用处于衰退期的软件。成长期软件:发布频繁。成熟期软件:定期发布版本。衰退期软件:社区更新少,已经不再发布新版本。
开源软件变更原则
开源软件的变更,包括在MindSpore社区中引入其他开源软件(项目)、升级或者降级已引入的开源软件、删除已引入的开软软件等动作。
其中引入、升级、降级开源软件必须满足开源软件选型原则。升级、降级开源软件必须考虑MindSpore社区所提供功能的稳定性与兼容性。
整个变更的过程都必须可被追踪。目前 https://gitee.com/mindspore/community/issues 是这个过程的追踪系统。
TSC通过对变更申请(Pull Request)的评审,管理软件变更。