2021年7月30日更新,腾讯给 github 充钱了,本问题结题。
ncnn yyds!
Tengine 和 ncnn 都是我正在参与的优秀开源项目,这个问题 真·利益相关。
CI(Continuous Integration)和 CD(Continuous Delivery)是 couple。一个优秀的软件项目能否长时间稳定、高效的持续进行,依赖 CI/CD 的完备性。
没有 CI(2017H2 - 2018H1),最初的时候 ncnn 是没有 CI 的,因为那时候 ncnn 项目基本上就 up主 一个人在写框架的各个模块(示例、框架核心模块、性能算子)。
编译测试(2018H2 - 2019H1),各种机缘巧合,我贡献了 ncnn 最初的 Int8 相关代码和量化工具。由于大多数情况下也是业余时间提交,编译测试的平台有限,时不时发生因为我提交后的代码导致 ncnn 编译失败的现象,在当时另外一个社区小伙伴 @无事闲来 的提示和协助下开始使用 Travis CI 对代码进行编译测试。
单元测试(2019H2 - 2020H2),这段期间 up主 开始重构 ncnn 的后端硬件平台的性能算子,为了保证 refactor 过程中不玩崩,于是在 CI 系统中添加了相关算子的单元测试用例。
自动发布(2021H1 - 至今),随着 ncnn GPU Vulkan 后端基本完工,部分用户更倾向于使用预编译的版本。为了减少每次版本发布的体力活,于是将 Release 模块也加入了 CI/CD。
当然,整个 ncnn 的 CI/CD 系统的开发和维护依然是 up主 一人完成了 95% 的工作。后面还添加上 code coverage 和 code quality 测试。向大家良好展示了一个优秀的开源项目的必备的技能树。
Github 被 Microsoft 收购后,提供了 Action 功能组件,用于 Github 上所有的 Public 项目免费试用一定硬件资源的服务器来部署自己的 CI/CD 功能,也就是问提中提及到的“白嫖的,免费的”。
所谓“白嫖一时爽,一直白嫖一直爽”……最终 ncnn 的 workflow 脚本扩展到了 40+,而且还有不断增加的需求,最终导致 CI/CD 的运行状态时常处于 queue。于是 up主 想到了去找腾讯云申请免费的云主机来托管。结果是也许会分配128核的CPU,所有腾讯开源项目共用,让 up主自己去写邮申请……
这期间,作为腾讯所有开源项目的直接负责部门,果然继续保持“对外不负责、对内不管事”的态度,一边拿着 ncnn 发“犀牛鸟计划”的 PR,一边怂得让 nihui 自己去发邮件申请资源。
腾讯开源的网站中激励计划的页面停留在了 2018年。
下面箭头所指的这些都没有兑现,倒是 nihui 每年自己掏钱买公仔送了几轮:
做开源,无论是企业还是个人,都属于一种社会公共行为,观瞻很重要。当然,在2018年那个时间点上,我是腾讯开源项目的间接受益者,腾讯开源办公室当时的反应还是很积极的。
一直是蜜汁操作。2019年初的时候,ncnn 想做个 model zoo,没有云盘,发邮件申请,等了半年后被拒绝了。
这次虽然没有直接拒绝,但是也不知道象征性的施舍的 128核 的服务器什么时候能到位,也不知道能不能赶上暑期开源活动结束之前。
如果 github 免费的 action 不够用了,ncnn 社区下一步估计只能让几个野生管理员去找 @阿里云 、百度云、 @华为云 申请一定时限的服务器资源,维持项目正常运转(奇怪的操作)
腾讯优图的 ncnn 项目是真开源,希望能坚持下去。同时建议 腾讯开源 认真阅读《十四五规划纲要》中的第二篇第四章第二节“加强原创性引领性科技攻关”相关内容:
希望 nihui 不忘初心,肆意前行!
国内的工程师想做真开源,还是过于艰难。
原本以为 Tengine 项目购买 CI/CD 服务器挺困难的,现在横向比较,已经算很好了,至少能申请下来,毕竟 Tengine 目前是在持续投入做好开源项目,解决边缘AI计算平台部署痛点,欢迎感兴趣的小伙伴加入。
我是 圈圈虫,一个热爱技术的中年大叔。快加入 OPEN AI LAB 开发者技术 QQ 群(829565581)来找我吧!溜了~~
入群秘令:CNN