听 PingCAP 黄东旭谈开源社区与文化

2021-11-20
Header

旁听《开源软件与技术》课程特邀讲座,甚至白拿了一个 TiDB 的周边小礼品(会的 USB 线)

头图来自 https://en.pingcap.com/blog/benefits-of-a-hybrid-transactional-and-analytical-processing-database

怎么办,已经有一个月没有写新的文章了

课程简介 #

《开源软件与技术》是北京大学信息科学技术学院的一门研本课,由周明辉教授主讲,今年是第一次开设。本人有幸得知,直接照着安排表找课旁听。

混乱的感想 #

众所周知,PingCAP 是专搞开源的公司中的典范,因融资十分成功而成为业内眼馋的对象。(好吧我之前不知道。)
接触了 PingCAP 之后让我对开源商业化有了不同的想法。因为我之前认为搞开源然后开公司或者实现财务自由的例子主要是 JavaScript 社区的,比如尤大、Vuetify 的 John Leider,或者并不太熟悉的 Docker 之类。PingCAP 这个公司确实不一样,可以看到他们花了很多的精力在引导新人的方面,比如 Talent PlanDev Guide源码阅读系列文章 等等。这样操作的成效也很明显,其贡献者数远超同行(https://en.pingcap.com/products/tidb/ 的对比表)。

其生态令人影响深刻的不止于此。在软件的测试方面,据称其用于测试的代码比实际的数据库代码多一到两个数量级,因为分布式的确实不好测试,只能通过增加出错概率的方式测试稳定性。甚至还用 TLA+ 通过数理逻辑证明其核心算法的正确性。这又让我想到范后宏教授在古今数学思想课程上提到的 Intel 做芯片的最神秘的团队,他们用逻辑证明芯片的正确性,一般人都不能进他们的办公室。(逻辑证明这个词一个星期在不同的地方出现了两次我是不是应该关注一下了 😏 )

什么样的开源能够获得成功呢?要想有这么多企业、银行的合作伙伴,不是一般的方向能够达到的。数据库是互联网里最最核心的一环,大数据时代没有数据还怎么玩?而且分布式数据库显然是公司越大越需要的东西。TiDB 能成功很大一部分是方向对。你要是一个前端的项目,很难能够达到这个水平。要不怎么说程序员选方向的时候能后则后呢?

TiDB 是用 Rust 写的(不要计较细节,懒得在文章里细讲 TiDB 架构了),Rust 的核心开发人员也加进了 TiDB 的开发社区。挺有意思的一点是这位老哥刚加入的时候,黄也没让他直接参与项目,而是让他把 Rust 的编译器改快一点,因为在高配服务器上编译一次要半个小时太慢了 😂 。TiDB 是用 Rust 写的大约第三大项目,同时又在开发指南、教程里详细介绍了 Rust;Rust 的开发人员加入 TiDB,并帮助优化编译器,也算是互帮互助的经典了。Rust 社区的支持也算是它成功的一环吧。

带薪开源,也是一个比较新奇的概念。TiDB 的核心贡献者中有一位来自知乎的老哥,虽然不是 PingCAP 的员工,但是大家都把他当同事看待,甚至会因为他某周工作效率低下就说他。之所以有知乎老哥,是因为知乎是 TiDB 的重度用户,据说最多的时候有 3 万亿条记录存在 TiDB 中。知乎当然要安排一个亲信掌握开发动态,必要的时候紧急修 bug,不然数据库的安全和稳定没有保障。如果是付费软件比如 Oracle,谁会发工资给一个给其他公司打工的程序员呢?

既然是公司运营,为什么还要加入基金会呢?基金会除了钱,还有其他的效应。一方面是对自己项目的要求,完成了基金会的要求会使得项目更加成熟、正式。另一方面加入基金会本身也是对项目的宣传。比如在国外人们可能不是直接听说 TiDB,而是从 CNCF 基金会那知道的。还有,其他公司为啥要相信 TiDB 呢?万一 PingCAP 公司没了不就没人维护了吗?加入基金会就有基金会的背书,这个项目即使 PingCAP 没了也会照样运行。

创业必然是艰辛的,即使强如 PingCAP。PingCAP 在对天使投资人画饼的时候,说半年就能搞定。半年过后又半年,半年过后又一年,到现在也不能说项目完全做好,甚至还在劝一些客户暂时不要用,万一出了问题不好担责(毕竟收了银行的钱,银行也是花钱保平安)。说到盈利,黄认为增长比盈利重要,想盈利随时可以盈利。言下之意盈利必然牺牲增长,现阶段增长更加重要。也不是说创业公司不必考虑盈利,PingCAP 一直有盈利手段,只是盈利不是现在。还是那句话,出问题不好担责,出了问题增长一定受限,人家不愿意用嘛。

Leave your comments and reactions on GitHub