国内开源圈里刚刚发生了两个标志性的事件。
一是曾在2019年春晚红包中扛住超大用户压力、数次流量波峰的转发引擎——百度的统一七层流量转发平台BFE,在内部演化了七个年头后,将以开源的形式帮助开发者们构建属于自己的全局负载均衡系统。在业界掀起了巨大的声浪。
二是KE meng在知乎回答中晒出了自己写的“狗屁不通文章生成器”,意外受到了无数网友的“爱戴”,纷纷好奇这个富有灵魂的“生成器”可以制造出什么样的魔幻主义大作。短短一周的时间,该项目便冲上了GitHub趋势榜榜首。
发生在同一时间点的两起事件,无疑揭示了中国开源文化的两个侧面:我们从不缺少令人称道的“民间高手”,但大众对开源的认知仍局限在浅显的名词上,还要娱乐化来吸引关注;我们并不缺少百度这样在开源世界里的标杆企业,但“开源贡献主要来源于外国科技巨头”的偏见仍然屡见不鲜。
归根结底,“开源”虽然是当前互联网行业的共识,但中国相比欧美巨头,在业界的眼中依然是一个“后来者”的姿态,潜力尚待挖掘。原因固然有主观意识上的偏见,但更深层次的诱因在于评判的标尺,我们已经习惯按照市值论资排辈,技术能力几乎视而不见,对开源社区的贡献也鲜有提及。
想要走出这样的认知误区,还要从“工程师文化”开始说起。
“工程师文化”的秘密
百度之所以走开源世界里收关注,并非是一个偶然事件。暂不谈别的,仅在万亿流量转发引擎BFE的开源,一个技术团队默默坚持7年的心路历程,就能让我们有机会认识了百度工程师文化的精神内核。
2012年百度BFE团队正式创建,定位是搭建统一的七层流量转发平台,应用场景包括流量的接入和转发、流量全局调度、安全和防攻击、实时数据分析等等。回头来看,BFE团队的成果不无丰硕,但过程中也冒着失败的风险。
特别是在2014年初,团队开始对BFE进行重构,最大的争议点就在于是否要基于新兴的Go语言来编写。彼时Golang的普及程度并不高,不少人还站在Golang的大门外,但BFE团队相信Golang将成为互联网创业公司的必备利器,凭借对编程语言和系统知识的了解,硬着头皮拍了板。
事实证明Go语言是一个正确的选择,与业界普遍使用的Nginx相比,BFE有着更高的研发效率,特别是Go语言没有C语言固有的缓冲区溢出隐患,规避了大量的稳定性漏洞和安全风险,同时对于异常可以捕捉,保证程序在快速迭代上线的情况下也不崩溃。
从长远的趋势来看,硬件资源的价格正在逐渐降低,开发人力成本、项目研发风险、系统稳定性在决策中的权重会进一步提升,基于C语言的Nginx势必会走向衰落,而BFE等基于更高级编程语言的开源软件将逐步成为主流。
值得一提的是,一位亲历BFE起步到开源过程的工程师,在BFE开源后写下了一段意味深长的话:
“无论外人如何评说,我必须要说,到目前为止,我仍然坚定的认为,百度是中国最适合做技术的公司。百度给了工程师最大的尊重和自由,也愿意为了技术研发承担最大的风险。BFE团队的另一个项目GTC(全局流量调度),前后研发了5年时间。曾经有一个朋友告诉我,也就只有百度可以给这么多时间,在其它公司1年做不出来就cancel了。”
或许这就是工程师文化的秘密,一家企业的技术底色不在于招了多少程序员,不在于网罗了多少技术大牛,甚至不在于每年有多少钱投入到研发中,而是愿不愿意放权给一线的技术负责人,愿不愿意承担技术研发的风险,有没有科学而系统的方法论,有没有重视过程而非结果的价值观。
至于为何要将历经多次大流量洗礼的BFE开源贡献社区?因为这才是技术价值体现的重要方式,百度和百度的工程师们笃信于此。
为什么需要重视开源?
有百度这样工程师文化绽放的公司,可以说是中国互联网之幸,如果只有百度一家相信开源力量的企业,无疑会是中国最大的悲哀。
站在全人类的立场上,如果没有开源运动,没有Linux、GCC、Android、浏览器…….整个互联网世界将不复存在,软件和工具被少数几家企业牢牢控制在手中,人们的生活仍然会像20世纪之前那样“枯燥无味”。
站在中国企业的立场上,当人口红利的消失成为既定事实,历史的车轮驶向产业互联网,开源恰恰是争夺的下一个制高点。“一流企业定标准、二流企业做品牌、三流企业做产品”,朴实而简单的道理影响着互联网世界里的每一家企业,想要在未来的商业博弈中掌握话语权,就要让自己的产品被更多人使用,不断加速产品研发的速度,积极参与技术标准的制定,开源不失为一条“捷径”。
人工智能就是一个例子。
根据科技部发布的《中国新一代人工智能发展报告2019》,中国已经是全球AI专利数量最多的国家,呈现出了中美双寡头竞争的格局。可细究一下的话,中国的AI专利主要集中在应用层面,AI基础技术的核心力量仍然在美国企业手中。原因不无直接,倘若中国的人工智能创业者只知道在TensorFlow、PyTorch等框架上“缝缝补补”,专利申请自然会向应用层倾斜。
然而开源社区和开源软件的中立终究都是相对的,有如谷歌重金加持的全球第二大开源代码托管平台GitLab,在最近的一份公开声明中直言不会给中国、俄罗斯公民提供offer,那些有权限访问客户数据的员工,现在也不能移居到中国或俄罗斯。如果中国没有自己的开源力量,终究无法摆脱受制于人的魔咒。
同时BFE又证明了另一个道理,尽管历史上很多优秀的开源软件都出自“外国人”之手,但中国的开源力量并非没有弯道超车的可能。
不只是比Nginx使用了更高级的编程语言,BFE在设计中特别增加了对企业级应用场景的优化。比如与Nginx从Web Server转型为Proxy的进化路径不同,BFE直接为转发场景设计,从转发模型和转发配置方面更满足转发场景的需求;针对云计算场景下多租户复用的需求,BFE在设计中内置提供了多租户的支持;考虑到线上监控的需求,BFE通过HTTP方式向外暴露数千个内部状态变量…
除了BFE之外,百度在AI领域不乏顶级开源项目:中国唯一的功能完备的开源深度学习平台飞桨;全球首个自动驾驶开源项目;中国首个开源的边缘计算框架BAETYL……
当百度等技术派在开源世界中竖起大旗,当越来越多企业开始意识到开源技术的必要性,在中国程序员绝对的数量优势下,让外界看到开源世界里的中国力量,需要的可能只是时间上的发酵。
写在最后
每每谈到中国在开源世界里的定位时,总是有人以重复造轮子为由辩驳,百度BFE团队的工程师们再次证明了这样一个道理:技术迭代的浪潮从未停歇,每一个新的历史时期都需要新的轮子出现。
何况商业和技术本就有着辩证的关系,也许搬运和拿来主义可以在短时间内低成本获取巨大的收益,可当红利消失的时候,技术又屡屡被证实是最可靠的驱动引擎,二者没有孰优孰劣之分,却有着短期和长期的差别。
即便是从自身利益的角度出发,中国的互联网企业也需要像百度这样,打造适合做技术的土壤,给工程师最大的开放和自由,让程序员们愿意花时间做开源项目、维护开源项目,在开源世界里占据一席之地。