鲲鹏会的各位朋友,大家好!我是涛思数据创始人陶建辉,也是开源的软件 TDengine 的主要的贡献者,今天要分享怎么从 0~1 打造成功的开源软件。
我先介绍一下 TDengine,它是一个开源的高效的物联网大数据平台,专门为物联网、车联网、工业互联网,IT 运维设计优化的大数据平台,除了核心的时序数据库功能之外,还有缓存、数据订阅、流式计算这些功能,是一个专用的大数据平台。
去年 7 月份 TDengine 单机版核心功能开源,今年 8 月 3 号整个集群功能全部开源,Github 地址是:www.github.com/taodata。目前在 GitHub 上有 13.9K 的 Star,3.6 K 的 Fork,接近 4K 的 Issue。
TDengine 的开源取得了巨大的影响力。首次开源时,连续 5 天在全球趋势排行榜上排名第一,三个月里 Star 数超过 1 万,集群开源后,连续 6 天时间在全球趋势排行榜上排名第一,Github 上的数据远超同类产品。现在每天克隆代码的人数超过 100 人,上线后日用户超过了 100,在国外也取得了一定的影响力。
那这个平台是怎么来的呢?
物联网时代很多事物都在采集数据,无论是智能电表,水表气表,汽车,电梯等等,都在不断采集数据。而传统的方法存在很多问题:例如开发效率低,运行效率差,运维复杂,最后导致推荐应用变慢。
2016 年我发现物联网数据采用的方法太老套,必须用新方法处理。于是我打算开发一个新的大数据平台,专门来处理物联网的数据,并且是不用集成工具的全栈解决方案。
最后要达到的效果就是,总成本下降,实现零管理,最终降低学习成本,安装便利,几秒钟就可以搞定。
这样一来,整个平台在多种物联网设施中都能得到应用,智能电表、水表、燃气表、智慧城市,火车、汽车、出租车、飞机等各种重型设备,电梯、锅炉、机床,包括水温、空气检测等应用,甚至国家地震局地震波检测,煤矿二氧化碳浓度的监测等等。
这个想法直接构成了我第三次创业,而 TDengine 就很好地实现了这个想法。我们在技术完成之后,经过深思熟虑还是选择了走开源这条道路。
为什么要把这个“稀缺”的技术开源,对我来说,存在以下四个方面的意义:
第一个,扩大影响力,树立品牌。TDengine 是大数据的产品,是基础软件,推广比较困难。多数人熟悉的老产品已经相对成熟,新品牌如果影响力不够,就不会被人选择。开源就是为了打响知名度,这是闭源无法达到的效果。
第二是形成开发者社区,构建竞争壁垒。目前我们用户微信 500 人的群就建了 10 个,每天超过 100 人在下载,100 个实例在上线,而在 GitHub 上问问题的也很多,总问题超 4000 个。虽然质量参差不齐,但闭源公司不可能在一年之内产生这些反馈。甚至有很多开发者帮我们写博客,介绍怎么使用 TDengine。
第三是快速获得市场反馈快速迭代,去年开源后集群的呼声很高,我们经过调查分析,结合开源社区里面的反馈,发现集群是真正特别刚性的需求,也就有了后来集群的开源。
第四是迅速打造生态。我们团队的研发只有十二三人,但我们的 TDengine 被移植到了多种的操作系统,外部贡献者就超过了 50 个。
第五,开源能够获得用户的信任,软件开源代码公开,不存在后门等安全性的问题,大家就会很放心从而选择使用。
即便有了这样的意义,还是有许多人不理解为何要把最核心的代码开源?但我坚持要把核心代码开源是基于以下考虑:
第一,如果不把最有竞争力的代码开源,替代品太多,就吸引不了用户;第二,不给用户带来实际价值,难以形成真实有效的粉丝群;第三,核心目的是通过开源狙击竞争对手,在全球占据领先地位,成为时序数据或者物联网数据处理的全球第一品牌。
知道了开源的意义和目的,一个实际问题是,开源如何赚钱?我自己的实践中发现有这样三点:
第一个是建立社区打造品牌,TDengine 有很小的辅助功能没有公开,虽不影响集群的正常使用,但会让工具用起来体验更好,比如说安全加密等辅助功能,可以以此来收费。
第二重要的是技术服务,软件都需要升级维护,如何优化 TDengine 让性能达到最佳,这就是技术服务做的事情,类似于是卖软件服务“保险”。
第三是企业版购买客户,多是追求服务和质量保证的大客户,或者 IT 能力不强的企业,要么不在乎,要么不敢贸然去自己用。
开源一年中,正式购买产品的客户超过了 50 家,这说明还是很有市场的。
此外我们也做了云上部署,目前已经在华为云和阿里云上都是直接提供 PaSS 服务,这个是收获中小企业客户的利器,直接在云上就可以用这个平台。
我前两家创业公司都是做 To C 服务的,涛思数据是 To B,开源方式给销售带来了革命,因为现在的客户基本都是主动联系我们,实际上是把 To B 的生意做成了 To C 的生意。
除此以外,使用流程大为简化,现在的客户购买前一般测试过产品,所以不用特别地使用培训。最后其实是把资源型的销售转化成了技术和产品的销售。变成开源模式之后,就会构成一个大的竞争,一般只有全球前三名能够幸存,任何一个细分市场都会有独角兽,只要我们 TDengine 做得好到成为前三,就会在物联网大数据市场形成强大的营销力。
许多研发者会问,哪些产品适合开源?我自己有一些标准,第一是用户量大的产品;第二个是选择相对标准的产品,像物联网平台就相当不标准很难做;第三是满足前两个要求后,还要面向全球市场。
中国的基础软件大概只占全球市场不到 10% 的销售额,在数据库到操作系统甚至低于 10%,不走向国际就是丢了 90% 的市场,甚至还会被国外产品吞掉市场。
知道了盈利方面的需求,我还想从深层角度,分享开源中常见的误区和成功要素。
许多人认为代码写好了开源就能成功。但其实不是这样,因为传播推广特别重要,酒香还怕巷子深,如果没人知道写的再好都不行。
第二个好多人认为代码完美了才能开源,这也不对。代码要达到一定的质量,不能把它做到十全十美才去开业,而是在开源过程中不断地完善,否则会丢掉机会。
第三个误区就是商业化节奏不明确,很多人会等用户量足够大的时候,再去考虑商业化,这是极度错误的,不盈利的话,单靠情怀来做开源很快就会梦碎。不仅要做还要赶早,要不断地验证商业模式到底能不能赚钱。
知道了误区,对应的成功关键也有三个:
第一个是做好产品定位,如果产品不是真正市场所需,那么其他的要素都是白搭。产品需要满足哪些需求?这个产品有什么优点特点等等。让人们想到这个细分领域,你的产品就是第一选择。这在做产品之前要想清楚,这里要推荐一本书 Position,这本书写得很好。
第二个是达到一定的质量标准,代码不能写到尽善尽美才去开源,还是要达到一定的质量标准,如果你的代码写特别烂,也没有人使用,就很难传播起来。
第三个重要的是市场推广,如果团队没有一定的市场推广能力,千万别做开源。不要认为自己是研发高手,做产品就能成功。开源跟做别的创业是一样的,产品和市场推广缺一不可。
这就衍生出一个问题,如何推广自己的产品,自诩为营销达人的我,总结了下面三个经验:
第一个是要学会用笔来战斗,多写文章。为了推广 TDengine 我写了十几篇文章,比如 7 月 12 号宣布开源的时候,我写的微信文章达到了 28 万的阅读量;今年集群开源,宣传微信阅读量接近 10 万,微博的阅读量已经是超过 56 万,现在还有人在转载。文字流量带来的影响力很大。
第二个必须重视朋友圈,微信群、微博、知乎都很重要,缺一不可,而且一定要互动,不能发了文章也不跟人互动,我的社交媒体只要有人留言就会回复。
第三个就是利用各种线下线上的曝光的机会,比如鲲鹏会,今天的直播就是一个宣传的机会。周六我要到杭州去参加 GTLC·杭州站,目的也是要去推广 TDengine。
另外还是鼓励大家多参与开源产品,参与开源社区,顺便也欢迎大家为 TDengine 做贡献。这样做的好处在于:
第一可以增加自己的曝光量,在社区打响自己的名声。
第二能够更严格督促自己,让代码程序写得更好,因为所有资料完全公开,做得不好就太丢人。
第三是能够激励进步,人都不是完美,如果出错了网友会评论吐槽,通过收集评论反馈反而能提升自己的研发水平。相反如果是一团和气,很难有持续的进步。
第四开源会是自己的名片,参与开源项目做得不错,到任何地方面试时,哪个模块是自己写的,可以调出来。参与开源项目是很好的能力证明,美国许多人找工作都是把他参与开源的这个项目 Github 地址写出来,面试的人就可以直接看到他写的代码质量。
而谈到开源在国内的机会,我认为在中国还有大量的潜在机会。
第一个方面,中国企业可以利用开源这把利剑,颠覆传统软件。因为目前工业软件没有做开源的,我们是第一家。只要做得够好,机会还是很多的。
第二个方面,中国有将近 2000 万的软件工程师,这跟 20 年前的 2000 年相比,社会已经有了极大的不同。20 年前中国是农民工的红利,现在是工程师的红利,因为写软件的人太多了,这么多工程师需要新的工具和技术之时,用户群就建立起来了。
第三个方面,中国是制造大国和消费大国,所有的应用场景都需要,而且数据量巨大,像我这种做底层软件的特别合适,想要找适用的客户也特别容易。
第四个方面,开源是中国软件走向全球市场最好捷径,因为中美意识形态的对抗,外国人难以相信中国人开发的产品。但开源就能够解决这个问题,完全透明好不好都在明面上,自然会打破固有观念。
最后说一个方面,做开源软件一定要有所为,有所不为。尤其在中国现在因为特别强调自主可控,实际上我个人的看法是应该找细分市场新的赛道来做,它在既有的赛道上其实已经很难颠覆别人,可以去另辟蹊径,反制“卡脖子”。
讲了这么多,希望大家了解我整个开源的思路,大家可以关注一下我的微信公众号“爱倒腾的程序员”,也可以关注我的微博“陶建辉”也可以加我的个人的微信号,上面都有我关于开源的一些内容,谢谢大家!
点个在看少个 bug 👇