Open Source Talk 03|Don’t break your user,Build a community

本文由ncnn作者nihui分享,探讨了开源项目中保持API兼容性和构建社区对于项目长期发展的重要性。nihui强调了不要破坏用户习惯,即使在更新和优化项目时也要尽量减少对用户代码的影响。同时,建立社区能够直接与用户交流,促进项目的改进和衍生项目的繁荣。ncnn项目就是一个实践这些原则的例子,它拥有活跃的技术交流群,支持用户解决问题,鼓励社区贡献工具和应用。
摘要由CSDN通过智能技术生成

About「Open Source Talk」栏目

开源无边界,分享有价值。Code is not cold,「Open Source Talk」栏目,将陆续邀请众多开源嘉宾做客,和大家一起分享和交流开源道路中的成长心得。以知识和分享为起点,传承开源的星星火光。

本期分享嘉宾:nihui(倪辉

开源神经网络推理框架ncnn作者

腾讯犀牛鸟开源人才培养计ncnn开源项目导师

在开始,我想借用 Linus Torvalds 的两句话:

Don’t break your user

“This has been a mantra for the kernel for a long time and it’s something that a lot of other projects seem to not have learned. If you want your project to flourish long term you shouldn’t let your users worry about upgrades and versions and instead make them aware of the fact that you are a stable platform.”

Build a community

“In order to have a long life for a platform/project, you should create a community and have a common culture, a common goal to work together for a long term.”

//什么是Don’t break your user

1. 项目的持续更新和维护

2. 不破坏API兼容性

九言科技的In-Prestissimo和百度的Anakin项目是和ncnn类似的开源移动端神经网络推理框架后之视今,亦犹今之视昔。当你放弃用户时,用户也在放弃着你。

持续维护和更新是运营开源项目的基本,特性可以慢慢增加,性能可以慢慢优化,在于持久,就自然能获得用户的信任。

有的开源项目,因为项目组变迁等原因,放弃了以前的代码,转而开发新的项目,依旧做的是同样的功能,实际基本推倒重来一遍,比如tensorflow1和tensorflow2。用户的代码必须改动甚至重写,才能适配新版本,这是非常伤害开发者心态的。

换位思考下,我用你的库,用得好好的,你老改来改去,我也只能跟着改来改去,凭什么?

要长期更新新特性还要保持API兼容性,是对项目架构设计的巨大挑战,每一次重要的更改,必须从进行长远的规划思考,这个API是否可扩展,这个API是否能长期稳定。着急堆新功能不一定有利于项目的长久发展,一套稳健的API形成是需要开发者和用户相互反馈促进,是需要些时间的。

ncnn的接口比较简单,架构层次也很薄,刚开源的时候也曾发生过大型的架构调整,比如模型文件的格式改动,幸好当时用户数还不多,影响不大,并且充分考虑了可扩展性。如今,即便编译最新的ncnn代码,依然能加载3年前的模型文件,总体上依然保持着3年前的API调用方法。

保持API兼容是底层库开发者的自我修养,是维护用户体验的根基。

//什么是Build a community

1. 直接与用户交流

2. 帮助社区衍生项目

有时候,当你一边用着google翻译,一边用蹩脚的英文终于按照规定格式,给tensorflow或者tvm的github发issue询问自己遇到的问题,结果等来的回答是去stackoverflow或者论坛。这或许是他们的流程,但流程是不会考虑用户体验的。

ncnn有个技术交流QQ群,每天上千条消息讨论,每天会花挺多时间看看有什么需要帮助就去解答。这样能直接了解用户的实际需求,了解到项目哪里做得好,哪里做得不足。有小白用户,问的问题挺简单,你也去回复,营造出积极技术分享的氛围。长期以往,用户有问题就会想到这个QQ群,就会想到这里有个社区可以获得帮助。用户渐渐多了起来,大家碰到的问题有人刚好知道怎么解决,也会乐于帮助。

ncnn的github上有很多人用中文发issue,允许中文issue并不是问题,与用户交流本身才是重要的。有时候遇到自己不会的问题,也可以建议他加QQ群或者直接把issue转发到QQ群,请会的人帮忙。

没有人能精通所有的技术栈,但只要建立了用户社区,就能各自发挥所长,比如社区开发者为ncnn贡献的darknet和tensorflow转换工具,比如社区大佬daquexian大老师所开发的纯网页端一键转换模型工具,著名的netron-visualizer也支持ncnn模型可视化。

https://github.com/xiangweizeng/darknet2ncnn

https://github.com/hanzy88/tensorflow2ncnn

https://convertmodel.cn/ https://convertmodel.com/

除了维护ncnn的代码,我还会在zhihu平台发一些有关ncnn的使用文章,操作步骤会很详尽的写出来,会尽量挑选用户们有需求的主题,例如有用户反馈LSTM不太好用,于是就写了OCR LSTM的文章,有用户反馈ncnn缺少图像实例分割例子,于是就写了YOLACT的文章,有用户反馈在A53 CPU速度还不够快,于是就做了bf16加速的技术创新。

ncnn是个底层库,没有华丽的上层UI,用户看不见,要让用户更容易上手,要有好用的实用性应用级的项目。AI的各种应用,虽都叫AI,但算法技术都各不相同。自己做了图像分类和风格化转换的两个例子,更多的也要依靠社区开发者的力量,比如这里的人脸检测定位识别一条龙项目,比如1MB超快速人脸检测器,比如中文OCR检测定位转正识别一条龙项目。

有时候社区开发者会遇到些ncnn的问题,这些优秀项目的诞生会极大改善不同领域用户的上手体验,因此甚至要一起参与到这些第三方项目中,协助完成和推广。

????了解更多(复制链接到浏览器打开):

https://github.com/MirrorYuChen/ncnn_example

https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB

https://github.com/ouyanghuiyu/chineseocr_lite

https://github.com/xiangweizeng/mobile-lpr

https://zhuanlan.zhihu.com/p/128974102

https://github.com/Tencent 

(点击文末阅读原文直接访问)

请给项目 一个 Star ! 欢迎提出你的 issue 和 PR!

 国内镜像地址:

https://git.code.tencent.com/Tencent_Open_Source

(登录后才能访问公开项目)

腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值