当前位置:首页>Linux>以良好愿望造屎山:直面Linux内核的自我拷问

以良好愿望造屎山:直面Linux内核的自我拷问

  • 2026-09-11 00:47:30
以良好愿望造屎山:直面Linux内核的自我拷问
早上起床,谈一谈Linux内核团队造屎山的问题。我个人的感觉,造屎山在许多公司已经是一个普遍的现象了,基本是有两类屎山:
1. 为了解决某些技术问题,提高性能,而造的屎山。这些屎山往往出于一个良好的愿望。
2.为了刷KPI,加大patch数量,刷排行榜,而造的毫无意义的屎山。
第2类屎山不在本文的讨论范畴之内(对于这类屎山,本文的建议是不必刷,因为毕竟一个牛逼patch的影响力远远超过100个灌水的patch),本文主要讨论出于良好的愿望而造的第一类屎山。
造成第一类屎山诞生的主要原因有三:
1. Linux内核团队面临严重的生存压力,需要证明自身的价值,他们必须造屎山。这些屎山一方面让团队和团队的成员能够活下去,另外一方面也让团队的基层和中层领导有可以考评的素材。所以内核团队可能在生存压力面前,放弃了技术人对事物本源的探索和回归本真的探索,放弃了战略追求,而选择了短、平、快的战术来迎合上级领导。
2. 缺乏优雅的架构设计和长远的规划,为了达到性能优化的目的,可以各种野路子一起上。这些野路子堆出了很多奇葩的代码,在短期之内取得了收益,缓解了团队的生存压力。中长期而言,由于Linux内核是一个不断变化和升级的系统,前面的野路子在后期的内核根本无法维护,不得不在2-3年,甚至1-2年后完全删除野路子代码。可以说,代码未来猝死的速度和其路子野的程度是成正比的。
3. 缺乏在一个国际社区视野下面,与upstream社区整体联动规划的认知。Linux是一个开放的系统,对内核的技术创新,很可能必须融入upstream这个创新才最终可以活下去。如果完全不管其他人在干什么,仅仅凭借自己对Linux内核一行行撸代码撸出来的认知去指导技术工作,则极有可能造出屎山来,投入的产出最终归0。
Linux内核的开放性对产品公司而言既是优点,也是缺点。优点是吸取了其他人的智慧,缺点是,你的智慧也必须融入其他人的智慧里面才能生存下去,不然,哪怕是优秀的设计和代码,最终也沦为屎山。某一特定企业主导的相对封闭系统没有这个问题,比如苹果觉得什么东西好,塞到自己的OS就好;鸿蒙觉得什么东西好,塞进自己的OS里面就好。可以说是又快又好又有效。事实上,也确实有很多东西对消费电子其实很好,但是在Linux社区里面就说不通或者很难说通的情况,或者你必须进行更宏观层次的抽象,找到一个更加共性的价值才能说得通。这些好东西,在能够说通之前,在Linux那里反而被认为只是屎。所以,某种意义上来说,Linux内核的这种开放性,本身对许多产品公司而言,也是一个负担。
下面我们谈谈如何避免造屎山,造就持续和长久的价值呢?笔者认为这个是需要高层管理人员和基层码农团队共同合力才能完成的事情。
第一点,作为一个底层码农,窃以为高层管理团队要有足够的耐心,不要整天想着1个月2个月,就腾飞了,暴富了,这不可能,不符合Linux内核的开发周期和规律。一个新feature,在Linux内核的成熟周期,往往需要最少6个月以上的时间,假设迭代2个内核版本,经过2个merge window。高层管理团队如果急于求成,中层和基层领导必然走向野路子。野路子一时爽,但是后面一定会死,造成了一种无效的"内卷"。
第二点,中层、基层领导和内核码农要回归技术本真,回归对真我的追求。不能为了一时的短期考评利益,放弃了技术人追求“用代码还原事物本真”的持久良知。因为作为一个内核码农,我们其实是知道什么好的,什么是坏的。如果真的不知道,那是确实需要加强学习;如果明明知道,还要忽悠自己,忽悠领导,那是为了利益而违背了技术人的良知。
第三点,必须在一个更宏大的、Linux主流社区工作的宏大背景下规划自身的工作。抬头看别人在干什么,走出去,走到LSF/MM/eBPF、走到LPC去,和会议里面的一线开发者去交流、去互动、去深入探索、去吃饭、去刷脸。避免闭门造车,避免在团队内部自嗨。所以,本文对屎山的定义并非一定指的是垃圾代码,也包括自身含高价值,但因缺乏与社区联动而胎死腹中的好代码。这要求我们持久地贡献社区,与社区进行持久的互动,并反向获得社区顶级一线开发者和维护者的技术支持。
策略上,我们最好能够在项目规划的早期,就联动起来,不要自己哼哧哼哧写了几个月代码,在无比自豪的情况下拿出来,发现这个代码在别人眼里只是屎,迎来的只有悲壮,这就有点难受了。

最新文章

随机文章