开源社引言

这是一个美好的时代,这是一个互联网的时代,这是一个儿童、青少年、中生代、银发族等全民编程的时代,这是一个不分岁月创造奇迹的时代。前期,开源社报导了82岁程序员若宫正子独立开发 iPhone 手游的故事,引发大家赞叹,之后报导的90后美女张怡从小白到AI算法工程师的进阶之路,点赞无数。今天,让我们走进年逾半百的陶建辉老师,在风投领域风生水起,熟门熟路之后,在临近知非之年,为何还像一位毛头小子一样,激动中,带着一腔热血奋不顾身投入到开源事业中,并且孜孜不倦,竟然毫无“悔过”之意?开源魅力究竟何在?

今天12月17日,对我来说,一特别的日子。因为三年前的今天,我参加溪山天使投资年会,在会场上听着精彩创业故事的同时,在自己的Mac笔记本上,安装了Ubuntu,安装了熟悉的vi, cscope, gdb等开发工具,搭建好了开发环境,正式开始写代码。我得意地告诉参会的朋友们,我不想做天使投资人,而是要重出江湖,亲自操刀,写一个巨牛的专门针对物联网场景的大数据处理引擎,希望今后世界上90%的数据都用我陶建辉开发的软件来存储和查询。

没想到,一晃三年就过去了。从我的第一行代码起,TDengine整个系统的代码量已经超过二十万行,我自己贡献的代码量早已超过三万行。开心的是,我自己只是开了一个头,凭借物联网数据处理的巨大市场空间,凭借“舍得”,凭借“三顾茅庐”的诚意和决心,吸引了一批顶级的人才加入进来。现有团队的14个人,中国科大本科毕业的就有7位,其中5位还全部在美国留学、工作过,还有两位获得过中国科大最高荣誉的郭沫若奖学金,其他同事都来自清华、上海交大、中科院计算所等学府或科研机构,还有三位在华为工作都超过10年之久,14个人中有3位博士,7位硕士。三年前我一个人的梦想,已经变成了整个团队的梦想和目标。更可喜的是,我一个50岁的程序员,能天天与90后、80后混在一起,讨论问题,解BUG,让我顿觉年轻了20岁。

在动手写下第一行代码之前,我已经对物联网、工业互联网的数据处理做了几个月的调研,认为大家普遍采用流行的Hadoop系统是完全不合适的,开发效率低,运行效率差,而且运维成本很高。我发现物联网数据具有时序、结构化、不更新等众多特点,如果采取“一个设备一张表”的数据模型,采用“超级表”来解决多设备之间的数据聚合分析问题,一定能设计出一个极为高效的物联网数据处理系统。想到5G的到来,会让联网设备的数量指数级上升,今后世界上90%的数据都将是物联网设备产生的,顿觉热血沸腾。虽我已创业两次,并成功退出,但实在不想错过这巨大的机会,抱着“Leave a dent in the world”的想法,我再次冲向战场,并且冲到了最前线。

虽然我已经很清晰原理、设计思路,并且是研发老炮一个,但直到实现时才发现,技术难度超过预期。我写了一个高效的存储引擎,但“导入历史数据”却是一个坑最多的地方,场景实在太多,用户可能导入的数据在内存,也有可能在硬盘,也有可能跨多个文件,经历了无数的BUG之后,由团队的90后,科大郭沫若奖学金获得者程洪泽重写历史数据处理模块。节点之间的实时数据同步,我重构了三次,才得以让节点进行同步之时,不影响数据的实时插入和查询;客户端驱动,因为同步、异步的各种调用纠缠在一起,我重构了两次,团队的廖博士在我的基础上又做了很多调整。Kill一个正在进行的查询操作,因为分布式、多线程、资源管理的问题,实现的难度也是远远超过了我的预期。但这三年,每次遇到一个难啃的技术问题,我反而很开心,因为它意味着产品的门槛又高了一点,如果我们能把这些难题都完美解决,这才显示出我们团队真正的价值。

三年已经过去,前面两年在埋头写程序,最近一年我发力在推广上,而且在今年7月份,我们做出了极其正确的决定,宣布将TDengine的核心代码开源。开源还不是我的一时冲动,而是深思熟虑、谋划已久。因为作为底层基础软件,不开源,完全得不到用户的信任,而且市场上已经有相当多开源的同类产品,不开源,推广极其之难。令我兴奋的是,开源后,TDengine获得的反馈远超预期。我曾和团队说,开源后,我们争取一年的时间能在GitHub上获得5000个star就不错了,但没想到,仅仅三个月时间,TDengine的star就超过一万,fork数超过了2800。我们不仅看到了来自中国用户的反馈,还看到了来自美国、印度、西班牙、意大利、捷克等很多国家的程序员的反馈。每天起来后,第一件事就是看GitHub,看是否有人报告新的问题。每当有人报告BUG,我一点的沮丧都没有,反而是开心,因为说明有人在用TDengine,而且在乎我们产品,这是我最希望看到的。哪怕TDengine的商业化不成功,但只要有程序员喜欢这款产品,爱用这款产品,那就是我个人以及整个团队最大的成功。

