🎉 夜莺监控突破一万 star,这是汗水,也是鞭策
夜莺监控项目在上周突破了一万 star,算是一个小小的里程碑。在开源领域,通常把 star 数量看作项目的繁荣指标,star 数量越多,说明愿意关注你的人越多。这个数字的背后,是一群人对你的鼓励、认可和支持,当然,还有鞭策。夜莺项目最早发起于 2020 年初,发展到现在接近四年时间,本文想借此机会聊聊我们做开源的初心,这四年的感悟,以及多方共赢的商业模式设计。
项目简介

夜莺项目最初是我们在滴滴的时候开源的,后来捐赠给中国计算机学会开源发展委员会进行托管,以基金会的方式运作。其 github 地址是 https://github.com/ccfos/nightingale,其中 ccfos 就是 CCF OpenSource,即中国计算机学会开源项目的统一地址。
项目至今,有 130 位 contributor 参与,共提交了 2600 多次 commit,发版了 170 多次,fork 数 1400,docker pull 228k,虽说我们还有很多不足,但这些数字让我们看到了持续进步的汗水。如果一个开源项目可以坚持投入 4 年,甚至 10 年,20 年,我们坚信它的社会价值会越来越大。
项目发起初心
如果聊到项目开源的初心,那得追溯到 10 年前我们开源 open-falcon 那会了,当时确实啥都不懂,就是凭一腔热血为爱发电,当时觉得吧,我们搞了一个自认为还不错的项目,独乐乐不如众乐乐,放出来大家一起完善,项目会越发牛逼。当时的我们,也没有想过什么商业模式,只是想把这个项目做好,让更多人用,让更多人参与。
实际遇到了如下一些问题,如果你也做过开源项目,估计会很有同感:
- 维护者的心理压力大
- 经常碰到不看文档的小白用户,问各种基础问题。就像一个二年级的小学生经常被问 1+1 等于多少,时间久了,会很厌倦
- 偶尔会碰到颐指气使的人,用了你的项目,觉得你欠他的的一样,但凡遇到问题,不管是不是自己的问题就恶语相向

