源码技术
php
java
python
Linux
当前位置:
首页
>
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去,和会议里面的一线开发者去交流、去互动、去深入探索、去吃饭、去刷脸。避免闭门造车,避免在团队内部自嗨。
所以,本文对屎山的定义并非一定指的是垃圾代码,也包括自身含高价值,但因缺乏与社区联动而胎死腹中的好代码。
这要求我们持久地贡献社区,与社区进行持久的互动,并反向获得社区顶级一线开发者和维护者的技术支持。
策略上,我们最好能够在项目规划的早期,就联动起来,不要自己哼哧哼哧写了几个月代码,在无比自豪的情况下拿出来,发现这个代码在别人眼里只是屎,迎来的只有悲壮,这就有点难受了。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:596563534@qq.com 。
Python 标识符
Python学习进步最快方式【邪修版
最新文章
Python 标识符
我装了中国首个Linux 7.0内核系统,结果出乎意料
Linux 第 4 课:把命令结果「存进小本本」——重定向入门
还在用 root 操作服务器?Linux 权限体系一篇讲透,告别 chmod 777
ESP32终于跑上Linux:编译一小时,Wi-Fi还在门外找鞋
这 Linux 真的不看吗,他真的讲的很清晰
零基础看懂!Linux 进阶实操教程,搞定 90% 服务器日常工作
Linux基础知识点总结!很详细!
Linux(32)-GPIO子系统
AI连劝多次“放弃吧”!Linux祖师爷怒撕模型:经历18次地狱重启,仅改1行代码打脸AI
热门文章
你知道Linux系统是什么和怎么选择吗?
AI多次直呼“这不可能”!Linux之父硬扛18次重启,1行代码秒杀地狱级Bug
AI连劝3次“这题无解”!Linux之父通宵狂启18次内核,一行代码干碎幽灵Bug
AI被逼到崩溃劝退!Linux之父硬核排查地狱级Bug:重启18次,一行代码反手教AI做人
PHP 3是这样诞生的?2.0耽误作业得高分了
PHP 和 JavaScript,越看越像的两门语言
Python 零基础100天—Day87 分类与聚类
Linux故障排查与修复命令
Linux运维8类必备运维工具,你都会哪些?
Linux运维必懂的30条故障排查命令
随机文章
10个月宝宝每天需要喝多少奶粉?
玩网络安全,这些 Linux 命令得吃透!!!
Python·Pygame游戏从入门到精通 第02课 Pygame简介
数据分析前必须会的 Python 语法(只讲用得上的)
面试官问我会不会Python,我当场给他看了这20行代码
清华教授力荐!真正能把Python学通透的书单,新手闭眼入!
python二级备考小笔记
Python手写手册,你都掌握了吗?
突然对Python的兴趣达到10000000%
AI Agent开发系列:从零做一个 Python 天气查询服务
AI Agent开发系列:从零做一个 Python 天气