开源,不仅让TDengine获得了市场的认知,而且让产品的质量得到了前所未有的提升。虽然在开源之前,我们做了大量的测试,而且好几个大的客户已经正式上线,但由于每个用户的场景不一样,开源后,TDengine仍然暴露出了很多问题,在GitHub上递交的问题数量已经超过1000。如果没有开源,这些问题则需要积累更多的客户,需要更长时间的在线运营才能暴露出来。由于开源,整个团队对产品的品质更加关心,像关胜亮、李晖等人,每次递交代码,都是小心翼翼。由于开源,不少外部贡献者参与进来,迫使团队必须建立完善的开发流程。潘方,美国密歇根大学博士毕业,在NASA工作两年后,加入团队,负责起了QA的工作,建立起了产品发布、CI/CD、自动化测试、代码静态检查等全套流程,团队虽小,但已经不再是程序员小作坊,不再局限于北京的办公室。

这一年,为推广TDengine,我参加了太多的活动。无论规模大小,无论线上线下,在介绍产品时,我总是满怀激情。很多人好奇,问我如何能做到这一点。其实,没有什么“灵丹妙药”,唯一就是要对自己研发的产品特别热爱,对产品有足够的信心。具备足够的热爱和信心后,你每一句话、每一个表情、每一个手势,都能把激情张扬出来。团队的90后江燚、80后李广、以及其他团队成员,甚至我们不爱说话的廖博士,受我的影响,每次介绍产品,也都是激情澎湃,信心满满。三年的努力,我终于成功地将我个人的激情转化为了整个团队的激情,也希望我们团队在扩充到一百人、一千人之后,这股激情依然不减。

中国2B软件的销售难,底层软件的销售更难。但我们很幸运,从2018年8月发布第一个版本到现在,已经有了几十家付费客户,免费用户至少几百家。而且可喜的是,最近几个月的销售订单完全是依靠两位销售大将拿下的,没有我的任何参与。为什么有人敢用我们软件呢?我细细一想,除我们产品本身的几大优势之外,有几大原因,1:传播方式发生改变,我们通过微博、微信、甚至直播等新媒体做了很多传播,TDengine在开发者社区里有一定的知名度,而且开源后,传播力度更大,让更多的开发者了解到我们;2:产品体验的方式发生了改变,用户可以下载源码自己编译,也可以下载安装包或镜像,安装极其简单,还可以通过云服务的方式,连安装都不需要,可以说,用户体验的门槛几乎没有;3:中国缺少自己的底层软件,因此当我们超强实力的产品推出来之后,受到业界的高度关注;4:中国开发者群体已经很大,而且现在的决策者一般都很了解或很懂技术,有一定数量的人乐意接受新技术或新产品。

三年过去,TDengine要获得成功,需要做的事情还有太多太多。我们要提供各式各样的连接器,让TDengine与现有技术生态能无缝对接;要提供事件驱动的流计算,完全一站式解决物联网行业的数据处理问题;不仅要解决云端大数据问题,还要解决边缘计算的问题。更重要的是,我们需要100%拥抱云服务。我坚信,开源+云服务才是基础软件的未来,离开两条中的任何一条,都很难让涛思数据成为独角兽。

期望有一天,TDengine的贡献者能遍布全球,一群不同文化背景、不同肤色的程序员,一起协同开发,将TDengine做到极致,为全球90%的数据处理提供一高效、高速、简单易用的引擎。更期望有一天,TDengine的用户遍布全球,任何开发者,只要是处理机器、传感器产生的数据,立马想到的就是TDengine,那一天便是TDengine的成功之日。

陶建辉

2019年12月17日于南京出差途中

开源社简介

开源社是由国内外支持开源的企业,社区及个人,依“贡献,共识,共治”原则,所组织的厂商中立、纯志愿者、非营利的开源联盟,旨在共创健康可持续发展的开源生态体系,并推动中国开源社区成为全球开源软件的积极参与及贡献者。我们专注于开源治理、国际接轨、社区发展和开源项目。

相关阅读 | Related Reading

90 后美女独家秘籍:从小白到 AI 算法工程师

全球最年长程序员,84岁硬核老奶奶的励志编程路一些关于RISC-V的质疑与解读