- 维护者时间精力有限
- 大部分开源项目都是维护者兼职在搞,时间精力有限,毕竟养家糊口才是第一位的,搞开源是上层精神层面的追求了
- 这会导致有些问题处理不够及时,显然,这会导致用户不满。周末照顾家人时收到陌生人提问那也是家常便饭,我不开心,用户也不开心
- 当维护者调岗跳槽之后,基本就不会继续参与了,这对项目而言是致命的
- 项目功能发展设计其实还是靠你自己
- 会有水平很高且愿意和你探讨项目设计发展的人,但确实数量不多,毕竟大部分开源项目影响力有限
- 也会有参与者,通常是小修小改,偶尔还会碰到巨型 PR,是要改你的命名规范,因为他觉得现有的命名规范不符合他的审美
后来发起夜莺项目,我们就在思考如下这个关键问题:
如何才能让一些人才持续全情投入?只要有人持续投入,项目一定会越来越好,不管是功能层面、性能层面,还是文档、社区支持,只要有人持续参与,一切都会越来越好。但是人家得养家糊口啊,除非给人发工资。工资从哪里来?靠项目自身去赚不就行了。于是,,,我们创业了,做了一家公司叫快猫星云。
但是,事情远没有这么简单。
开源和商业的天然悖论
我们想到的第一个模式是靠技术 Support,因为 RedHat 就是这么干的。普通用户提供社区支持,商业用户提供商业支持,如果客户在生产环境部署了你的软件,为了防止紧急生产故障,买个 Support 以防万一,这理所当然,看起来是个好模式。但也仅仅是看起来,实操中会发现如下问题:
- 监控、可观测性系统,我们觉得是 P0 级服务,但是很多客户觉得不影响核心系统所以没关系,重视程度不高,如果是核心 DB 或 OS,那就不一样了
- 开源做的越好,比如功能越稳定、丰富,文档越完备,用户遇到的问题越少,越不需要 Support,如果开源做的不好,用户量起不来,也不会有商业用户
- 边界不好界定。如果只是夜莺软件本身出问题我们来提供支持理所当然,那客户问这个 promql 怎么写?达梦数据库怎么监控?这些问题就很难界定了
所以,技术 Support 根本没有大规模商业化的底层逻辑支撑。如果你只是个人项目,养活自己就行,或者只是想赚点外快,这个模式或许还行,如果只是想养活几个人,这个模式我都觉得很难。
另外,开源监控、可观测性项目,可选择的项目还比较多,你如果收费,别家免费,即便你做的更好,也很难有人买单。你有养家糊口的压力,但是其他有些项目的研发人员人家已经财务自由了,人家就是可以全职不拿钱做开源,你怎么办?
多方共赢的商业模式设计
其他领域不敢讲,监控、可观测性这个领域,如何设计一个多方共赢的商业模式?我的个人观点(注意,只是个人观点)如下:
- 开源的部分,需要是功能闭环的,即,不依赖商业功能也能用的起来。而且这部分功能要足够好,让用户觉得用的很爽,这样才能吸引用户。这部分承接了我们的精神层面的诉求以及商业营销层面的诉求。这部分功能,我们可以把它叫做社区版。我们要在社区版这块投入全职人力,给他们发工资做开源。
- 没有预算的开源用户,可以免费使用社区版,有社区提供的技术支持,虽然响应速度没有商业版快,总还会有人响应,比那些动不动就撂挑子的开源项目会强很多。
- 有预算的用户,可以购买商业版,商业版的功能要比社区版更强大,技术支持也更及时。比如开源版会重点做告警引擎功能,而商业版会做大一统的可观测性平台。其定位不能相同,定位相同了就没法取舍,比如一个功能是放社区版还是商业版,就很难界定了。
其他一些 ToB 商业公司同行可能会觉得我们这种做法就是毒瘤。因为我们开源的部分抢了他们的生意,但实际上,我们开源的是基础监控告警能力,即便没有我们,还是会有 Prometheus,会有 Zabbix 这些前辈在,如果 ToB 公司的生意能够被开源项目抢走,说明你的产品能力可能还需要加强。而社区版也承载了我们的精神层面的诉求,我们希望为社会提供一个好用的监控系统,让更多人受益,这是初心,我们不可能放弃。
活下去是责任,留下点什么才是关键价值
有些创业导师说,如果你只是为了钱,那不应该创业。实际上,创业的原因哪能是单一的。肯定是既要又要还要啊。
- 既要赚到钱,养家糊口,发得起工资,这是责任
- 又要部分员工可以全职做开源,满足一下精神层面的需求
- 还要让飞轮转起来,越做越好越做越大,让各方受益
如果,我是说如果,我们站在生命的尽头,回首往事,什么会相对更有价值?我想,可能是过程中一起经历的风雨,以及我们生命留下的痕迹,我们在开源项目上的付出,可能会是我这碌碌无为的一生中最深的那个痕迹了吧。
🎉 夜莺监控突破一万 star,这是汗水,也是鞭策的更多相关文章
- 人生第一个过万 Star 的 github 项目诞生
写 Spring Boot 开源项目走入第三个年头,终于有一个开源项目要破万 Star 了,请各位读者大人批评指正. Spring Boot 文章 2016年,我开始学习 Spring Boot 的时 ...
- 看github上有18万star的第一开源项目如何教你学前端编程的
作为 Github | star 第一开源项目,已经超过18万 star:比之前最火的bootstrap的10万star还要多出8w,freeCodeCamp 越来越受关注,建站两年时间不到已经近40 ...
- 突破JAVA万人面试,懂多线程者得天下
突破JAVA万人面试,懂多线程者得天下 在面试中,求职者会遇到很多棘手的问题,其中关于"线程安全"."线程同步"."线程死锁"等方面的面 ...
- 4.2 万 Star!开发 Web 和移动端应用的全栈平台
[导语]:Meteor 是一个用 JS 开发现代 Web 应用程序的平台.它是开源的,在 GitHub 上有 4.2 万 Star. Meteor 是什么? 官方文档是这样描述 Meteor 的:Me ...
- 5.1 万 Star!不用 root 就能连接控制安卓的开源工具
[导语]:一款在 PC 端控制安卓设备的小工具.可在 PC 和安卓设备间互通剪贴板.用电脑键盘打字.传输文件.安装程序.截图.录屏等等功能. 简介 scrcpy 可以显示并控制通过 USB (或 TC ...
- Code Runner for VS Code,下载量突破 4000 万!支持超过50种语言
大家好! 我是韩老师.还记得 6 年前的夏天,我在巨硬写着世界上最好的语言,有时也需要带着游标卡尺写着另一门语言.然而,我对这两门语言都不熟悉,如果能在 VS Code 中方便快捷地运行各种语言,那岂 ...
- 过万 star 高星项目的秘密——GitHub 热点速览 Vol.39
作者:HelloGitHub-小鱼干 虽然国外十一并不过国庆,但是本周的 GitHub 也稍显疲软,GitHub 周榜的获 star 超过 1k 的项目寥寥无几,本周新开源的项目更是屈指可数.用 C ...
- Vue 项目推荐,Github 过万 Star
电鸭社区-远程工作-自由职业-兼职外包-自由从这开始 嗨,我是 Martin,也叫老王.不少小伙伴,说自己是转行.自学,没有项目,今天推荐一个 Vue 实战项目 还记得 Martin 仿写过在线 Ma ...
- Code Runner for VS Code,下载量突破 3000 万!
还记得五年前的夏天,我在巨硬写着世界上最好的语言,有时也需要带着游标卡尺写着另一门语言.然而,我对这两门语言都不熟悉,如果能在 VS Code 中方便快捷地运行各种语言,那岂不是很方便?于是,我就开发 ...
- linux下突破10万高并发的nginx性能优化经验
一.这里的优化主要是指对nginx的配置优化,一般来说nginx配置文件中对优化比较有作用的主要有以下几项:1)nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数.worke ...
随机推荐
- 为什么样本方差是除以 n-1 而不是 n?
摘自https://www.zhihu.com/question/20099757/answer/13971886 https://www.zhihu.com/question/20099757/an ...
- Vulhub 安装运行
前言 vulhub是利用docker技术做的一个漏洞复现平台,可以一键搭建对应的配置.在下载好对应的代码包后,不需要安装,只需要解压并利用3条命令,就可以简单的创建关闭对应漏洞环境.最好是购买一台阿里 ...
- OpenCV3 图像处理笔记
此笔记针对 Python 版本的 opencv3,c++ 版本的函数和 python 版本的函数参数几乎一样,只是矩阵格式从 ndarray 类型变成适合 c++ 的 mat 模板类型.注意,因为 p ...
- Next.js 与 React 全栈开发:整合 TypeScript、Redux 和 Ant Design
在上一集,我们编写完毕导航页面,并且非常的美观,但是我们发现编写网站是存静态的,在现代的网站当中一般都是动静结合,也就是说部分数据是从数据库读取的,部分静态数据是写在网页上面的,因此这章讲述如何搭建一 ...
- 一文彻底弄懂JUC工具包的Semaphore
Semaphore 是 Java 并发包 (java.util.concurrent) 中的重要工具,主要用于控制多线程对共享资源的并发访问量.它可以设置"许可证"(permit) ...
- 手搓党分享:用Air700E开发板+毫米波雷达,搓一个睡眠监测仪!
只能说,看到这个大佬分享的睡眠监测仪,手上的手环瞬间不香了... 用Air700E开发板+毫米波雷达,手搓一个开箱即用的睡眠监测仪,不花冤枉钱! 一.项目原理及硬件制作 毫米波是指频率范围从30- ...
- (Python基础教程之六)Python中的关键字
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- 自动化部署之Gitlab+Jenkins+Docker
总结自动发布流程: Gitlab+Jenkins+Docker 一般部署方式: 1.外挂方式: 就是将实际的代码挂载到宿主机上,docker中提供程序运行的环境, 这样的话只需要更新对应的代码就够了 ...
- Spring框架IoC核心详解
介绍 IoC(Inversion of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现.IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理,由S ...
- uni-app小程序(快手、抖音)getCurrentPages使用坑位记录
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app. 坑位 最近在做一个 ...