首页 › 案例
坎普(Poul-Henning Kamp),FreeBSD · 1999

车棚刷什么颜色都行

让 FreeBSD 的 sleep 命令能等零点几秒,一个小改动,按坎普的估计吵了两个来星期。他的回信给这种现象起了名字。

◷ 约 2 分钟

在 Unix 电脑上敲 sleep 5,机器就停五秒。1999 年,FreeBSD 的这个命令还不认小数。项目里有人提议让它认,这样脚本就能停个半秒。

按坎普的说法,这个提议考虑得很周全:改完以后,FreeBSD 和 OpenBSD、NetBSD 的做法一致,以前谁写过的程序都不受影响。可邮件列表一拿到它,反对意见、修改方案一条接一条。坎普后来写道,看那阵势,「好像这个改动能把瑞士奶酪上的洞全堵上,或者把可口可乐的味道都改了」。这个讨论串拖了「好多天」,他估计「大概有两个星期了」,懒得去查。

1999 年 10 月 1 日,改动还是进了 FreeBSD 的源码。提交说明称它是「一个保守的改动」:遇到怪输入照旧处理,sleep abcd 还是停零秒。

坎普自称当时差不多算是项目「事实上的精神领袖」。他后来回忆,那件事让他气到这辈子少有的程度,缓了好几天才能心平气和地写出东西来。提交后的第二天,他给项目的开发者们发了一封邮件,标题是:「一个自行车棚(什么颜色都行),在更绿的草地上……」

他对 sleep 本身一个字没争。他搬出了一本管理讽刺书,帕金森的《帕金森定律》,书里有个委员会,批一座原子能电站很痛快,批一个自行车棚却纠缠不休。坎普写道,电站太大、太贵、太复杂,大家「理解不了,也就不去试,干脆假定在它走到这一步之前,已经有别人把细节都查过了」。车棚不一样,「谁都能花一个周末搭一个,还来得及看电视上的球赛」。所以总有人要抓住机会,表明自己在干活、在留意,表明自己「在场」。他说,在丹麦,这叫「按个手印」。

最扎人的是邮件后半段。在 sleep 讨论里开火最猛的,都是在项目里待了多年的老人,这么一件小事,他们自己从来没动手做过;一个比他们资浅得多的人做了,他们却火冒三丈。坎普说他也想不通。他的愿望很简单:时不时让人去盖个车棚,至于刷什么颜色,他不在乎。他还向那些一直潜水的人道歉,说他们是被这些「石像鬼」吓得不敢参与的。

按坎普后来的说法,「车棚」先在 FreeBSD 里成了一个行话,相当于在讨论里亮一张黄牌。后来 Subversion 项目的两位开发者专门为这封邮件做了一个网站,此后,他写道,这个说法好像一下子传遍了整个计算机圈。

直到今天,FreeBSD 的官方常见问题里还留着这一条:车棚刷什么颜色,我为什么要在乎?答案第一句是:「最最简短的回答是:你不该在乎。」

这件事里藏着几个道理

帕金森琐碎定律(车棚效应)sleep 的改动小,谁都看得懂,于是人人都要插一句。坎普借帕金森的反应堆和自行车棚来解释这场争论,程序员从此有了「车棚」这个词。心理安全感坎普最心疼的不是浪费的时间,而是那些在旁边看着的新人:看完这场围攻,他们干脆什么都不提了。

出处

  1. Poul-Henning Kamp, "A bike shed (any colour will do) on greener grass...",致 FreeBSD committers 和 hackers 邮件列表,1999 年 10 月 2 日(附作者本人网站上的回顾 The Bikeshed email)
  2. FreeBSD 源码提交 ac14c31, "Let sleep(1) handle fractions of a second (up to nanosecond)",1999 年 10 月 1 日
  3. FreeBSD 常见问题(FAQ),Why should I care what color the bikeshed is?
  4. C. Northcote Parkinson, Parkinson's Law and Other Studies in Administration,Houghton Mifflin,1957,第三章 High Finance, or The Point of Vanishing Interest