从第一行代码到20万行开源,我已经走过了三年相关推荐

  1. 从1行代码到20万行开源,我已经走过了三年

    今天12月17日,对我来说,一特别的日子.因为三年前的今天,我参加溪山天使投资年会,在会场上听着精彩创业故事的同时,在自己的Mac笔记本上,安装了Ubuntu,安装了熟悉的vi, cscope, gd ...

  2. html中第一行代码,HTML5 CSS3初学者指南(1) – 编写第一行代码

    介绍 网络时代已经到来.现在对人们来说,每天上网冲浪已经成为一种最为常见的行为. 在网页浏览器中输入一段文本地址,就像http://www.codeproject.com,等待一下,网页就加载到浏览器 ...

  3. Android第一行代码学习思考笔记(碎片、广播、持久化技术和Android数据库)

    Android第一行代码学习思考笔记(碎片.广播.持久化技术和Android数据库 第四章 手机平板要兼顾--探究碎片 4.1碎片是什么(Fragment) 4.2碎片的使用方式 4.2.1碎片的简单 ...

  4. Java之第一行代码

    目录 Java第一行代码 1. 什么是计算机 1.1 生活中你关注的计算机 1.2 Java开发者所关注的计算机 2. 计算机操作方式 2.1 操作系统 2.2 操作方式 2.3 DOS命令[了解] ...

  5. 第一行代码第一章——你的第一行Android代码

    第一行代码第一章-你的第一行Android代码 知识点目录 1.1 了解全貌--Android王国简介 * 1.1.1 Android系统架构 * 1.1.2 Android已发布的版本 * 1.1. ...

  6. thymealf如何实现传单个变量给html_梦回2013,看尤大vue的第一行代码,如何用30行代码实现vue(超简洁,适合初学者)...

    非非非标题党,干货预警!!! 介绍 大家好,我是清池交友 app 开发日记,记录清池交友 app 开发中学习过程和踩坑日记,伪全栈[1] 技术栈:前端 js,vue,uniapp,后端 java 尤大 ...

  7. 安全,从写第一行代码开始!

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 刘晶晶 伴随5G时代的脚步渐进,物联网发展也将成井喷式增长,"网络安全"这个老生常谈的话题似乎进入了新阶段.数据 ...

  8. 人人都能学会的python编程教程1:第一行代码

    前言 众所周知,现在IT行业很火,行业薪酬也很高,国家在2017年也发布了人工智能教育的推广计划,人人会编程的时代将要到来.不会编程.不懂编程可能有些跟不上时代的节奏,普通人不懂技术也许会觉得这个很难 ...

  9. $《第一行代码:Android》读书笔记——第6章 数据持久化

    主要讲述了Android数据持久化的三种方式:文件存储.SharedPreference存储.SQLite数据库存储. (一)文件存储 其实Android中文件存储方式和Java的文件操作类似,就是用 ...

最新文章

  1. ReactiveCocoa入门
  2. Vue + Spring Boot 学习笔记01:实现用户登录功能
  3. centos apache 腾讯云ssl证书配置
  4. cmd中无法连接MySQL
  5. S2011打印机的IP设置
  6. Hive中表名、别名的限制
  7. 使用人人开源遇到的bug
  8. 如何pdf转换word文字并重新排版格式?
  9. 基于Android Studio+Android SDK的手机通讯录管理软件设计
  10. 煤炭及煤化工加工会产生什么危废_煤化工固体废物的清洁处置
  11. 利用计算机进行文字处理就是进行文字的录入,计算机文字录入处理员理论题库.DOC...
  12. 淘宝商品信息爬取(已登录)
  13. Vivado使用技巧(26):HDL编写技巧
  14. python报错“ImportError: The _imagingft C module is not installed”
  15. 网络推广方式有哪些,网络推广哪个平台好?
  16. 将像素绘制到屏幕上去
  17. 某企业采购腐败处理办法
  18. 履带机器人动力总成_智能机器人在动力总成装配线中应用探讨
  19. 【机器视觉】教你选择工业机器人视觉系统!
  20. 单片机-6位数码管动态时间扫描程序,具有时分秒

热门文章

  1. CAPM+APT多因子模型
  2. OpenStack T版—Neutron组件部署详解
  3. outlook自定义快捷键_如何将名片模板应用于联系人并在Outlook 2013中对其进行自定义...
  4. stm32+AT指令+ESP8266接入华为云物联网平台并完成属性上报与命令响应
  5. 多智能体协同传输的事件触发通信与控制的深度强化学习(ICRA-2021)
  6. C语言通过指针交换两个数
  7. 2018-09-06 Java实现英汉词典API初版发布在Maven
  8. GPU大百科全书 第一章:美女 方程与几何
  9. 暴雪服务器遭大规模DDoS攻击 相关分析后续出台
  10. 高德地图 判断打的点是否在圈内