最近KubeSphere项目取消开源支持的动作让大家对开源项目的发展有了更深刻的讨论,这确实是一个足以记入开源史册的事件。
今天结合我们时序数据库项目的开源商业化历程聊一聊。
【从开源到商业化】
我们的项目是工业时序数据库 IoTDB,2011年起源于清华大学软件学院,在国家863计划、重点研发计划等科技项目的支持下逐渐成长。
在2017年,软件学院院长王建民教授,同时也是IoTDB的发起人,与 Berkely 的 Spark 之父 Ion Stoica 进行了深入交流,认为软件学院也应该积极参与开源建设,向 Spark 学习,起源于实验室,成熟于国际开源社区。
通过开源,这个项目就不再是软件学院的内部项目了,而是一个所有人都能获取和使用的开源项目,可以有其他团队或个人加入,学生毕业后也有一个继续参与的机会,让这个项目长久发展下去。
那以什么形式开源呢,一种方式是自己来维护和组织,对项目享有绝对的生杀大权。另一种方式是捐赠给非盈利的开源软件基金会,如 Apache、Linux、CNCF 等等,这也让项目的长期稳定有了保证,不会被一个组织或个人决定项目生死或变更开源协议。
由于 IoTDB 本身的大数据管理属性,我们希望像 Spark、Flink一样,捐赠给全球最知名的开源软件基金会 Apache,也意味着 IoTDB 和商业友好的开源协议 Apache License 永久绑定,即使是我们也不能修改。
这些都梳理好后,王老师和学校科研院进行了交流,这一想法也得到了学校的支持,从而顺利将项目捐赠给 Apache 社区,我们团队也作为项目管理委员会负责项目发展和维护。至此,IoTDB 成为了由中国高校发起的第一个 Apache 顶级项目,我们的日常学习工作从纯科研和工程,开始与开源紧密相连。
开源确实为我们带来了非常多的社区用户和反馈,极大促进了项目的发展, Apache 开源协议也为其他团队在选型时带来了更高的安全保证。因此,华为、中冶赛迪、东方国信、阿里、美团、用友、360等时序数据库团队均选择 Apache IoTDB 打造企业版产品,我们又一起共同发展 Apache IoTDB。
在 2021 年,为了满足开源社区用户对企业级服务的需求,我们成立了天谋科技,主做基于 Apache IoTDB 的企业版产品,TimechoDB。
自此,开源商业化这个模式也和我们息息相关。我们也越来越能感受到开源和商业化之间的辩证关系。
【开源的动机】
开源和商业化的顺序很重要,是先有开源,还是先有商业化?
如果先有开源,那么商业化很可能是社区发展需求。如果先有商业化,那么开源可能只是为了服务商业化需要。
如果开源是为了服务商业化,那么必然会随商业化的进程和需求而进行调整,比如变更开源协议,从商业使用友好到商业使用不友好,或者直接闭源。
如果商业化是开源社区自然发展的结果,那么就一定有人会为此付费。而且企业在制定发展策略时,总会对社区有更多的照顾。
IoTDB 在开源时,还没有商业化公司,学校开源的动机也不是盈利,而是希望项目能更好的发展。团队对于开源社区的拥护根深蒂固,认为发展和维护开源项目是自己的本职工作。
所以,开源社区的用户来找我们进行生产环境的运维和服务,或者希望我们开发一些需要的功能,我们也很愿意支持。
这一点可以反映到,即使成立了公司后,我们第一年几乎所有精力都放在开源项目的打磨和演化,并没有开展任何商业化的动作。
那么,是不是意味着纯搞开源就行了?靠开源打赏过活,这就到下个问题了。
【开源是否需要商业化】
一定需要。
之前有很多案例,个人维护的开源项目,由于没有收入(纯靠开源打赏几乎为0),开源社区又提出了越来越多的需求,导致对开源社区失望而不再维护社区的,这就是典型的升米恩,斗米仇。一些人愿意建设开源项目,他们至少不能为生计发愁。
就算是高校,本身没有太多经营压力,但是如果社区发展需求激增,也会面临精力问题。我们决定出来创业,一个很大的原因是,每当7、8、9月份,实验室同学们实习、找工作、毕业季,就是人力荒的时候,而且毕业生都是干了三年的项目骨干。
用户的需求是在不断攀升的,但是人力却像过山车,这对于一个非核心业务的开源软件可能还行,但是对工业领域的数据库来说是不可接受的。
另一方面,虽然社区也有不少公司和贡献者参与,但是能长期深度投入的人是没有的。如果我们做个画像,这种人只会存在于这个项目的原厂商业化团队。
(1)自由职业贡献者:长期参与开源社区,就没有收入来源。
(2)有工作的个人贡献者:其本职工作一定会饱和到没精力参与开源。
(3)下游发行版企业:主要目标一定是做企业版增值能力,要说服领导把功能开源,就要回答一个问题:这个功能开源了,对公司有什么好处?这是个无解的问题。除非碰到一个对开源持开放态度、又没太大指标压力的领导。
(4)原厂商业化团队:维护开源社区义不容辞,开源社区本身就是我们的工作重要部分,这一基调在创业初期就会确定下来。
那么,原厂商业化团队,除了维护开源,怎么活下去呢?毕竟乌托邦式的开源模式只存在于部分吃的太饱了的人嘴里。
【商业化的必然:企业版产品】
不论是开源打赏,还是开源技术支持,都不足以养活一个商业化团队。
因此,开源商业化团队的一致选择和解决方案就是企业版产品。企业版产品可以看做开源项目的升级版+专业维保。
以家用车为例,开源产品就相当于有不少组装好的免费车,基础功能和使用说明书都有,也有用户交流群,但是舒适性、智能驾驶、定制升级、保险等都是没有的。适合个人使用,或者具备较强DIY能力、并且愿意付出相应人员成本的公司。
但是如果算一笔账,自己组建团队来DIY,成本一定比采购成熟产品要高。因此,这种事情往往存在于互联网企业,喜欢自己干,也有能力自己干,最重要的是:不差钱。
而企业版产品则把这些都配置齐全了,更好的性能,稳定性。适合非互联网企业,和供应链进行合作、分工、共赢。
大家耳熟能详的开源项目,都有其企业版产品,Spark 与 Databricks,Kafka 与 Confluent,Cassandra 与 DataStax,以及我们的 IoTDB 与 TimechoDB。
【开源和企业版是否冲突】
会有冲突,看哪方面。
有的团队会认为,我把开源版闭源了,大家就会来用企业版了,但是这大概率只是少数人的愿望。
使用开源产品的用户场景和使用企业产品的用户是不同的。就算把开源版闭源,用户也愿意付出人力、甚至更多的硬件成本,迁移到其他开源项目。
有人说,同类别里,如果只有一个开源项目是不是就行了?也不太行。只要有一个有价值的开源项目,就会有套壳项目出现。
就算没有任何其他可用的同类项目,开源用户也可以选择不升级,固定在一个老版本上一直用,有bug就忍了。
冲突只在于新增功能和改进,要不要开源,哪些要开源?这是一个很难的问题,后续再写。
【最后】
开源商业化是一件影响深远的事情,小到对开发者,对用户个人,大到对团队的工作模式,对行业的发展。
读博时候,我没觉得项目开源后能有同学毕业继续参与,也没想到自己当了这个第一个吃螃蟹的人,这是一个生产关系的创新,国家提倡产学研结合,到底怎么结合,其中有模式的因素,也有人的情感因素。
有幸的是,开源商业化模式我们初步验证可行,并且确实能为中国工业领域做点事,这就足够支撑我们继续探索,继续努力。希望开源商业化不只是一个口号、一个愿望,而是一件能够长期推进的事业,实现用户和企业的共赢。