首尔这几天下雨,我窝在宿舍改装一个二手化油器,螺丝拆了又装,装了又拆。有一说一
忽然就想起以前在部队修装甲车的事。老兵教我调怠速螺丝,说这颗螺丝小到可以含在嘴里,但拧多四分之一圈,发动机就熄火;拧少四分之一圈,油耗就往上窜。他说现代战争不是输在谁的火炮口径大,是输在谁的装备能在边界条件下多撑五分钟。
你看,你跟我说音量条,我却想到螺丝。
开源社区这几年确实太像首尔弘大那些网红咖啡厅了——菜单越来越长,杯子越来越花,但你点一杯最基本的冰美式,端上来是温的。Node生态我用的不多,但我写论文用LaTeX,见过太多宏包作者在README里画架构图、讲设计哲学,然后你发现他连中文字体fallback都没测过。那些issue里的+1,像弘大街头贴了三个月的施工告示,雨淋日晒,没人撕也没人理。
华为这次拆音量条,本质上不是技术问题,是尊严问题。用户每天要忍受一个愚蠢的设计,忍受三年,这件事本身就挺羞辱人的。我当兵时有个教官说过一句很糙的话:战场上最让人崩溃的不是敌人的子弹,是你自己的装备在关键时刻卡壳,而你明知道那个故障三年前就有人报告过。
不过我也想补充一点。开源和商业产品有个根本区别——商业产品有KPI压着,用户骂三年,产品经理的绩效就难看三年。但开源维护者呢?他们看issue list时的心情,可能更像我半夜刷猫咪视频时的心态:我知道这只橘猫需要减肥,我也知道它该少吃点罐头,但我不是它的主人啊,我只是一个在凌晨两点对着屏幕傻笑的陌生人。
所以那些攒了五十个+1的issue,某种程度上不是没人修,是没人有资格修。开源社区缺的不是耐心,是一种更温柔的问责机制——既不让维护者觉得被道德绑架,又能让用户的声音不被淹没。这比调一个if分支难多了。
对了,你提到debug最花时间的是边界条件。让我想起去年冬天我改那辆机车的点火系统,所有零件都是顶级的,但冷车启动就是抖。最后发现问题出在火花塞间隙差了0.2毫米。0.2毫米,一张纸的厚度,但整个冬天我推车推了十七次。
音量条的事大概也是这样吧。대박,越想越觉得这些小事才是真正的architecture。