这是我们《开源文集》的一部分,The Cathedral and the Bazaar,固定网址 http://rl.rockiestech.com/node/103 。
这里的“egoless programming”很是头痛,ego怎么翻译呢?
MIT的LCS Lab是?
其他意见?也欢迎到永久页面留言。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[http://rl.rockiestech.com]
洛基开放文化实验室,使用开源方法来推动社会文化进步
In The Mythical Man-Month, Fred Brooks observed that programmer time is not fungible; adding developers to a late software project makes it later. As we've seen previously, he argued that the complexity and communication costs of a project rise with the square of the number of developers, while work done only rises linearly. Brooks's Law has been widely regarded as a truism. But we've examined in this essay an number of ways in which the process of open-source development falsifies the assumptionms behind it—and, empirically, if Brooks's Law were the whole picture Linux would be impossible.
在《神秘的工时》中,弗里德。布洛克表述了程序员的时间是不能用钱币购买的;在延期的软件项目添加开发人员只会延期更久。像我们前面提到的,他论述了项目的复杂程度和通讯成本按开发人员数目的平方增加,而业绩仅以直线增加。布洛克法则被广泛的认同为真理。但在这篇文章里,我们已经探讨了开源的开发过程破除它背后的预设的几种途径——而且按经验来说,如果布洛克法则统领一切,Linux就不可能发生。
Gerald Weinberg's classic The Psychology of Computer Programming supplied what, in hindsight, we can see as a vital correction to Brooks. In his discussion of ``egoless programming'', Weinberg observed that in shops where developers are not territorial about their code, and encourage other people to look for bugs and potential improvements in it, improvement happens dramatically faster than elsewhere. (Recently, Kent Beck's `extreme programming' technique of deploying coders in pairs looking over one anothers' shoulders might be seen as an attempt to force this effect.)
Weinberg's choice of terminology has perhaps prevented his analysis from gaining the acceptance it deserved—one has to smile at the thought of describing Internet hackers as ``egoless''. But I think his argument looks more compelling today than ever.
杰拉德。委恩伯格的经典《计算机编程的心理学》提到了一个我们在事后可以看作是对布洛克的关键校正。在他对“淡泊编程”*的讨论里,委恩伯格表述了在一些开发人员不对他们的代码划分疆域、而是鼓励他人在其中寻找问题和潜在的改进的场合,改进发生的比其它地方显著快了很多。(最近,肯特。贝克的“极度编程”技术——把编程者配对让他们互相关照——或许可以看作是强制这一效果的尝试。)
委恩伯格在用词上的选择可能阻碍了他的分析获得应有的认可——把网络黑客描述为“淡泊”的想法让人发笑。但是我认为他的争论在今天看起来比以往任何时间更让人信服。
The bazaar method, by harnessing the full power of the ``egoless programming'' effect, strongly mitigates the effect of Brooks's Law. The principle behind Brooks's Law is not repealed, but given a large developer population and cheap communications its effects can be swamped by competing nonlinearities that are not otherwise visible. This resembles the relationship between Newtonian and Einsteinian physics—the older system is still valid at low energies, but if you push mass and velocity high enough you get surprises like nuclear explosions or Linux.
The history of Unix should have prepared us for what we're learning from Linux (and what I've verified experimentally on a smaller scale by deliberately copying Linus's methods [egcs]). That is, while coding remains an essentially solitary activity, the really great hacks come from harnessing the attention and brainpower of entire communities. The developer who uses only his or her own brain in a closed project is going to fall behind the developer who knows how to create an open, evolutionary context in which feedback exploring the design space, code contributions, bug-spotting, and other improvements come from from hundreds (perhaps thousands) of people.
市集模式,通过借助“淡泊编程”效果的极致动力,强烈抵制了布洛克法则的效果。布洛克法则背后的原理没有被推翻,但是有了一个庞大的开发者群体和廉价的通讯,它的效果可以被否则不可见的对立的非线性因素所淹没。这就像牛顿力学和爱因斯坦相对论之间的关系——旧的系统在低能量下仍然有效,但当你把质量和速度变得足够大的时候,你就惊奇的产生了核爆炸或Linux。
Unix的历史应该使得我们对研究Linux的结果(和我在小规模上有意拷贝莱纳斯的方法所实验确认的结果)有了心理准备。这是说,虽然编程基本上仍是一种个人封闭的活动,真正高超的程序来自于借助整个社区的注意力和脑力。一个在封闭的项目中只使用自己脑力的开发者,将会输给一个知道怎样创造一个开放的、进化式的环境——从中吸收成千或上万人的探索设计空间的反馈、编码贡献、臭虫检测和其它的改进——的开发者。
But the traditional Unix world was prevented from pushing this approach to the ultimate by several factors. One was the legal contraints of various licenses, trade secrets, and commercial interests. Another (in hindsight) was that the Internet wasn't yet good enough.
Before cheap Internet, there were some geographically compact communities where the culture encouraged Weinberg's ``egoless'' programming, and a developer could easily attract a lot of skilled kibitzers and co-developers. Bell Labs, the MIT AI and LCS labs, UC Berkeley—these became the home of innovations that are legendary and still potent.
但是有几个因素阻止了传统的Unix世界把这个方法发挥到极致。一个是各种执照许可、贸易秘密和商业利益的法律限制。另一个(回头来看)是互联网还不够好。
在便宜的互联网之前有过一些地域性的紧密团体,在文化上鼓励委恩伯格的“淡泊编程”、一个开发者可以容易地吸引到一批有水平的“军师”和合作者。贝尔实验室、麻省理工的人工智能和LCS实验室、伯克利加州大学——这些成为了传奇性的和依然强劲的发明的家园。