Eric S. Raymond五部曲

目 录

  1. Eric S. Raymond五部曲
    1. Hacker文化简史
    2. 大教堂和市集
    3. 如何成为一名Hacker
    4. 开拓智域
      1. 矛盾的现象
      2. 玩家意识形态的多样性
      3. 杂乱的理论, 清教徒实践
      4. 开放原码及拥有权
      5. Locke及土地头衔
      6. 玩家文化即礼物经济
      7. 驾御之乐无穷
      8. 名望的多面性
      9. 拥有权及名望诱因
      10. 自我的问题
      11. 人性的价值
      12. 名望游戏模型对整体的密切关系
      13. 智域特质及领土於动物行为学的影响
      14. 冲突的起因
      15. 计划结构及拥有权
      16. 冲突与冲突解决
      17. 薪传机制及与学界的关联
      18. 结论_ 由文化到文化规范
      19. 对进一步研究的一些问题
      20. 参考文件, 附注, 及感谢
    5. 魔法大锅炉
      1. 近乎魔法
      2. 超越高手的才能
      3. 制造业的错觉
      4. 信息应该免费_的神话
      5. 驳斥公用悲剧说
      6. 封闭源码的原因
      7. 使用价值集资模型
      8. 为何销售价值存在问题
      9. 间接销售价值模式
      10. 何时开放,何时封闭
      11. 开放原代码的商业运作
      12. 成功的复制
      13. 开放研发和再开发
      14. 由此及彼
      15. 结论:自由软件变革之后
      16. 参考文献和致谢
      17. 为何封闭驱动程序源码的硬件厂商会浪费投资商的金钱
      18. 本文档修订记录


Eric S. Raymond五部曲

[目录]


Hacker文化简史

Eric S. Raymond五部曲之A Brief History of Hackerdom
Hacker文化简史


--------------------------------------------------------------------------------

    以下的内容转载自  http://hp.envir.online.sh.cn/vega/hacker.htm,英文原文请看

http://www.tuxedo.org/~esr/writings/cathedral-bazaar/hacker-history/

  本篇原作者为Eric S. Raymond,他是一位大哥级的 Hacker,写了很多自由软件,知名著作有Jargon File等,近年

来发表“大教堂与集市”论文为Opensource software努力,Netscape 愿意公开Navigator的原始码,与这篇文章有很大的

关系。

  序曲: Real Programmer

  故事一开始,我要介绍的是所谓的Real Programmer。

  他们从不自称是Real Programmer、Hacker或任何特殊的称号;`Real Programmer' 这个名词是在1980年代才出现,

但早自1945年起,电脑科学便不断地吸引世界上头脑最顶尖、想像力最丰富的人投入其中。从Eckert &Mauchly发明ENI

AC後,便不断有狂热的programmer投入其中,他们以撰写软件与玩弄各种程式设计技巧为乐,逐渐形成具有自我意识的

一套科技文化。当时这批Real Programmers主要来自工程界与物理界,他们戴著厚厚的眼镜, 穿聚酯纤维T恤与纯白袜

子,用机器语言、汇编语言、FORTRAN及很多古老的 语言写程式。他们是Hacker时代的先驱者,默默贡献,却鲜为人知。

  从二次大战结束後到1970早期,是打卡计算机与所谓"大铁块"的mainframes 流行的年代,由Real Programmer主宰

电脑文化。Hacker传奇故事如有名的 Mel (收录在Jargon File中)、Murphy's Law的各种版本、mock- German`Blinke_

nlight' 文章都是流传久远的老掉牙笑话了。

  ※译者:

  Jargon File亦是本文原作者所编写的,里面收录了很多Hacker用语、缩写意义、传奇故事等等。Jargon File有出

版成一本书:The New Hacker's Dictionary,MIT PRESS出版。也有Online版本: http://www.ccil.org/jargon

  ※译者:

  莫非定律是:当有两条路让你抉择,若其中一条会导致失败,你一定会选到它。 它有很多衍生说法: 比如一个程

式在demo前测试几千几万次都正确无误,但demo 那一天偏偏就会出bug。

  一些Real Programmer仍在世且十分活跃 (本文写在1996年)。超级电脑Cray 的设计者Seymour Cray, 据说亲手设

计Cray全部的硬体与其操作系统,作业系统是他用机器码硬干出来的,没有出过任何bug或error。Real Programmer 真

是超强!

  举个比较不那么夸张的例子:Stan Kelly-Bootle,The Devil's DP Dictionary 一书的作者(McGraw-Hill, 1981

年初版,ISBN 0-07-034022-6)与Hacker 传奇专家,当年在一台Manchester Mark I开发程式。 他现在是电脑杂志的专

栏作家,写一些科学幽默小品,文笔生动有趣投今日hackers所好,所以很受欢迎。 其他人像David E. Lundstorm,

写了许多关於Real Programmer的小故事, 收录在A few Good Men From UNIVAC这本书,1987年出版,ISBN-0- 262-62

075-8。

  ※译:看到这里,大家应该能了解,所谓Real Programmer指的就是用组合语 言或甚至机器码,把程式用打卡机punch

出一片片纸卡片,由主机读卡机输入电脑的那种石器时代Programmer。

  Real Programmer的时代步入尾声,取而代之的是逐渐盛行的Interactive computing,大学成立电算相关科系及电

脑网络。它们催生了另一个持续的工程传统,并最终演化为今天的开放代码黑客文化。

  早期的黑客

  Hacker时代的滥觞始於1961年MIT出现第一台电脑DEC PDP-1。MIT的Tech Model Railroad Club(简称TMRC)的Power

and Signals Group买了这台机器後,把它当成最时髦的科技玩具,各种程式工具与电脑术语开始出现,整个环境与文

化一直发展下去至今日。 这在Steven Levy的书`Hackers' 前段有详细的记载(Anchor/Doubleday 公司,1984年出版,

  ※译:Interactive computing并非指Windows、GUI、WYSIWYG等介面, 当时有terminal、有shell可以下指令就算

是Interactive computing了。 最先使用Hacker这个字应该是MIT。1980年代早期学术界人工智慧的权威:MIT 的Artif

icial Intelligence Laboratory,其核心人物皆来自TMRC。从1969年 起,正好是ARPANET建置的第一年, 这群人在电

脑科学界便不断有重大突破与贡献。

  ARPANET是第一个横跨美国的高速网络。由美国国防部所出资兴建,一个实验性 质的数位通讯网络,逐渐成长成联

系各大学、国防部承包商及研究机构的大网络。 各地研究人员能以史无前例的速度与弹性交流资讯, 超高效率的合作

模式导致科技 的突飞猛进。

  ARPANET另一项好处是,资讯高速公路使得全世界的hackers能聚在一起,不再像以前孤立在各地形成一股股的短命

文化,网络把他们汇流成一股强大力量。 开始有人感受到Hacker文化的存在,动手整理术语放上网络, 在网上发表讽

刺文学与讨论Hacker所应有的道德规范。(Jargon File的第一版出现在1973年,就是一个好例子), Hacker文化在有接

上ARPANET的各大学间快速发展,特别是(但不全是)在信息相关科系。

  一开始,整个Hacker文化的发展以MIT的AI Lab为中心,但Stanford University 的Artificial Intelligence La_

boratory(简称SAIL)与稍後的Carnegie-Mellon University(简称CMU)正快速崛起中。 三个都是大型的资讯科学研究中

心及人工智慧的权威,聚集著世界各地的精英,不论在技术上或精神层次上,对Hacker文化都有极高的贡献。

  为能了解後来的故事,我们得先看看电脑本身的变化;随著科技的进步,主角MIT AI Lab也从红极一时到最後淡出

舞台。

  从MIT那台PDP-1开始,Hacker们主要程式开发平台都是Digital Equipment Corporation 的PDP迷你电脑序列。DE

C率先发展出商业用途为主的interactive computing及time-sharing操作系统,当时许多的大学都是买DEC的机器, 因

为它兼具弹性与速度,还很便宜(相对於较快的大型电脑mainframe)。 便宜的分时系统是Hacker文化能快速成长因素之

一,在PDP流行的时代, ARPANET上是DEC机器的天下,其中最重要的便属PDP-10,PDP-10受到Hacker们的青睐达十五年;

TOPS-10(DEC的操作系统)与MACRO-10(它的组译器),许多怀旧的术语及Hacker传奇中仍常出现这两个字。

  MIT像大家一样用PDP-10,但他们不屑用DEC的操作系统。他们偏要自己写一个:传说中赫赫有名的ITS。

  ITS全名是`Incompatible Timesharing System',取这个怪名果然符合MIT的搞怪作风 -- 就是要与众不同, 他们

很臭屁但够本事自己去写一套操作系统。ITS始终不稳,设计古怪,bug也不少,但仍有许多独到的创见,似乎还是分时

系统中开机时间最久的纪录保持者。

  ITS本身是用汇编语言写的,其他部分由LISP写成。LISP在当时是一个威力强大与极具弹性的程式语言;事实上,

二十五年後的今天,它的设计仍优於目前大多数的程式语言。LISP让ITS的Hacker得以尽情发挥想像力与搞怪能力。LI_

SP是MIT AI Lab成功的最大功臣,现在它仍是Hacker们的最爱之一。

  很多ITS的产物到现在仍活著;EMACS大概是最有名的一个,而ITS的稗官野史仍为今日的Hacker们所津津乐道, 就

如同你在Jargon File中所读到的一般。在MIT红得发紫之际,SAIL与CMU也没闲著。SAIL的中坚份子後来成为PC 界或图

形使用者介面研发的要角。CMU的Hacker则开发出第一个实用的大型专 家系统与工业用机器人。

  另一个Hacker重镇是XEROX PARC公司的Palo Alto Research Center。从 1970初期到1980中期这十几年间,PARC不

断出现惊人的突破与发明,不论质或量,软件或硬体方面。如现今的视窗滑鼠介面,雷射印表机与区域网络; 其D系列

的机器,催生了能与迷你电脑一较长短的强力个人电脑。不幸这群先知先觉者并不受到公司高层的赏识;PARC是家专门

提供好点子帮别人赚钱的公司成为众所皆知的大笑话。即使如此,PARC这群人对Hacker文化仍有不可抹灭的贡献。1970

年代与PDP-10文化迅速成长茁壮。Mailing list的出现使世界各地的人得以组成许多SIG(Special-interest group),

不只在电脑方面,也有社会与娱乐方面的。DARPA对这些非`正当性'活动睁一只眼闭一只眼, 因为靠这些活动会吸引更

多的聪明小夥子们投入电脑领域呢。

  有名的非电脑技术相关的ARPANET mailing list首推科幻小说迷的,时至今日ARPANET变成Internet, 愈来愈多的

读者参与讨论。Mailing list逐渐成为一种公众讨论的媒介,导致许多商业化上网服务如CompuServe、Genie与Prodigy

的成立。

    Unix 的兴起

  此时在新泽西州的郊外,另一股神秘力量积极入侵Hacker社会,终於席卷整个PDP-10的传统。它诞生在1969年,也

就是ARPANET成立的那一年,有个在AT&T Bell Labs的年轻小夥子Ken Thompson发明了Unix。

  Thomspon曾经参与Multics的开发,Multics是源自ITS的操作系统,用来实做当时一些较新的OS理论, 如把操作系

统较复杂的内部结构隐藏起来,提供一个介面,使的programmer能不用深入了解操作系统与硬体设备,也能快速开发程

式。

  译:那时的programmer写个程式必须彻底了解操作系统内部,或硬体设备。比方说写有IO的程式,对於硬碟的转速,

磁轨与磁头数量等等都要搞的一清二楚才行。

  在发现继续开发Multics是做白工时,Bell Labs很快的退出了(後来有一家公司Honeywell出售Multics,赔的很惨)。

Ken Thompson很喜欢Multics上的作业环境,於是他在实验室里一台报废的DEC PDP-7上胡乱写了一个操作系统,  该系

统在设计上有从Multics抄来的也有他自己的构想。他将这个操作系统命名Unix,用来反讽Multics。

  译:其实是Ken Thompson写了一个游戏`Star Travel' 没地方跑,就去找一台的报废机器PDP-7来玩。他同事Bria_

n Kernighan嘲笑Ken Thompson说:「你写的系统好逊哦,乾脆叫Unics算了。」(Unics发音与太监的英文eunuches 一

样),後来才改为Unix。

  他的同事Dennis Ritchie,发明了一个新的程式语言C,於是他与Thompson用C把原来用汇编语言写的Unix重写一遍。

C的设计原则就是好用,自由与弹性,C与Unix很快地在Bell Labs得到欢迎。1971年Thompson与Ritchie争取到一个办公

室自动化系统的专案,Unix开始在Bell Labs中流行。不过Thompson与Ritchie的雄心壮志还不止於此。

  那时的传统是,一个操作系统必须完全用汇编语言写成,始能让机器发挥最高的效能。Thompson与Ritchie, 是头

几位领悟硬体与编译器的技术,已经进步到作业系统可以完全用高阶语言如C来写,仍保有不错的效能。五年後, Unix

已经成功地移植到数种机器上。

  译:Ken Thompson与Dennis Ritchie是唯一两位获得Turing Award(电脑界的诺贝尔奖)的工程师(其他都是学者)。

  这当时是一件不可思议的事!它意味著,如果Unix可以在各种平台上跑的话,Unix 软件就能移植到各种机器上。

再也用不著为特定的机器写软件了,能在Unix上跑最重要,重新发明轮子已经成为过去式了。

  除了跨平台的优点外,Unix与C还有许多显著的优势。Unix与C的设计哲学是Keep It Simple, Stupid'。programm_

er可以轻易掌握整个C的逻辑结构(不像其他之前或以後的程式语言)而不用一天到晚翻手册写程式。 而Unix提供许多

有用的小工具程式,经过适当的组合(写成Shell script或Perl script),可以发挥强大的威力。

  ※注:The C Programming Language是所有程式语言书最薄的一本,只有两百多页哦。作者是Brian Kernighan 与

Dennis Ritchie,所以这本C语言的圣经又称`K&R'。

  ※注:`Keep It Simple, Stupid' 简称KISS,今日Unix已不follow这个原则,几乎所有Unix 都是要灌一堆有的没

的utilities,唯一例外是MINIX。

  C与Unix的应用范围之广,出乎原设计者之意料,很多领域的研究要用到电脑时,他们是最佳拍档。 尽管缺乏一个

正式支援的机构,它们仍在AT&T内部中疯狂的散播。到了1980年,已蔓延到大学与研究机构,还有数以千计的hacker想

把Unix装在家里的机器上。

  当时跑Unix的主力机器是PDP-11、VAX系列的机器。不过由於UNIX的高移植性,它几乎可安装在所有的电脑机型上。

一旦新型机器上的UNIX安装好,把软件的C原始码抓来重新编译就一切OK了,谁还要用汇编语言来开发软件? 有一套专

为UNIX设计的网络 --- UUCP:一种低速、不稳但很成本低廉的网络。 两台UNIX机器用条电话线连起来,就可以使用互

传电子邮件。UUCP是内建在UNIX系统中的,不用另外安装。於是UNIX站台连成了专属的一套网络,形成其Hacker文化。

在1980第一个USENET站台成立之後,组成了一个特大号的分散式布告栏系统,吸引而来的人数很快地超过了ARPANET。

  少数UNIX站台有连上ARPANET。PDP-10与UNIX的Hacker文化开始交流, 不过一开始不怎么愉快就是了。PDP-10的H_

acker们觉得UNIX的拥护者都是些什么也不懂的新手,比起他们那复杂华丽,令人爱不释手的LISP与ITS,C与 UNIX简直

原始的令人好笑。『一群穿兽皮拿石斧的野蛮人』他们咕哝著。

  在这当时,又有另一股新潮流风行起来。第一部PC出现在1975年;苹果电脑在1977年成立,以飞快的速度成长。微

电脑的潜力,立刻吸引了另一批年轻的 Hackers。他们最爱的程式语言是BASIC,由於它过於简陋,PDP-10 的死忠派与

UNIX迷们根本不屑用它,更看不起使用它的人。

  译:这群Hacker中有一位大家一定认识,他的名字叫Bill Gates,最初就是他在8080上发展BASIC compiler的。

  古老时代的终结

  1980年同时有三个Hacker文化在发展,尽管彼此偶有接触与交流,但还是各玩各的。ARPANET/PDP-10文化, 玩的

是LISP、MACRO、TOPS-10与ITS。UNIX与C的拥护者用电话线把他们的PDP-11与VAX机器串起来玩。 还有另一群散乱无秩

序的微电脑迷,致力於将电脑科技平民化。

  三者中ITS文化(也就是以MIT AI LAB为中心的Hacker文化)可说在此时达到全盛时期, 但乌云逐渐笼罩这个实验

室。ITS赖以维生的PDP-10逐渐过时,开始有人离开实验室去外面开公司,将人工智慧的科技商业化。MIT AI Lab 的高

手挡不住新公司的高薪挖角而纷纷出走,SAIL与CMU也遭遇到同样的问题。

  译:这个情况在GNU宣言中有详细的描述,请参阅:(特别感谢由AKA的chuhaibo翻成中文)

http://www.aka.citf.net/Magazine/Gnu/manifesto.html

  致命一击终於来临,1983年DEC宣布:为了要集中在PDP-11与VAX生产线, 将停止生产PDP-10;ITS没搞头了,因为

它无法移植到其他机器上,或说根本没人办的到。而Berkeley Univeristy修改过的UNIX在新型的VAX跑得很顺,是 ITS

理想的取代品。有远见的人都看得出,在快速成长的微电脑科技下,Unix一统江湖是迟早的事。

  差不多在此时Steven Levy完成``Hackers'' 这本书,主要的资料来源是Richard M. Stallman(RMS)的故事,他是M

IT AI Lab领袖人物,坚决反对实验室的研 究成果商业化。

  Stallman接著创办了Free Software Foundation,全力投入写出高品质的自由软件。Levy以哀悼的笔调描述他是t_

he last true hacker',还好事实证明Levy完全错了。

  译:Richard M. Stallman的相关事迹请参考: http://www.aka.citf.net/Magazine/Gnu/cover.htm

  Stallman的宏大计划可说是80年代早期Hacker文化的缩影 -- 在1982年他 开始建构一个与UNIX 相容但全新的操作

系统,以C来写并完全免费。整个ITS的精神与传统,经由RMS的努力,被整合在一个新的,UNIX与VAX机器上的Hacker文

化。 微电脑与区域网络的科技,开始对Hacker文化产生影响。Motorola 68000 CPU 加Ethernet是个有力的组合,也有

几家公司相继成立生产第一代的工作站。 1982年,一群Berkeley出来的UNIX Hacker成立了Sun Microsystems,他们的

算盘打的是:把UNIX架在以68000为CPU的机器,物美价廉又符合多数应用程式的要求。他们的高瞻远嘱为整个工业界树

立了新的里程碑。虽然对个人而言,工作站仍太昂贵,不过在公司与学校眼中,工作站真是比迷你电脑便宜太多了。在

这些机构里,工作站(几乎是一人一台)很快地取代了老旧庞大的VAX等timesharing机器。

    译:Sun一开始生产的工作站CPU是用Motorola 68000系列,到1989才推出自行研发的以SPARC系列为CPU的SPARCst_

ation。

    私有Unix时代

  1984年AT&T解散了,UNIX正式成为一个商品。当时的Hacker文化分成两大类,一类集中在Internet与USENET上(主

要是跑UNIX的迷你电脑或工作站连上网络),以及另一类PC迷,他们绝大多数没有连上Internet。

  ※译:台湾在1992年左右连上Internet前,玩家们主要以电话拨接BBS交换资讯,但是有区域性的限制, 发展性也

大不如USENET。Sun与其他厂商制造的工作站为Hacker们开启了另一个美丽新世界。 工作站诉求的是高效能的绘图与网

络,1980年代Hacker们致力为工作站撰写软件,不断挑战及突破以求将这些功能发挥到百分之一百零一。Berkeley发展

出一套内建支援ARPANET protocols的UNIX,让UNIX能轻松连上网络,Internet也成长的更加迅速。

  除了Berkeley让UNIX网络功能大幅提升外,尝试为工作站开发一套图形界面也不少。最有名的要算MIT开发的Xwin_

dow了。Xwindow成功的关键在完全公开原始码,展现出Hacker一贯作风,并散播到Internet上。X 成功的干掉其他商业

化的图形界面的例子,对数年後UNIX的发展有著深远的启发与影响。少数ITS死忠派仍在顽抗著,到1990年最後一台ITS

也永远关机长眠了;那些死忠派在穷途末路下只有悻悻地投向UNIX的怀抱。

  UNIX们此时也分裂为BerkeleyUNIX与AT&T两大阵营,也许你看过一些当时的海报,上面画著一台钛翼战机全速飞离

一个爆炸中、上面印著AT&T的商标的死星。Berkeley UNIX的拥护者自喻为冷酷无情的公司帝国的反抗军。 就销售量来

说,AT&TUNIX始终赶不上BSD/Sun,但它赢了标准制订的战争。到1990年,AT&T与BSD版本已难明显区分,因为彼此都有

采用对方的新发明。随著90年代的来到,工作站的地位逐渐受到新型廉价的高档PC的威胁,他们主要是用Intel80386系

列CPU。第一次Hacker能买一台威力等同於十年前的迷你电脑的机器,上面跑著一个完整的UNIX,且能轻易的连上网络。

沈浸在MS-DOS世界的井底蛙对这些巨变仍一无所知,从早期只有少数人对微电脑有兴趣,到此时玩DOS与Mac的人数已超

过所谓的"网络民族"的文化,但他们始终没成什么气候或搞出什么飞机,虽然聊有佳作光芒乍现,却没有稳定发展出统

一的文化传统,术语字典,传奇故事与神话般的历史。它们没有真正的网络,只能聚在小型的BBS 站或一些失败的网络

如FIDONET。提供上网服务的公司如CompuServe或Genie生意日益兴隆,事实显示non-UNIX的操作系统因为并没有内附如

compiler等程式发展工具,很少有source 在网络上流传,也因此无法形成合作开发软件的风气。 Hacker文化的主力,

是散布在Internet各地,几乎可说是玩UNIX的文化。他们玩电脑才不在乎什么售後服务之类,他们要的是更好的工具、

更多的上网时间、还有一台便宜32-bitPC。

  机器有了,可以上网了,但软件去哪找?商业的UNIX贵的要命,一套要好几千大洋($)。90年代早期, 开始有公司

将AT&T与BSDUNIX移植到PC上出售。成功与否不论,价格并没有降下来,更要紧的是没有附原始码, 你根本不能也不准

修改它,以符合自己的需要或拿去分享给别人。传统的商业软件并没有给Hacker们真正想要的。

  即使是FreeSoftwareFoundation(FSF)也没有写出Hacker想要的操作系统,RMS承诺的GNU操作系统--HURD 说了好久

了,到1996年都没看到影子(虽然1990年开始,FSF的软件已经可以在所有的UNIX平台执行)。

  早期的免费Unix

  在这空窗期中,1992年一位芬兰HelsinkiUniversity的学生--LinusTorvalds开始在一台386PC上发展一个自由软件

的UNIX kernel,使用FSF的程式开发工具。

  他很快的写好简单的版本,丢到网络上分享给大家,吸引了非常多的Hacker来帮忙一起发展Linux-一个功能完整的

UNIX,完全免费且附上全部的原始码。 Linux最大的特色,不是功能上的先进而是全新的软件开发模式。直到Linux 的

成功前,人人都认为像操作系统这么复杂的软件,非得要靠一个开发团队密切合作,互相协调与分工才有可能写的出来。

商业软件公司与80年代的FreeSoftwareFoundation所采用都是这种发展模式。

  Linux则迥异於前者。一开始它就是一大群Hacker在网络上一起涂涂抹抹出来的。 没有严格品质控制与高层决策发

展方针,靠的是每周发表新版供大家下载测试,测试者再把bug与patch贴到网络上改进下一版。一种全新的物竞天择、

去芜存菁的快速发展模式。令大夥傻眼的是,东修西改出来的Linux,跑的顺极了。

  1993年底,Linux发展趋於成熟稳定,能与商业的UNIX一分高下,渐渐有商业应用软件移植到Linux上。不过小型U_

NIX厂商也因为Linux的出现而关门大吉 -因为再没有人要买他们的东西。幸存者都是靠提供BSD为基础的UNIX 的完整原

始码,有Hacker加入发展才能继续生存。

  Hacker文化,一次次被人预测即将毁灭,却在商业软件充斥的世界中,披荆斩棘,筚路蓝缕,开创出另一番自己的

天地。

  网络大爆炸时代

  Linux能快速成长的来自令一个事实:Internet大受欢迎,90年代早期ISP如雨後春笋般的冒出来, World-WideWeb

的出现,使得Internet成长的速度,快到有令人窒息的感觉。

  BSD专案在1994正式宣布结束,Hacker们用的主要是免费的UNIX(Linux与一些4.4BSD的衍生版本)。而 LinuxCD-ROM

销路非常好(好到像卖煎饼般)。近几年来Hacker们主要活跃在Linux与Internet发展上。WorldWideWeb让 Internet成为

世界最大的传输媒体,很多80年代与90年代早期的Hacker们现在都在经营ISP。

  Internet的盛行,Hacker文化受到重视并发挥其政治影响力。94、95年美国政府打算把一些较安全、难解的编码学

加以监控,不容许外流与使用。这个称为Clipper proposal的专案引起了Hacker们的群起反对与强烈抗议而半途夭折。

96年Hacker又发起了另一项抗议运动对付那取名不当的"Communications DecencyAct",誓言维护 Internet上的言论自

由。

  电脑与Internet在21世纪将是大家不可或缺的生活用品,现代孩子在使用Internet科技迟早会接触到Hacker文化。

它的故事传奇与哲学,将吸引更多人投入。未来对Hacker们是充满光明的。


[目录]


大教堂和市集

Eric S. Raymond五部曲之The Cathedral and the Bazaar
大教堂和市集

Eric Raymond
HansB翻译

--------------------------------------------------------------------------------

一. 大教堂和市集


  Linux的影响是非常巨大的。甚至在5年以前,有谁能够想象一个世界级的操作系统能够仅仅用细细的Internet连接起来的散布在全球的几千个开发人员有以业余时间来创造呢?

  我当然不会这么想。在1993年早期我开始注意Linux时,我已经参与Unix和自由软件开发达十年之久了。我是八十年代中期GNU最早的几个参与者之一。我已经在网上发布了大量的自由软件,开发和协助开发了几个至今仍在广泛使用的程序(Nethack,Emacs VC和GND模式,xlife等等)。我想我知道该怎样做。


  Linux推翻了许多我认为自己明白的事情。我已经宣扬小工具、快速原型和演进式开发的Unix福音多年了。但是我也相信某些重要的复杂的事情需要更集中化的,严密的方法。我相信多数重要的软件(操作系统和象Emacs一样的真正大型的工具)需要向建造大教堂一样来开发,需要一群于世隔绝的奇才的细心工作,在成功之前没有beta版的发布。
Linus Torvalds的开发风格(尽早尽多的发布,委托所有可以委托的事,对所有的改动和融合开放)令人惊奇的降临了。这里没有安静的、虔诚的大教堂的建造工作——相反,Linux团体看起来像一个巨大的有各种不同议程和方法的乱哄哄的集市(Linux归档站点接受任何人的建议和作品,并聪明的加以管理),一个一致而稳定的系统就象奇迹一般从这个集市中产生了。


  这种设计风格确实能工作,并且工作得很好,这个事实确实是一个冲击。在我的研究过程中,我不仅在单个工程中努力工作,而且试图理解为什么Linux世界不仅没有在一片混乱中分崩离析,反而以大教堂建造者们不可想象的速度变得越来越强大。


  到了1996年中,我想我开始理解了。我有一个极好的测试我的理论的机会,以一个自由软件计划的形式,我有意识的是用了市集风格。我这样做了,并取得了很大的成功。


  在本文的余下部分,我将讲述这个计划的故事,我用它来明确一些自由软件高效开发的格言。并不是所有这些都是从Linux世界中学到的,但我们将看到Linux世界给予了它们一个什么样的位置。如果我是正确的,它们将使你理解是什么使Linux团体成为好软件的源泉,帮助你变得更加高效。


二. 邮件必须得通过


  1993年以前我在一个小的免费访问的名为Chester County InterLink的ISP的做技术工作,它位于Pennsylvania的West Chester。(我协助建立了CCIL,并写了我们独特的多用户BBS系统——你可以telnet到locke.ccil.org来检测一下。今天它在十九条线上支持三千的用户)。这个工作使我可以一天二十四小时通过CCIL的56K专线连在网上,实际上,它要求我怎么做!


  所以,我对Internet email很熟悉。因为复杂的原因,很难在我家里的机器(snark.thyrsus.com)和CCIL之间用SLIP工作。最后我终于成功了,但我发现不得不时常telnet到locke来检查我的邮件,这真是太烦了。我所需要的是我的邮件发送到snark,这样biff(1)会在它到达时通知我。


  简单地sendmail的转送功能是不够的,因为snark并不是总在网上而且没有一个静态地址。我需要一个程序通过我的SLIP连接把我的本地发送的邮件拉过来。我知道这种东西是存在的,它们大多使用一个简单的协议POP(Post Office Protocol)。而且,locke的BSD/OS操作系统已经自带了一个POP3服务器。


  我需要一个POP3客户。所以我到网上去找到了一个。实际上,我发现了三、四个。我用了一会pop-perl,但它却少一个明显的特征:抽取收到的邮件的地址以便正确回复。


  问题是这样的:假设locke上一个叫“joe”的人向我发了一封邮件。如果我把它取到snark上准备回复时,我的邮件程序会很高兴地把它发送给一个不存在的snark上的“joe”。手工的在地址上加上“@ccil.org”变成了一个严酷的痛苦。


  这显然应是计算机替我做的事。(实际上,依据RFC1123的5.2.18节,sendmail应该做这件事)。但是没有一个现存的POP客户知道怎样做!于是这就给我们上了第一课:

  1.每个好的软件工作都开始于搔到了开发者本人的痒处。

  也许这应该是显而易见的(“需要是发明之母”长久以来就被证明是正确的),但是软件开发人员常常把他们的精力放在它们既不需要也不喜欢的程序,但在Linux世界中却不是这样——这解释了为什么从Linux团体中产生的软件质量都如此之高。


  那么,我是否立即投入疯狂的工作中,要编出一个新的POP3客户与现存的那些竞争呢?才不是哪!我仔细考察了手头上的POP工具,问自己“那一个最接近我的需要?”因为:
  2.好程序员知道该写什么,伟大的程序员知道该重写(和重用)什么。


  我并没有声称自己是一个伟大的程序员,可是我试着效仿他们。伟大程序员的一个重要特点是建设性的懒惰。他们知道你是因为成绩而不是努力得到奖赏,而且从一个好的实际的解决方案开始总是要比从头干起容易。


  例如,Linux并不是从头开始写Linux的。相反的它从重用Minix(一个386机型上的类似Unix的微型操作系统)的代码和思想入手。最后所有的Minix代码都消失或被彻底的重写了,但是当它们在的时候它为最终成为Linux的雏形做了铺垫。


  秉承同样的精神,我去寻找良好编码的现成的POP工具,用来作为基础。


  Unix世界中的代码共享传统一直对代码重用很友好(这正是为什么GNU计划不管Unix本身有多么保守而选取它作为基础操作系统的原因)。Linux世界把这个传统推向技术极限:它有几个T字节的源代码可以用。所以在Linux世界中花时间寻找其他几乎足够好的东西,会比在别处带来更好的结果。


  这也适合我。加上我先前发现的,第二次寻找找到了9个候选者——fetchPOP,PopTart,get-mail,gwpop,pimp,pop-perl,popc,popmail 和 upop)。我首先选定的是“fetchpop”。我加入了头标重写功能,并且做了一些被作者加入他的1.9版中的改进。


  但是几个星期之后,我偶然发现了Carl Harris写的“popclient”的代码,然后发现有个问题,虽然fetchpop有一些好的原始思想(比如它的守护进程模式),它只能处理pop3,而且编码的水平相当业余(Seung-Hong是个很聪明但是经验不足的程序员),Carl的代码更好一些,相当专业和稳固,但他的程序缺少几个重要的相当容易实现的fetchpop的特征(包括我自己写的那些)。


  继续呢还是换一个? 如果换一个的话,作为得到一个更好开发基础的代价,我就要扔掉我已经有的那些代码。


  换一个的一个实际的动机是支持多协议,pop3是用的最广的邮局协议,但并非唯一一个,Fetchpop和其余几个没有实现POP2.RPOP,或者APOP,而且我还有一个为了兴趣加入IMAP(Internet Message Access Protocol,最近设计的最强大的邮局协议)的模糊想法。


  但是我有一个更加理论化的原因认为换一下会是一个好主意,这是我在Linux很久以前学到的:

  3.“计划好抛弃,无论如何,你会的”(Fred Brooks,《神秘的人月》第11章)


  或者换句话说,你常常在第一次实现一个解决方案之后才能理解问题所在,第二次你也许才足够清楚怎样做好它,因此如果你想做好,准备好推翻重来至少一次。


  好吧(我告诉自己),对fetchpop的尝试是我第一次的尝试,因此我换了一下。


  当我在1996年6月25日把我第一套popclient的补丁程序寄给Carl Harris之后,我发现一段时间以前他已经对popclient基本上失去了兴趣,这些代码有些陈旧,有一些次要的错误,我有许多修改要做,我们很快达成一致,我来接手这个程序。不知不觉的,这个计划扩大了,再也不是我原先打算的在已有的pop客户上加几个次要的补丁而已了,我得维护整个的工程,而且我脑袋里涌动着一些念头要引起一个大的变化。


  在一个鼓励代码共享的软件文化里,这是一个工程进化的自然道路,我要指出:

  4. 如果你有正确的态度,有趣的问题会找上你的,但是Carl Harris的态度甚至更加重要,他理解:

  5.当你对一个程序失去兴趣时,你最后的责任就是把它传给一个能干的后继者。


  甚至没有商量,Carl和我知道我们有一个共同目标就是找到最好的解决方案,对我们来说唯一的问题是我能否证明我有一双坚强的手,他优雅而快速的写出了程序,我希望轮到我时我也能做到。

三. 拥有用户的重要性


  于是我继承了popclient,同样重要的是,我继承了popclient的用户基础,用户是你所拥有的极好的东西,不仅仅是因为他们显示了你正在满足需要,你做了正确的事情,如果加以适当的培养,他们可以成为合作开发者。


  Unix传统另一有力之处是许多用户都是黑客,因为源优码是公开的,他们可以成为高效的黑客,这一点在Linux世界中也被推向了令人高兴的极致,这对缩短调试时间是极端重要的,在一点鼓励之下,你的用户会诊断问题,提出修订建议,帮你以远比你期望快得多的速度的改进代码。


  6. 把用户当做协作开发者是快速改进代码和高效调试的无可争辩的方式。


  这种效果的力量很容易被低估,实际上,几乎所有我们自由软件世界中的人都强烈低估了用户可以多么有效地对付系统复杂性,直到Linus让我们看到了这一点。


  实际上,我认为Linus最聪明最了不起的工作不是创建了Linux内核本身,而是发明了Linux开发模式,当我有一次当着他的面表达这种观点时,他微笑了一下,重复了一句他经常说的话:“我基本上是一个懒惰的人,依靠他人的工作来获取成绩。”象狐狸一样懒惰,或者如Robert Heinlein所说,太懒了而不会失败。


  回顾起来,在GNU Emacs Lisp库和Lisp代码集中可以看到Linux方法的成功,与Emacs的C内核和许多其他FSF的工具相比,Lisp代码库的演化是流动性的和用户驱动的,思想和原型在达到最终的稳定形式之前往往要重写三或四次,而且经常利用Internet的松散合作。


  实际上,我自己在fetchmail之前最成功的作品要算Emacs VC模式,它是三个其他的人通过电子邮件进行的类似Linux的合作,至今我只见过其中一个人(Richard Stallman),它是SCCS、RCS和后来的CVS的前端,为Emacs提供“one-touch”版本控制操作,它是从一个微型的、粗糙的别人写好的sccs.el模式开始演化的,VC开发的成功不像Emacs本身,而是因为Emacs Lisp代码可以很快的通过发布/测试/改进的过程。


  (FSF的试图把代码放入GPL之下的策略有一个未曾预料到的副作用,它让FSF难以采取市集模式,因为他们认为每个想贡献二十行以上代码的人都必须得到一个授权,以使受到GPL的代码免受版权法的侵扰,具有BSD和MITX协会的授权的用户不会有这个问题,因为他们并不试图保留那些会使人可能受到质询的权力)。


四. 早发布、常发布


  尽量早尽量频繁的发布是Linux开发模式的一个重要部分,多数开发人员(包括我)过去都相信这对大型工程来说是个不好的策略,因为早期版本都是些充满错误的版本,而你不想耗光用户的耐心。

  这种信仰强化了建造大教堂开发方式的必要性,如果目标是让用户尽可能少的见到错误,那你怎能不会仅仅每六个月发布一次(或更不经常),而且在发布之间象一只狗一样辛勤“捉虫”呢? Emacs C内核就是以这种方式开发的,Lisp库,实际上却相反,因为有一些有FSF控制之外的Lisp库,在那里你可以独立于Emacs发布周期地找寻新的和开发代码版本。


  这其中最重要的是Ohio州的elisp库,预示了今天的巨大的Linux库的许多特征的精神,但是我们很少真正仔细考虑我们在做什么,或者这个库的存在指出了FSF建造教堂式开发模式的什么问题,1992年我曾经做了一次严肃的尝试,想把Ohio的大量代码正式合并到Emacs的官方Lisp库中,结果我陷入了政治斗争中,彻底失败了。


  但是一年之后,在Linux广泛应用之后,很清楚,一些不同的更加健康的东西诞生了,Linus的开发模式正好与建造教堂方式相反,Sunsite和tsx-11的库开始成长,推动了许多发布。所有这些都是闻所未闻的频繁的内核系统的发布所推动的。


  Linus以所有实际可能的方式把它的用户作为协作开发人员。


  7. 早发布、常发布、听取客户的建议

  Linus的创新并不是这个(这在Unix世界中是一个长期传统),而是把它扩展到和他所开发的东西的复杂程度相匹配的地步,在早期一天一次发布对他来说都不是罕见的!而且因为他培育了他的协作开发者基础,比其他任何人更努力地充分利用了Internet进行合作,所以这确实能行。


  但是它是怎样进行的呢?它是我能模仿的吗?还是这依赖于Linus的独特天才?


  我不这样想,我承认Linus是一个极好的黑客(我们有多少人能够做出一个完整的高质量的操作系统内核?),但是Linux并不是一个令人敬畏的概念上的飞跃,Linus不是(至少还不曾是)象Richard stallman或James Gosling一样的创新天才,在我看来,Linus更象一个工程天才,具有避免错误和开发失败的第六感觉,掌握了发现从A点到B点代价最小的路径的决窍,确实,Linux的整个设计受益于这个特质,并反映出Linus的本质上保守和简化设计的方法。


  如果快速的发布和充分利用Internet不是偶然而是Linus的对代价最小的路径的洞察力的工程天才的内在部分,那么他极大增强了什么?他创建了什么样的方法?


  问题回答了它自己,Linus保持他的黑客用户经常受到激励和奖赏:被行动的自我满足的希望所激励,而奖赏则是经常(甚至每天)都看到工作在进步。


  Linus直接瞄准了争取最多的投入调试和开发的人时,甚至冒代码不稳定和一旦有非常棘手的错误而失去用户基础的险,Linus似乎相信下面这个:

  8. 如果有一个足够大的beta测试人员和协作开发人员的基础,几乎所有的问题都可以被快速的找出并被一些人纠正。


  或者更不正式的讲:“如果有足够多的眼睛,所有的错误都是浅显的”(群众的眼睛是雪亮的),我把这称为“Linus定律”。


  我最初的表述是每个问题“对某些人是透明的”,Linus反对说,理解和修订问题的那个人不一定非是甚至往往不是首先发现它的人,“某个人发现了问题”,他说,“另一个理解它,我认为发现它是个更大的挑战”,但是要点是所有事都趋向于迅速发生。


  我认为这是建造教堂和集市模式的核心区别,在建造教堂模式的编程模式看来,错误和编程问题是狡猾的、阴险的、隐藏很深的现象,花费几个月的仔细检查,也不能给你多大确保把它们都挑出来的信心,因此很长的发布周期,和在长期等待之后并没有得到完美的版本发布所引起的失望都是不可避免的。


  以市集模式观点来看,在另一方面,我们认为错误是浅显的现象,或者至少当暴露给上千个热切的协作开发人员,让他们来对每个新发布进行测试的时候,它们很快变得浅显了,所以我们经常发布来获得更多的更正,作为一个有益的副作用,如果你偶尔做了一个笨拙的修改,也不会损失太多。也许我们本不应该这样的惊奇,社会学家在几年前已经发现一群相同专业的(或相同无知的)观察者的平均观点比在其中随机挑选一个来得更加可靠,他们称此为“Delhpi效应”,Linus所显示的证明在调试一个操作系统时它也适用——Delphi效应甚至可以战胜操作系统内核一级的复杂度。


  我受Jeff Dutky (dutky @ wam.umd.edu)的启发指出Linus定律可以重新表述为“调试可以并行”,Jeff观察到虽然调试工作需要调试人员和对应的开发人员相交流,但它不需要在调试人员之间进行大量的协调,于是它就没有陷入开发时遇到的平方复杂度和管理开销。

  在实际中,由于重复劳动而导致的理论上的丧失效率的现象在Linux世界中并不是一个大问题,“早发布、常发布策略”的一个效果就是利用快速的传播反馈修订来使重复劳动达到最小。


  Brooks甚至做了一个与Jeff相关的更精确的观察:“维护一个广泛使用的程序的成本一般是其开发成本的40%,奇怪的是这个成本受到用户个数的强烈影响,更多的用户发现更多的错误”(我的强调)。

  更多的用户发现更多的错误是因为更多的用户提供了更多测试程序的方法,当用户是协作开发人员时这个效果被放大了,每个找寻错误的人都有自己稍微不同的感觉和分析工具,从不同角度来看待问题。“Delphi效应”似乎因为这个变体工作变得更加精确,在调试的情况下,这个变体同时减小了重复劳动。


  所以加入更多的beta测试人员虽不能从开发人员的P.O.V中减小“最深”的错误的复杂度,但是它增加了这样一种可能性,即某个人的工具和问题正好匹配,而这个错误对这个人来说是浅显的。


  Linus也做了一些改进,如果有一些严重的错误,Linux内核的版本在编号上做了些处理,让用户可以自己选择是运行上一个“稳定”的版本,还是冒遇到错误的险而得到新特征,这个战略还没被大多数Linux黑客所仿效,但它应该被仿效,存在两个选择的事实让二者都很吸引 人。


五. 什么时候玫瑰不是玫瑰?


  在研究了Linus的行为和形成了为什么它成功的理论之后,我决定在我的工程(显然没有那么复杂和雄心勃勃)里有意识的测试这个理论。
但我首先做的事是熟悉和简化Popclient。 Carl Harris的实现非常好,但是有一种对许多C程序来说没有必要的复杂性。他把代码当作核心而把数据结构当作对代码的支持,结果是代码非常漂亮但是数据结构设计得很特别,相当丑陋(至少对以这个老LISP黑客的标准来看),然而除了提高代码和数据结构设计之外,重写它还有一个目的,就是要把它演化为我彻底理解的东西,对修改你不理解的程序中的错误负责可不是一件有趣的事。


  第一个月我只是在领会Carl's的基本设计的含义,我所做的第一个重大修改是加入了IMAP支持,我把协议机重新组织为一个通用驱动程序和三个方法表(对应POP2、POP3和IMAP),这个前面的修改指出一个需要程序员(特别是象C这种没有自然的动态类型支持的语言)记在脑中的一般原理:


  9. 聪明的数据结构和笨拙的代码要比相反的搭配工作的更好


  Fred Brooks也在他第11章中讲道:“让我看你的[代码],把你的[数据结构]隐藏起来,我还是会迷惑;让我看看你的[数据结构],那我就不需要你的[代码]了,它是显而易见的”。


  实际上,他说的是“流程图”和“表”,但是在三十年的术语/文化演进之后,事情还是一样的。


  此时(1996年9月初,在从零开始六个月后),我开始想接下来修改名字——毕竟,它已不仅仅是一个POP客户,但我犹豫了,因为还没有什么新的漂亮设计呢,我的popclient版本需要有自己的特色。


  当fetehmail学会怎样把取到的邮件转送到SMTP端口时,事情就完全改变了,但是首先:上面我说过我决定使用这个工程来测试我关于Linus Torualds所做的行为的理论,(你可能会问)我怎样做到这点呢? 以下面的方式:
    1. 我尽早尽量频繁的发布(几乎从未少于每十天发布一次;在密集开发的时候是每天一次)。
    2. 我把每一个和我讨论fetchmail的人加入一个beta表中。
    3. 每当我发布我都向beta表中的人发出通告,鼓励人们参与。
    4. 我听取beta测试员的意见,向他们询问设计决策,对他们寄来的补丁和反馈表示感谢。


  这些简单的手段立即收到的回报,在工程的开始,我收到了一些错误报告,其质量足以使开发者因此被杀掉,而且经常还附有补丁、我得到了理智的批评,有趣的邮件,和聪明的特征建议,这导致了:


  10. 如果你象对待最宝贵的资源一样对待你的beta测试员,他们就会成为你最宝贵的资源。


六. popclient变成了Fetchmail


  这个工程的真正转折点是Harry Hochleiser寄给我他写的代码草稿,他把邮件转发到客户端机器的SMTP端口,我立即意识到这个特征的可靠实现将淘汰所有其他的递送模式。


  几个星期以来我一直在修改而不是改进fetchmail,因为我觉得界面设计虽然有用但是太笨拙琐碎了,到处充满了太多的粗陋的细小选项。


  当我思考SMTP转发时我发现popclient试图做的事太多了,它被设计成既是一个邮件传输代理(MTA)也是一个本地递送代理(MDA)。使用SMTP转发,它就可以从MDA的事务中解脱出来而成为一个纯MTA,而象sendmail一样把邮件交给本地递送程序来处理。


  既然端口25在所有支撑TCP/IP的平台上早已被预留,为什么还要为一个邮件传输代理的配置或为一个邮箱设置加锁的附加功能而操心呢?尤其是当这意味着抽取的邮件就象一个正常的发送者发出的SMTP邮件一样,而这就是我们需要的。


  这里有几个教益:第一,SMTP转发的想法是我有意识地模拟Linus的方法以来的最大的单个回报,一个用户告诉我这个非同寻常的想法——我所需做的只是理解它的含义。


  11. 想出好主意是好事,从你的用户那里发现好主意也是好事,有时候后者更好。


  很有趣的是,你很快将发现,如果你完全承认你从其他人那里得到多少教益的话,整个世界将会认为所有的发明都是你做出的,而你会对你的天才变得谦虚。我们可以看到这在Linus身上体现得多明显!(当我在1997年8月的Perl会议上发表这个论文时,Larry Wall坐在前排,当我讲到上面的观点时,他激动的叫了出来:“对了!说对了!哥们!”所有的听众都哄堂大笑起来,因为他们知道同样的事情也发生在Perl的发明者身上)。


  于是在同样精神指导下工程进行了几个星期,我开始不光从我的用户那儿也从听说我的系统的人那儿得到类似的赞扬,我把一些这种邮件收藏起来,我将在我开始怀疑自己的生命是否有价值时重新读读这些信。:)


  但是有两个更基本的,非政治性的对所有设计都有普遍意义的教益。


  12. 最重要和最有创新的解决方案常常来自于你认识到你对问题的概念是错误的。

  一个衡量fetchmail成功的有趣方式是工程的beta测试人员表(fegtchmail的朋友们)的长度,在创立它的时候已经有249个成员了,而且每个星期增加两到三个。


  实际上,当我在1997年5月校订它时,这张表开始因为一个有趣的原因而缩短了,有几个人请求我把他们从表中去掉,因为fetchmail已经工作的如此之好,他们不需要看到这些邮件了!也许这是一个成熟的市集风格工程的生命周期的一部分。

  我以前一直在解决错误的问题,把popclient当作MTA和具有许多本地递送模式的MDA的结合物,Fetchmail的设计需要从头考虑为一个纯的MTA,做为一个普通Internet邮件路径的一部分。


  当你在开发中碰了壁时(当你发现自己很难想通下一步时),那通常不是要问自己是否找到正确答案,而是要问是否问了正确问题,也许需要重新构造问题。


  于是,我重新构造了我的问题,很清楚,要做的正确的事是(1)把SMTP转发支持放在通用驱动程序中,(2)把它做为缺省模式,(3)最终分离所有其他的递送模式,尤其是递送到文件和标准输出的选项。


  我在第三步上犹豫了一下,担心会让popdiant的长期用户对新的递送方法感到烦心,在理论上,他们可以立即转而转发文件或者他们的非sendmail等价物来得到同样的效果,在实际中这种转换可能会很麻烦。
但是当我这么做之后,证明好处是巨大的,驱动程序代码的冗余的部分消失了,配置完全变得简单了——不用屈从于系统MDA和用户的邮箱,也不用为下层OS是否支持文件锁定而担心了。


  而且,丢失邮件的唯一漏洞也被堵死了,如果你选择了递送到一个文件而磁盘已满,你的邮件就会丢失,这在SMTP转发中不会发生,因为SMTP侦听器不会返回OK的,除非邮件可以递送成功或至少被缓冲留待以后递送。


  还有,性能也改善了(虽然在单次执行中你不会注意到),这个修改的另一个不可忽视的好处是手册变得大大简单了。


  后来,为了允许处理一些罕见的情况,包括动态SLIP,我必须回到让用户定义本地MDA递送上来,但是我发现了一个更加简单的方法。


  所有这些给了我们什么启发呢?如果可以不损失效率,就要毫不犹豫抛弃陈旧的特性,Antonine de Saint-Exupery(在他成为经典儿童书籍作家之前是一个飞行员和飞机设计师)曾说过:


  13. “最好的设计不是再也没有什么东西可以添加了,而是再也没有什么东西可以去掉。”


  当你的代码变得更好和更简单时,这就是你知道它是正确的时候了,而且在这个过程中,fetehmail的设计具有了自己的特点,而区别于其前身popclient。


  现在是改名的时候了,这个新的设计看起来比老popclient更象一个sendmail的复制品,它们都是MTA,但是Senmail是推然后递送,而新的popclient是拉然后递送。于是,在两个月之后,我把它重新命名为fetehmail。


七. Fetchmail成长起来


  现在我有了一个简洁和富有创意的设计,工作得很好的代码,因为我每天都用它,和一直在增长的beta表,它让我渐渐明白我已经不是在从事只能对少数其他人有用的工作中,我写了一个所有有一个Unix邮箱和SLIP/PPP邮件连接的人都真正需要的程序。


  通过SMTP转发功能,它成为一个潜在的“目录杀手”,远远领先于它的竞争者,这个程序如此能干以至于其他的程序不但被放弃简直被忘记了。


  我知道你不可以真得瞄准或计划出这样的结果,你只能努力去设计这些强大的思想,以后这些结果就好象是不可避免的、自然的、注定了的,得到这种思想的唯一办法是获取许多思想,或者用工程化的思考其他人的好主意而超过原来想到它的人的设想。


  Andrew Tanenbanm原来设想建造一个适合386的简单的Unix用做教学,Linus Torvalels把Andrew的可能想到的Minix可以做什么的概念推进了一步,成长为一个极好的东西,同样的(虽然规模较小),我接受了Card Harris和Harry Hochheiser的想法,把它们变得更强大,我们都不是人们所浪漫幻想的天才的创始人,但是大多数科学和工程和软件开发不是被天才的创始人完成的,这和流传的神话恰恰相反。


  结果总是执着的原因——实际上,它是每个黑客为之生存的成功!而且它们意味着我必须把自己的标准定高一点,为了把fetchmail变得和我所能设想的那样好,我必须不仅为我自己的需要写代码,而且也要包括对在我生活围主页外的人们的需求的支持,而且同时也要保证程序的简单和健壮。


  在实现它之后我首先写的最重要的特征是支持多投——从集中一组用户的邮件的邮箱中取出邮件,然后把它路由到每个人手中。


  我之所以加上多投功能部分是因为有些用户一直在闹着要它,更是因为我想它可以从单投的代码中揭露出错误来,让我完全一般地处理寻址,而且这被证明了。正确解释RFC822花了我相当长的时间,不仅因为它的每个单独部分都很难,而且因为它有一大堆相互依赖的苛刻的细节。


  但是多投寻址也成为一个极好的设计决策,由此我知道:


  14. 任何工具都应该能以预想的方式使用,但是一个伟大的工具提供你没料到的功能。


  Fetchmant多投功能的一个没有料到的用途是在SLIP/PPP的客户端提供邮件列表、别名扩展。这意味着一个使用个人机器的人不必持续访问ISP的别名文件就能通过一个ISP帐户管理一个邮件列表。我的beta测试员提出的另一个重要的改变是支持8位MIME操作,这很容易做,因为我已经仔细的保证了8位代码的清晰,不仅因为我预见到了这个特性的需求,而且因为我忠实于另一准则:


  15. 当写任何种类的网关型程序时,多费点力,尽量少干扰数据流,永远不要抛弃信息,除非接收方强迫这么作!


  如果我不遵从这个准则,那么8位MIME支持将会变得困难和笨拙,现在我所需要做的,是只读一下RFC 1652,在产生信头的逻辑加上一点而已。


  一些欧洲用户要求我加上一个选项来限制每次会话取得消息数(这样他们就可以从昂贵的电话网中控制花费了),我很长一段时间拒绝这样做,而且我仍然对它不很高兴,但是如果你是为了世界而写代码,你必须听取顾客的意见——这并不随他们不付给你钱而改变。


八. 从Fetchmail得来的另一些教益


  在他们回到一般的软件工程问题以前,还有几个从fetchmail得到的教益需要思考。


  rc文件语法包括可选的“noise”关键字,它被扫描器完全忽略了,当你把它们全抽取出的时候,关键字/值对更具可读性。


  当我注意到rc文件的声明在多大程度上开始象一个微型命令语言时,这是一个Late-night的体验(这也是我为什么把popclient原来的“server”关键字改成了“poll”)。


  对我来说似乎把这个微型命令语言变得更象英语可能会使它更容易使用。现在,虽然我对经过Emacs和HTML及许多数据库引擎所证实的“把它做成一个语言”的设计方式确信不疑,但是我并不是一个通常的“类英语”语法的狂热拥护者。


  传统程序员容易控制语法使它尽量精确和紧凑,完全没有冗余,这是计算机资源还很昂贵时遗留下的一种文化传统,所以扫描策略需要尽可能的廉价和简单,而具有50%冗余度的英语,看来好象是一个非常不合适的模型。


  这并不是我不用类英语语法的原因,我提到这一点是为了推翻它,在更廉价的时钟周期与核心的时代,简洁并没有走到尽头,今天对一个语言来说,对人更方便比对机器更廉价来的更加重要。


  然而,有几个原因提醒我们小心一点,一个是扫描策略的复杂度开销——你并不想把它变成一个巨大的错误来源和让用户困惑,另一个是试图使语言表面上的类似可以和传统语言一样令人困惑(你可以在许多4GL和商业数据库查询语言上看到这一点)。


  Fetchmail的控制语法避免了这些问题,因为语言的领域是极其有限的。它一点也不象一个一般性的语言,它很简单地描述的东西并不复杂,所以很少可能在英语的一个小子集与实际的控制语言之间发生混淆,我想这有一个更广泛的教益:


  16. 如果你的语言一点也不象是图灵完备的,严格的语法会有好处。


  另一个教益是关于安全的,一些fetchmail用户要求我修改软件把口令加密存贮在rc文件里,这样觑探者就不能看到它们了。


  我没有这样做,因为这实际上起不到任何保护作用,任何有权读取你的rc文件的人都可以以你的名义运行fetchmail——如果他们要破你的口令,它们可以从fetchmail的代码中找到制作解码器的方法。


  所以fetchmail口令的加密都会给那些不慎重思考的人一种安全的错觉,这里一般性的准则是:


  17. 一个安全系统只能和它的秘密一样安全,当心伪安全。


九. 集市风格的必要的先决条件


  本文的早期评审人员和测试人员坚持提出成功的市集模式开发的先决条件,包括工程领导人的资格问题和在把项目公开和开始建造一个协作开发人员的社团的时候代码的状态。


  相当清楚,不能以一个市集模式从头开发一个软件,我们可以以市集模式、测试、调试和改进,但是以市集模式从头开始一个项目将是非常困难的,Linus没有这样做,我也没有,初期的开发人员的社团应该有一此可以运行和测试的东西来玩。


  当你开始创建社团时,你需要演示的是一个诺言,你的程序不需要工作的很好,它可以很粗糙、很笨拙、不完整和缺少文档、它不能忽略的东西是要吸引哪些人卷入一个整洁的项目。


  Linux和fetchmail都是以一个吸引人的基本设计进入公共领域的,许多和我一样在思考市集模式的人已经正确的认为这是非常关键的,然后得出了一个结论,工程领导者的高度的设计直觉和聪颖是必不可少的。


  但是Linus是从Unix得到他的设计的,我最初是从先前的popmail得到启发的(虽然相对Linux而言,它最后改变巨大),所以市集风格的领导人/协调人需要有出众的设计才能,或者他可以利用别人的设计才能?


  我认为能够提出卓越的原始设计思想对协调人来说不是最关键的,但是对他/她来说绝对关键的是要能把从他人那里得到的好的设计重新组织起来。


  Linux和fetchmail项目都显示了这些证据,Linus(如同前面所说)并不是惊人的原始设计者,但他显示了发现好的设计并把它集成到Linux内核中的强大决窍。还有我也描述了怎样从别人那里得到了fetchmail中最强大的设计思想(SMTP转发)。


  本文的早期读者称赞我,说因为我做了许多关于原始设计的事,所以倾向于低估原始设计在市集项目中的价值,也许有些是对的吧,但是设计(而不是编码或调试)本来就是我最强的能力。


  变得聪明和软件设计的原始创作的问题是它会变成一个习惯,当需要保持事物健壮和简洁的时候,你却开始把事情变得漂亮但却复杂。我曾经犯过错误,使得一些项目因我而崩溃了,但我努力不让它发生在fetchmail身上。


  所以我相信fetchmail项目的成功部分是因为我抑制自己不要变得太聪明,这说明(至少)对市集模式而言原始设计并不是本质的,请考察一下Linux假设Linus Torvalds在开发时试图彻底革新操作系统设计,它还会象今天我们所拥有的内核那样稳定和成功吗?


  当然基本的设计和编码技巧还是必需的,但我希望每个严肃考虑发起一个市集计划的人都已至少具备这些能力,自由软件社团的内部市场对人们有某些微妙的压力,让他们不要发起自由不能搞定的开发,目前为止,这工作得仍然相当好。


  对市集项目来说,我认为还有另一种通常与软件开发无关的技能和设计能力同样重要——或者更加重要,市集项目的协调人或领导人必须有良好的人际和交流能力。


  这是很显然的,为了建造一个开发社团,你需要吸引人,你所做的东西要让他们感到有趣,而且要保持他们对他们正在做的工作感到有趣,而且要保持他们对他们正在做的工作感到高兴,技术方面对达成这些目标有一定帮助,但这远远不是全部,你的个人素质也有关系。


  并不是说Linus是一个好小伙子,让人们喜爱并乐于帮助他,也并不是说我是个积极外向的,喜欢扎堆儿工作,有出众的幽默感的人,对市集模式的工作而言,至少有一点吸引人的技巧是非常有帮助的。


十. 自由软件的社会学语境


    下述如实:最好的开发是从作者解决每天工作中的个人问题开始的,因为它对一大类用户来说是一个典型问题,所以它就推广开来了,这把我们带回到准则1,也许是用一个更有用的方式来描述:


  18. 要解决一个有趣的问题,请从发现让你感兴趣的问题开始。


  这是Carl Harris和原先的popclient的情形,也是我和fetchmail的情形,但这已在很长一段时间被大家知晓了,Linux和fetchmail的历史要求我们注意的有趣之处是下一个阶段——软件在一个庞大的活跃的用户和协作开发人员的社团中的进化。


  在《神秘的人月》一书中,Fred Brooks观察到程序员的工作时间是不可替代的:在一个误了工期的软件项目中增加开发人员只会让它拖得更久,他声称项目的复杂度和通讯开销以开发人员的平方增长,而工作成绩只是以线性增长,这个说法被称为“Brooks定律”,被普遍当作真理,但如果Brooks定律就是全部,那Linux就不可能成功。


  几年之后,Gerald Weinbeng的经典之作“The Psychology Of Computer Progromming”为我们更正了Brooks的看法,在他的“忘我(egoless)的编程”中,Weinberg观察到在开发人员不顽固保守自己的代码,鼓励其他人寻找错误和发展潜力的地方,软件的改进的速度会比其他地方有戏剧性的提高。


  Weinberg的用词可阻止了他的分析得到应有的接受,人们对把Internet黑客称为“忘我”的想法微笑,但是我想今天他的想法比以往任何时候都要引人注目。


  Unix的历史已经为我们准备好了我们正在从Linux学到的(和我在更小规模上模仿Linus的方法所验证的)东西,这就是,虽然编码仍是一个人干的活,真正伟大的工作来自于利用整个社团的注意和脑力,在一个封闭的项目中只利用他自己的脑力的人会落在知道怎样创建一个开放的、进化的,成百上千的人在其中查找错误和进行修改的环境的开发人员之后。


  但是Unix的传统中有几个因素阻止把这种方法推到极致。一个是各种授权的法律约束、商业机密和商业利益,另一个(事后来看)是Internet还不够好。


  在Internet变得便宜之前,有一些在地理上紧密的社团,它们的文化鼓励Weingberg的“忘我”编程,一个开发人员很容易吸引许多熟练的人和协作开发人员,贝尔实验室,MIT A1实验室,UC Berkeley,都成为传统的、今天仍然是革新的源泉。


  Linux是第一个有意识的成功的利用整个世界做为它的头脑库的项目,我不认为Linux的孕育和万维网的诞生相一致是一个巧合,而且Linux在1993-1994的一段ISP工业大发展和对Internet的兴趣爆炸式增长的时期中成长起来,Linus是第一个学会怎样利用Internet的新规的人。


  廉价的Internet对Linux模式的演化来说是一个必要条件,但它并不充分,另一个关键因素是领导风格的开发和一套协作的氛围使开发人员可以吸引协作开发人员和最大限度地利用媒体。


  但是这种领导风格与氛围到底是什么呢?它不能建立在权力关系之上——甚至如果它们可以,高压的领导权力不能产生我们所看到的结果,Weinberg引用了19世纪俄国的无政府主义者Kropotkin的“Memoris of a Revolutionist”来证明这个观点:


  “我从小生活在一个农奴主的家庭中,我有一个活跃的生活,象我们时代的所有年轻人一样,我深信命令、强制、责骂、惩罚等等的必要性。但是当我(在早期)必须管理一个企业,和(自由)人打交道时,当每一个错误都会产生严重后果时,我开始接受以命令和纪律为准则来行动和以普通理解为准则来行动的区别。前者在军事阅兵中工作的很好,但是它在现实生活中一文不值,目标达成只是靠许多愿望的聚合的简单后果。”“许多聚合在一起的愿望的直接后果”精确地指出了象Linux的项目所需要的东西。“命令的准则”在Internet这种无政府主义的天堂中一群自愿者之中是没有市场的,为了更有效的操作和竞争,想领导协作项目的黑客们必须学会怎样以Kropotkins含糊指出的“理解的准则”模式来恢复和激活社团的力量,他们必须学会使用Linus定律。


  前面我引用“Delhpi效应”来作为Linus定律的一个可能的解释,但是来自生物学和经常学的自适应系统的更强大的分析也提出了自己的解释,Linus世界的行为更象一个自由市场或生态系统,由一大群自私的个体组成,它们试图取得(自己)最大的实效,在这个过程中产生了比任何一种中央计划都细致和高效的自发的改进的结果,所以,这里就是寻找“理解的准则”的地方。


  Linux黑客取得的最大化的“实际利益”不是经典的经济利益,而是无形的他们的自我满足和在其他黑客中的声望,(有人会说他们的动机是“利他的”,但这忽略了这样的事实:利他主义本身是利他主义者的一种自我满足的形式),自愿的文化以这种方式工作的实际上并非不寻常,我已参与一个科幻迷团体很长时间了,它不象黑客团体一样,显式地识别出“egoboo”(一个人在其他爱好者之中的声望的增长)作为自愿者活动背后的基础驱动力)。


  Linus成功地把自己置于项目的守门人的位置,在项目中开发大部分是别人做的,他只是在项目中培养兴趣直到它可以自己发展下去,这为我们展示了对Kropokin的“共同理解原则”的敏锐把握,对Linux这种类似经济学的观点让我们看到这种理解是怎样应用的。


  我们可以把Linus的方法视为创建一个高效的关于“egoboo”(而不是钱)的市场,来把自私的黑客个体尽可能紧密的联系起来,达成只能通过高度协作才能得到的困难的结果,在fetchmail项目中我展示了(在较小规模上)这种模式可以复制,得到良好的结果,也许我比他更有意识一点、更加系统一点。


  许多人(尤其是哪些由于政治原因不信任自由市场的人)会盼望自我导向的自我主义者的文化破碎、报废、秘密和敌对,但这种盼望很明显地被Linux的文档的多样性、质量和深度打破了,程序员讨厌写文档似乎已是圣训,但Linux的黑客们怎么产生了这么多?显然Linux的egoboo自由市场比有大量资金的商业软件产品的文档部在产生有品德的、他人导向的行为方面工作的更好。


  Fetchmail和Linux内核项目都表明,通过恰当的表彰许多其他黑客,一个强大的开发者/协调者可以用Internet得到许多协同开发人员而不是让项目分崩离析为一片混乱,所以关于Brooks定律我得到了下面的想法:


  19. 如果开发协调人员有至少和Internet一样好的媒介,而且知道怎样不通过强迫来领导,许多头脑将不可避免地比一个好。


  我认为自由软件的将来将属于那些知道怎样玩Linus的游戏的人,把大教堂抛之脑后拥抱市集的人,这并不是说个人的观点与才气不再重要,而是,我认为自由软件的前沿将属于从个人观点和才气出发的人,然后通过共同兴趣自愿社团的高效建造来扩展。


  可能不只是自由软件的将来,在解决问题方面,没有任何商业性开发者可以与Linux社团的头脑库相匹敌,很少有人能负担起雇佣200多个为fetchmail出过力的人!


  也许最终自由软件文化将胜利,不是因为协作在道德上是正确的或软件“囤积居奇”在道德上是错的(假设你相信后者,Linus和我都不),而仅仅是因为商业世界在进化的军备竞赛中不能战胜自由软件社团,因为后者可以把更大更好的开发资源放在解决问题上。

**** 网友写给作者的感想: ****

你好,Eric:
我刚读了你的大教堂/市集的文章,因为你的主页指出你还要继续关于这个问题的思考,我提供一些个人的观察。 首先介绍一些背景:当1990年出现BSD Net/2的时候,Brad Grantham和我把它移植到了MacⅡ平台上,它在几个月之后以Mac BSD发布(当然是以市集风格),后来成为Net BSD/Mac。 我作为一个市集协调人学到了一些东西:


1. 人们很快地自愿提供帮助,但是常常很慢,我们收到上百封信说:“我很想帮助,请告诉我需要什么?” 这些人没提供什么帮助,不管他们有多么积极,真正有帮助的人那些给我们的第一封信便说:“嘿,我修改了这个,这儿有一个补丁。”最后我们忽略了所有第一种类型的邮件(只是把他们引向工作列表),培养与第二种人的关系,这种情况所有协调人都应知道,来克服看到这么多“志愿者”时的盲目高兴。
(注意:他们的动机是好的,他们只是没有认识到他们正在志愿做什么)。


2. 你已经提到了这一点,但我认为它是极端重要的:甚至在你宣布产品以前你必须有一个可工作的系统:例如,我们一直等到有了一个可引导的内核和一个单用户根shell之后才把它贴到Usenet,曾有过(据我所知)四个不同的Mac Linux项目,每一个都在Linux新闻组中有一大批拥护者,都创建了邮件列表,每个人都很热情,写了FAQ,还有许多诸如MacOS的图标应是什么样的讨论。所有这些项目没有发布一行代码或者一个内核、我挑选了MkLinux(Apple开发的)作为一个可工作的Mac版Linux(在一个项目中,MacLinux假设运转在68K Mac上,而邮件列表中所有的讨论都是关于怎样把它移植到Power Mac上。68K版本甚至不能远程工作!),这些项目吸引了上述的第一种“帮助者”,热情高涨但是实际上却没做什么事,杀掉一个项目最快的方法是在你什么都还没有之前就宣布它,我已经见的太多了,尤其是在Linux世界里。

我知道这两点看起来相当悲观,但我知道当我们想到“啊,我们做了这么多事了,肯定搞定了不少问题了吧!”的时候,我们太容易失去理智。而那实际上只不过是一些善良的动机罢了(谁说过:“不要把动机和行动混淆在一起?” 本·弗兰克林?)协调人需要解散所有那些诸如图标应该是什么样的、FAQ用HTML格式还是SGML模式的热情讨论,而把注意力放在取得产品的一个可工作的版本,一旦得到了,人们就真正开始帮助了。

(从正面来看,MacBSD极大地得益于从它的开发风格,我们得到了代码、设备驱动程序、钱和一些捐赠和借到的测试和开发的硬件设备)。
我期望看到对我上述观点的任何评论和你关于这个主题写的任何东西。


Lawrrance

[目录]


如何成为一名Hacker

Eric S. Raymond五部曲之How To Become A Hacker
如何成为一名黑客
Copyright ? 2001 by Eric S. Raymond

翻译:Barret

翻译水平有限,欢迎来信指教,我的Email是barret(a)ynmail.com, 但请勿问电脑技术问题(反正也不懂)。允许未经作者及译者的同意进行非商业目的的转载,但必须保持原文的完整性。


--------------------------------------------------------------------------------

内容一览
为什么会有这份文档?
什么是黑客?
黑客应有的态度
黑客的基本技能
黑客文化中的地位
黑客和书呆子(Nerd)的联系
风格的意义
其它资源
FAQ(常问问题解答)

--------------------------------------------------------------------------------

为什么会有这份文档?
作为 Jargon File 的编辑和 一些其他有名的类似性质文章的作者,我经常收到充满热情的网络新手的email提问(确实如此) “我如何才能成为一名出色的黑客?”非常奇怪的是似乎没有任何的FAQ或者Web形式的文档来说明这个 十分重要的问题,因此我写了一份。

如果你现在读的是这份文档的离线拷贝,那么请注意当前最新版本(英文版)在 http://www.tuxedo.org/~esr/faqs/hacker-howto.html可以得到。

注意:在这份文档最后有 FAQ(常问问题解答)。 请在向我提出任何关于这份文档的疑问之前读两遍。

目前这份文档有很多翻译版本: 保加利亚语, 简体中文, 繁体中文, 丹麦语, 荷兰语, 法语, 德语, 匈牙利语, 印尼语, 日语, 朝鲜语, 葡萄牙语, 俄语及 瑞典语。 注意由于这份文档时有修正,所以以上翻译版本可能有不同程度的过时。


--------------------------------------------------------------------------------

什么是黑客?
Jargon File 包含了一大堆关于“hacker”这个词的定义,大部分与技术高超和热衷解决问题 及超越极限有关。但如果你只想知道如何 成为 一名黑客, 那么只有两件事情确实相关。

这可以追溯到几十年前第一台分时小型电脑诞生, ARPAnet 实验也刚展开的 年代,那时有一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群。 这种文化的成员创造了 “hacker” 这个名词。黑客们建立了 Internet。 黑客们发明出了现在使用的 UNIX 操作系统。黑客们使 Usenet 运作起来, 黑客们让 WWW 运转起来。如果你是这个文化的一部分,如果你对这种文化有所贡献,而且 这个社群的其它成员也认识你并称你为 hacker, 那么你就是一位黑客。

黑客精神并不仅仅局限在软件的黑客文化中。 有人用黑客态度对待其它事情,如电子学和音乐—— 事实上,你可以在任何最高级别的科学和艺术活动中发现它。 精于软件的黑客赞赏这些在其他领域的同类并把他们也称作黑客—— 有人宣称黑客天性是绝对独立于他们工作的特定领域的。 但在这份文档中, 我们将注意力集中在软件黑客的技术和态度, 以及发明了“黑客”一词的以共享为特征的文化传统之上。

有一群人大声嚷嚷着自己是黑客,但他们不是。 他们(主要是正值青春的少年)是一些蓄意破坏计算机和电话系统的人。 真正的黑客把这些人叫做“骇客”(cracker),并不屑与之为伍。 多数真正的黑客认为骇客们又懒又不负责任,还没什么大本事。 专门以破坏别人安全为目的的行为并不能使你成为一名黑客, 正如 用铁丝偷开走汽车并不能使你成为一个汽车工程师。 不幸的是,很多记者和作家往往错把“骇客”当成黑客; 这种做法一直使真正的黑客感到恼火。

根本的区别是:黑客搞建设,骇客搞破坏。

如果你想成为一名黑客,请接着读下去。如果你想做一个骇客,去读 alt.2600 新闻组,并在意识到你并不像自己想象的那么聪明后去坐五到十次监狱。 关于骇客,我只想说这么多。


--------------------------------------------------------------------------------

黑客应有的态度
黑客们解决问题,建设事物,同时他们崇尚自由和无私的双向帮助。 要被他人承认是一名黑客,你的行为得体现出你好像具备了这种态度一般。 而要想做得好象你具备这种态度一般,你就得切切实实坚持它。

但是如果你认为培养黑客态度只是一条在黑客文化圈中得到承认的路子, 那就大错特错了。成为具备这些特质的这种人对 你自己非常重要——有助于你学习,及给你提供源源不断的动力。 同所有创造性的艺术一样,成为大师的最有效方法就是模仿大师的精神—— 不仅从智力上,也要从感情上进行模仿。

或许, 下面这首现代的禅诗很好的阐述了这个意思:

    To follow the path:(沿着这样一条道路:)
    look to the master,(寻找大师,)
    follow the master,(跟随大师,)
    walk with the master,(与大师通行,)
    see through the master,(洞察大师,)
    become the master.(成为大师。)

嗯,如果你想成为一名黑客,反复读下面的事情直至你相信它们:


--------------------------------------------------------------------------------

1. 世界充满了待解决的迷人问题。
做一名黑客会有很多乐趣,但却是要费很多气力方能得到的乐趣。 这些努力需要动力。成功的运动员从锻炼身体、超越自我极限的愉悦中得到动力。 同样,做黑客,你得能从解决问题,磨练技术及锻炼智力中得到基本的乐趣。

如果你还不是天生的这类人又想做黑客,你就要设法成为这样的人。 否则你会发现,你的黑客热情会被其他分心的事物吞噬掉——如金钱、性和社会上的虚名。

(同样你必须对你自己的学习能力建立信心——相信尽管当你对某问题近乎一无所知, 但只要你一点一点地试验、学习,最终会掌握并解决它。)


--------------------------------------------------------------------------------

2. 一个问题不应该被解决两次。
聪明的脑袋是宝贵的有限的资源。当世界还充满非常多有待解决的有趣的新问题时, 它们不应该被浪费在重新发明轮子这类事情上。

作为一名黑客,你必须相信其他黑客的思考时间是宝贵的——因此共享信息, 解决问题并发布结果给其他黑客几乎是一种道义,这样其他人就可以去解决 新问题而不是不断地忙于对付旧问题。

(你不必认为一定要把你 所有的发明创造公布出去, 但这样做的黑客是赢得大家极度尊敬的人。卖些钱来养家糊口,租房买计算机 甚至发大财和黑客价值观也是相容的,只要你别忘记你还是个黑客。)


--------------------------------------------------------------------------------

3. 无聊和乏味的工作是罪恶。
黑客(泛指具有创造力的人们)应该从来不会被愚蠢的重复性劳动所困扰, 因为当这种事情发生时就意味着他们没有在做只有他们才能做的事情—— 解决新问题。这样的浪费伤害每一个人。因此,无聊和乏味的工作不仅仅是 令人不舒服而已,而且是罪恶。

作为一个黑客,你必须坚信这点并尽可能多地将乏味的工作自动化, 不仅为你自己,也为了其他人(尤其是其他黑客们)。

(对此有一个明显的例外。黑客有时也做一些在他人看来是重复性或枯燥的工作 以进行“脑力休息”,或是为了获得某种技能,或是获得一些除此以外无法获得的 特别经验。但这是自愿的——有脑子的人不应该被迫做无聊的活儿。)


--------------------------------------------------------------------------------

4. 自由万岁。
黑客们是天生的反独裁主义者。 任何能向你发命令的人能够迫使你停止解决令你着迷的问题, 同时,按照独裁者的一般思路,他通常会给出一些极端愚昧的理由。 因此,不论何处,任何独裁主义的作法,只要它压迫你和其他黑客,你就要和它斗到底。

(这并非向所有权威挑战。儿童需要监护,罪犯要被看管起来。 如果服从命令得到某种东西比起用其他方式得到它更节约时间,黑客可以同意 接受某种形式的权威。但这是一个有限度的,有意的交易; 那种权威想要的个人服从不是你应该同意给予的。)

权威喜欢审查和保密。他们不信任自愿的合作和信息的共享—— 他们只喜欢由他们控制的所谓“合作”。因此,作为一个黑客, 你得对审查、保密,以及使用武力或欺骗去压迫有行为能力的人们的做法有一种本能的敌意。 同时你要有为此信念斗争的意愿。


--------------------------------------------------------------------------------

5. 态度不能替代能力。
作为一名黑客,你必须培养起这些态度。 但只具备这些态度并不能使你成为一名黑客,也不能使你成为一个运动健将和摇滚明星。 成为一名黑客需要智力,实践,奉献精神和辛苦工作。

因此,你必须学会怀疑,并尊重各种各样的能力。 黑客们不会为那些装模做样的人浪费时间,但他们却非常尊重能力—— 尤其是从事黑客工作的能力,不过任何能力总归是好的。 具备很少人能具备的那些方面的能力尤其好,其中具备 涉及脑力、技巧和专注方面能力的当然最好。

尊敬能力,你就会享受到提高自己能力的乐趣—— 辛苦的工作和奉献会变成一种高度娱乐而非苦差事。 要想成为一名黑客,这一点非常重要。


--------------------------------------------------------------------------------

黑客的基本技能
黑客态度重要,但技术更加重要。 态度无法替代技术,在你被别的黑客称为黑客之前,有一些基本的技术你必须掌握。

这些基本技术随着新技术的出现和老技术的过时也随时间在缓慢改变。 例如,过去内容包括使用机器语言编程,而直到最近才包括了HTML。 总的来说现在主要包括以下技术:


--------------------------------------------------------------------------------

1. 学习如何编程。
这当然是最基本的黑客技能。如果你还不会任何编程语言,我建议你从Python开始。 它设计清晰,文档齐全,合适初学者入门。 它是一门很好的入门语言,并且不仅仅只是个玩具; 它非常强大、灵活,也适合做大型项目。 我有一篇 Python评价详细说明这点。好的 教程 可以在Python网站得到。 (译者:比较好的中文Python站点可能是http://pythonrecord.51.net。)

Java也是好的入门语言。它比Python难得多,但是生成的代码速度也快得多。 它同时也是一种优秀的计算机语言,不止是用来入门。

但是注意,如果你只会一两门语言,你将不会达到黑客所要求的技术水平, 甚至也不能达到一个程序员的水平——你需要学会如何以抽象的方式思考编程问题, 独立于任何语言。要做一名真正的黑客,你需要学会在几天内通过一些手册, 结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种截然不同的语言。

如果要做一些重要的编程工作,你将不得不学习C语言,Unix的核心语言。 C++与C非常其他类似;如果你了解其中一种,学习另一种应该不难。 但这两种都不适合编程入门者学习。而且事实上,你越避免用C编程,你的工作效率会越高。

C非常有效率,节约你的机器资源。不幸的是,C的高效是通过你手动做很多底层的管理 (如内存)来达到的。底层代码都是复杂极易出现bug的,会使你花极多的时间调试。 如今的机器速度如此之快,这通常是得不偿失——比较明智的做法是使用一种运行较慢、较低 效率,但大幅节省你的时间的语言。因此,选择Python。

其他对黑客而言比较重要的语言包括 Perl和 LISP。 Perl实用,值得一学;它被广泛用于动态网页和系统管理, 因此即便你从不用Perl写程序,至少也应该学会看。许多人使用Perl的理由和 我建议你使用Python的理由一样,都是为了避免用C完成那些不需要C高效率的工作。 你会需要理解那些工作的代码的。

LISP值得学习的理由不同——最终掌握了它时你会得到丰富的启迪和经验。 这些经验会使你在以后的日子里成为一个更好的程序员,即使你实际上很少使用LISP本身。

当然,实际上你最好五种都会(Python,Java,C/C++,Perl和LISP)。 除了是最重要的黑客语言外,它们还代表了截然不同的编程思路和方法,每种都会让你受益非浅。

这里我无法给你完完全全的指导教会你如何编程——这是个复杂的技能。 但我可以告诉你,书本和上课也不能作到(最好的黑客中,有许多,也许 几乎都是自学成材的)。 你可以从书本上学到语言的特点——只是一些皮毛, 但要使书面知识成为自身技能只能通过实践和虚心向他人学习。 因此要作到 (一)读代码及(二)写代码。

学习如何编程就象学习用优美的自然语言写作一样。 最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,再读些,再写点…… 如此往复,直到你的文章达到你体会到的范文的简洁和力量。

过去找到适合阅读的好的代码是困难的,因为几乎没有大型程序的源代码能让新手练手。 这种状况已经戏剧性地发生变化;开放源代码软件,编程工具和操作系统(全都由黑客写成)现在已经 随处可见。让我们在下一个话题中继续讨论……


--------------------------------------------------------------------------------

2. 得到一个开放源代码的Unix并学会使用、运行它。
我假设你已经拥有或者能使用一台个人电脑(今天的孩子们真幸福 :-) )。新手们能够朝学习黑客技能迈出的最基本的一步就是得到 一份Linux或BSD-Unix的一种,安装在个人电脑上,并运行它。

没错,这世界上除了Unix还有其他操作系统。 但它们都是以二进制形式发布的——你无法读到它的源代码,也不可能修改它。 尝试在运行DOS或Windows或MacOS的机器上学习黑客技术,就象是带着脚镣学跳舞。

除此之外,Unix还是Internet的操作系统。 你可以学会上网却不知道Unix,但你不了解Unix就无法成为一名Internet黑客。 因此,今天的黑客文化在很大程度上是以Unix为中心的。(这点并不总是真的, 一些很早的黑客对此一直很不高兴,但Unix和Internet之间的联系已是如此之强, 甚至连Microsoft也无可奈何。)

所以, 安装一套UNIX——我个人喜爱LINUX但还有其他种类的 (是的,你可以同时安装Linux及DOS/Windows在同一电脑上)。 学习它,使用它,配置它。用它在Internet上冲浪。阅读它的源代码。修改它的源代码。 你会得到比在Microsoft操作系统上更好的编程工具(包括C,LISP,Python及Perl)。 你会觉得乐趣无穷,学到在你成为大师之前意识不到的更多的知识。

想知道更多关于学习Unix的信息,访问 The Loginataka。

想知道如何得到一份Linux,访问 我在哪里可以获得Linux。 (译者:对于中文读者来讲,最简单的方式未过于前往附近的D版/正版光盘店。)

你可以在 www.bsd.org找到BSD Unix的求助及其他资源。

我有写一篇关于 Unix和Internet基础的入门文章。

(注:如果你是一个新手,我不推荐自己独立安装Linux或者BSD。 安装Linux的话,寻求本地Linux用户组的帮助;或联系 Open Projects Network。 LISC维护着一些 IRC频道, 在那里你可以获得帮助。)


--------------------------------------------------------------------------------

3. 学会如何使用WWW和写HTML
黑客文化建造的大多东西都在你看不见的地方发挥着作用,帮助工厂、办公室和大学正常运转, 表面上很难看到它对非黑客的普通人的生活的影响。Web是一个大大的例外。 即便政客也同意,这个巨大耀眼的黑客玩具正在改变整个世界。 单是这个原因(还有许多其它的),你就需要学习掌握Web。

这并不是仅仅意味着如何使用浏览器(谁都会),而是要学会如何写HTML, Web的标记语言。如果你不会编程,写HTML会教你一些有助于学习的思考习惯。 因此,先完成一个主页。(网上有很多好的教程; 这是一个。)

但仅仅拥有一个主页不能使你成为一名黑客。 Web里充满了各种网页。大多数是毫无意义的,零信息量垃圾——界面时髦的垃圾, 注意,垃圾的水准都类似(更多信息访问 The HTML Hell Page)。

要想有价值,你的网页必须有内容—— 它必须有趣或对其它黑客有帮助。这是下一个话题所涉及的……


--------------------------------------------------------------------------------

4. 如果你不懂实用性的英语,学习吧。
作为一个美国人和一个以英语为母语的人,我以前很不情愿提到这点,免得成为 一种文化上的帝国主义。但相当多以其他语言为母语的人一直劝我指出这一点,那就是 英语是黑客文化和Internet的工作语言,你需要懂得以便在黑客社区顺利工作。

这一点千真万确。大概1991年的时候我就了解到许多黑客在技术讨论中使用英语,甚至当他们的母语都 相同,英语对他们而言只是第二语言的时候;据我知道的报导,当前英语有着比其他语言丰富得多的技术词汇, 因此是一个对于工作来说相当好的工具。 基于类似的原因,英文技术书籍的翻译通常不令人满意(如果有翻译的话)。

Linus Torvalds,一个芬兰人,用英语注释他的代码(很明显这对他来说不是凑巧)。 他流利的英语成为他能够管理全球范围的Linux开发人员社区的重要因素。 这是一个值得学习的例子。


--------------------------------------------------------------------------------

黑客文化中的地位
象大部分不涉及金钱的文化一样,黑客王国靠声誉运转。 你设法解决有趣的问题,但它们到底多有趣,你的解法有多好, 是要由那些和你具有同样技术水平的人或比你更厉害的人去评判的。

相应地,当你在玩黑客游戏时,你得认识到你的分数主要靠其他黑客对你的技术的评价给出 (这就是为什么只有在其它黑客称你为黑客时,你才算得上是一名黑客)。 这个事实常会被黑客是一项孤独的工作这一印象所减弱;也会被另一个黑客文化的禁忌所减弱 (现在逐渐减弱但仍强大):拒绝承认自我或外部评估与一个人的动力有关系。

特别地,黑客王国被人类学家们称为一种奉献文化。 在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西, 而是靠你的奉献。尤其是奉献你的时间,你的创造和你的技术成果。

要获得其他黑客的尊敬,基本上有五种事情你可以干:


--------------------------------------------------------------------------------

1. 写开放源代码软件
第一个(也是最集中的和传统的)是写些被其他黑客认为有趣或有用的程序, 并把程序源代码提供给整个黑客文化使用。

(过去我们称之为“free software (自由软件)”, 但这却使很多不知 free 的精确含义的人感到困惑。 现在我们很多人,根据搜索引擎网页内容分析至少有2:1的比率,使用“ open-source”software(开放源代码软件)这个词)。

黑客王国里最受尊敬的偶像是那些写了大型的、好用的、具有广泛用途的软件, 并把它们公布出去,使得每人都在使用他软件的人。


--------------------------------------------------------------------------------

2. 帮助测试并调试开放源代码软件
黑客也尊敬那些使用、测试开放源代码软件的人。 在这个并非完美的世界上,我们不可避免地要花大多数的开发时间在调试阶段。 这就是为什么任何有头脑的开放源代码的作者都会告诉你好的beta测试员 (知道如何清楚描述出错症状,很好地定位错误,能忍受快速发布中的bug, 并且愿意使用一些简单的诊断工具)象红宝石一样珍贵。 甚至他们中的一个能判断出哪个测试阶段是延长的, 哪个是令人精疲力尽的噩梦,哪个只是一个有益的小麻烦。

如果你是个新手,试着找一个你感兴趣的正在开发的程序,做一个好的beta测试员。 你会自然地从帮着测试,进步到帮着抓臭虫,到最后帮着改程序。 你会从中学到很多,并且与未来会帮你的人结下友谊。


--------------------------------------------------------------------------------

3. 公布有用的信息
另一个好事是收集整理有用有趣的信息做成网页或文档如FAQ列表,且让他们容易获得。

主要技术FAQ的维护者受到几乎同其他开放源代码的作者一样多的尊敬。


--------------------------------------------------------------------------------

4. 帮助维护基础设施的运转
黑客文化(还有Internet的工程方面的发展,就此而言)是靠自愿者运转的。 要使Internet能正常工作,就要有大量枯燥的工作不得不去完成——管理mail list,新闻组,维护大型软件库,开发RFC和其它技术标准等等。

做这类事情的人会得到很多尊敬,因为每人都知道这些事情是十分花时间又不象编程那样好玩。 做这些事情需要奉献精神。


--------------------------------------------------------------------------------

5. 为黑客文化本身服务
最后,你可以为这个文化本身做宣传(例如,象我这样,写一个“如何成为黑客”的正面的教程 :-) ) (译者:不知道Barret把它翻成中文算不算?)。 这并非一定要在你已经在这个圈子呆了很久,因以上四点中的某点而出名,有一定声誉后才能去做。

黑客文化没有领袖。精确地说,它确实有些文化英雄、部落长者、历史学家和发言人。 若你在这圈内呆的够长,你或许成为其中之一。 记住:黑客们不相信他们的部落长者的自夸的炫耀, 因此大举追求这种名誉是危险的。与其奋力追求,不如先摆正自己的位置 等它自己到你的手中——那时则要做到谦虚和优雅。


--------------------------------------------------------------------------------

黑客和书呆子(Nerd)的联系
同流行的迷思相反,做一名黑客并不一定要你是个书呆子。 但它确实有帮助,而且许多黑客事实上是书呆子。 做一个深居简出的人有助于你集中精力进行十分重要的事情,如思考和编程。

因此,很多黑客都愿意接受“书呆子”这个外号, 更有甚者使用更尖刻的“geek(怪人)”一词并引以为豪—— 这是一种宣布他们独立于主流社会的声明方式。访问 The Geek Page 参加更多的讨论。

如果你能集中足够的精力做好黑客工作同时还能有正常的生活,这很好。 现在作到这一点比我在1970年代是新手的时候要容易的多; 如今主流文化对技术怪人要友善的多。 甚至有越来越多的人意识到黑客通常是很好的恋人和配偶的材料。

如果你因为生活上不如意而迷上做黑客,那也没什么——至少你不会分神了。 或许以后你会找到自己的另一半。


--------------------------------------------------------------------------------

风格的意义
重申一下,作为一名黑客,你必须进入黑客精神之中。 当你不在计算机边上时,你仍然有很多对黑客工作有帮助的事情可做。 它们并不能替代真正的编程(没有什么能),但很多黑客都那么做, 并感到它们与黑客的本质存在某些基本的连系。


学会流畅地用母语写作。尽管程序员不能写好文章的错误看法相当普遍, 但是有令人惊讶数目的黑客(包括所有我知道的最棒的)都是不错的作家。

阅读科幻小说。参加科幻小说讨论会。(一个碰到黑客和未来会成为黑客的人的好方法)

学禅,并且/或者练功习武。(精神修炼看来是惊人相似。)

练就能分析音乐的听觉,学会鉴赏特别的音乐。学会玩某种乐器,或唱歌。

提高对双关语、文字游戏的鉴赏能力。

这些事情,你已经做的越多,你就越是天生做黑客的材料。 至于为什么偏偏是这些事情,原因并不完全清楚, 但它们都涉及用到左-右脑能力的综合,这似乎是关键所在 (黑客们既需要清晰的逻辑思维,有时又需要偏离逻辑跳出问题的表象)。

最后,还有一些不要去做的事情。


不要使用愚蠢的,哗众取宠的ID或昵称。

不要卷入Usenet(或其他地方的论坛)的骂战。

不要自称为“cyberpunk(网络叛客)”,也不要浪费时间和那些人打交道。

不要让你寄出的Email或张贴的帖子充满错误的拼写和乱七八糟的语法。

做以上的事情,只会招来嘲笑。黑客们个个记忆超群—— 你将需要数年的时间让他们忘记你犯下的错误。

网名的问题值得深思。将身份隐藏在虚假的名字后是骇客、解密者、d00dz 及其他低等生物幼稚愚蠢的行为特点。黑客不会做这些事; 他们对他们所作的感到骄傲,而且乐于人们将作品与他们的 真名相联系。 因此, 若你现在用假名,放弃它。在黑客文化里它会令你你失败的。


--------------------------------------------------------------------------------

其它资源
Peter Seebach 维护着一个非常好的 Hacker FAQ, 专给那些不懂如何与黑客打交道的经理看的。如果Peter的站点不能访问,下面这个 Excite搜索应该有一份拷贝。

我也著有 黑客文化简史。

我写了一份 大教堂与市集,对于Linux及开放源代码文化现象有详细的解释。 我也在这个话题上进一步阐述导致的结局—— 开拓智域。

Rick Moen写了一份很好的关于 如何运转一个Linux用户组的文档。

我和Rick Moen合作完成了另一份关于 提问的智慧的文章,可以让你事半功倍的获得帮助。

如果你想知道PC、UNIX及Internet基本概念和工作原理,参考 The Unix and Internet Fundamentals HOWTO。

当你释放出一个软件或为其打补丁,试着按 软件发行惯例 HOWTO去做。 (以上的提到的文章的中文版大多都可以在www.aka.org.cn和www.linuxforum.net找到。)


--------------------------------------------------------------------------------

FAQ(常问问题解答)
问:你能教我做黑客吗?
问:那么,我要如何开始?
问:我得什么时候开始学?现在会不会太迟了?
问:要学多久才能学会黑客道?
问:Visual Basic及Delphi是好的入门语言吗?
问:你能帮我“黑”掉一个站点吗?或者教我怎么黑它?
问:我怎么样才能得到别人帐号的密码?
问:我如何入侵/查看/监视别人的Email?
问:我如何才能在IRC聊天室里偷到频道op的特权?
问:我被黑了。你能帮我避免以后再被攻击吗?
问:我的Windows软件出现问题了。你能帮我吗?
问:我在哪里能找到可以与之交流的真正的黑客?
问:你能推荐一些有关黑客的好书吗?
问:成为一名黑客我需要擅长数学吗?
问:我该从那种语言学起?
问:我需要什么样的机器配置?
问:我得因此憎恨和反对Microsoft吗?
问:但开放源代码软件不会使程序员丢饭碗吗?
问:我要如何开始?哪里有免费的Unix?
问:你能教我做黑客吗?

答:自从第一次发布这份文档,我每周都会收到一些请求, (频繁的话一天几封)要我“教会他们做黑客”。遗憾的是,我 没有时间和精力来做这个;我自己的黑客项目,及我作为一个开放源代码倡导者 的四处奔波已经占用了我110%的时间。

即便我想教你,黑客也依然基本上是一项自行修炼的的态度和技术。 当真正的黑客想帮助你的时候,如果你乞求他们一汤匙一汤匙“喂”你的话, 你会发现他们不会尊重你。

先去学一些东西。显示你在尝试,你能靠自己去学习。然后再去向你遇到的黑客请教特殊的问题。

如果你发E-mail给一位黑客寻求他的帮助,这是两件首要记住的事情。 第一,写出来的文字显得懒且粗心的人通常非常懒于思考且非常马大哈,不能成为好黑客—— 因此注意拼写正确,使用正确的语法及发音,否则你可能会无人理睬。 第二,不要试图要求回复到一个ISP帐号,而那个帐号与你 的发信地址不同。这样做的人一般是使用盗用帐号,不会有人有兴趣为虎作伥帮助窃贼的。

问:那么,我要如何开始?

答:对你而言最佳的入门方式也许是去参加LUG(Linux用户组)的聚会。 你可以找到在 LDP的综合Linux信息页面上找到类似的组织;也许有一个在你家附近的, 而且非常有可能与一所大学或学校挂钩。如果你提出要求,LUG成员兴许会给你一套Linux, 当然此后会帮你安装并带你入门。

问:我得什么时候开始学?现在会不会太迟了?

答:你有动力学习的时候就是好时候。大多数人看来都是在15-20岁之间开始感兴趣的,但 据我所知,在此年龄段之外的例外也是有的。

问:要学多久才能学会黑客道?

答:这取决于你的聪明程度和努力程度。大多数人只要他们专注, 就能在18个月到2年之间学会一套令人尊敬的技能。但是,不要以为就此结束了; 如果你是一个真正的黑客,你要用你的余生来学习和完善你的技术。

问:Visual Basic及Delphi是好的入门语言吗?

答:不,因为他们不是可移植的。他们不是那些语言的开放源代码实现, 所以你被限制在厂商选择支持的那些平台里。接受这样一种垄断局面不是黑客的态度。

Visual Basic特别糟糕。它是Microsoft的私有语言这个事实就足够让它脸面全无, 不像其他的Basic,它是一种设计糟糕的语言会教给你坏的编程习惯。

其中一个坏习惯是会依赖于单一厂商的函数库、控件及开发工具。 一般而言,任何不能够支持至少Linux或者一种BSD,或其他第三方操作系统的语言,都是 一种不适合应付黑客工作的语言。

问:你能帮我“黑”掉一个站点吗?或者教我怎么黑它?

答:No。任何读完这份FAQ后还问这个问题的人,都是无可救药的蠢材, 即使有时间指教我也不会理睬。任何发给我的此类E-mail都会被忽略或被痛骂一顿。

问:我怎么样才能得到别人帐号的密码?

答:这是骇客行为。滚得远远的,白痴。

问:我如何入侵/查看/监视别人的Email?

答:这是骇客行为。在我面前消失,混蛋。

问:我如何才能在IRC聊天室里偷到频道op的特权?

答:这是骇客行为。去S吧,冥顽不灵的家伙。

问:我被黑了。你能帮我避免以后再被攻击吗?

答:不行。目前为止,每次问我这个问题的,都是一些运行Microsoft Windows的菜鸟。 不可能有效的保护Windows系统免受骇客攻击;太多缺陷的代码和架构使保护Windows的努力有如 隔靴搔痒。唯一可靠的预防来自转移到Linux或其他设计得至少足够安全的系统。

问:我的Windows软件出现问题了。你能帮我吗?

答:当然。进入DOS方式,然后键入“format c:”。你遇到的任何问题将会在几分钟之内消失。

问:我在哪里能找到可以与之交流的真正的黑客?

答:最佳办法是在你附近找一个Unix或Linux的用户组,参加他们的聚会。 (你可以在Metalab的LDP站点 找到一些指向用户组的链接。)

我过去曾说过不能在IRC上找到真正的黑客,但我发觉现在情况有所改变。 显然一些真正的黑客的社区像GIMP及Perl,也有IRC频道了。)

问:你能推荐一些有关黑客的好书吗?

答:我维护着一份Linux Reading List HOWTO,也许你会觉得有用。 Loginataka也很有意思。

关于Python的介绍,请访问在Python站点上的 入门资料。

问:成为一名黑客我需要擅长数学吗?

答:不用。黑客道很少使用常规的数学或算术,不过你绝对需要能逻辑性地思考和进行精密的推理。

尤其是你不会用到微积分或电路分析(我们把这些留给电子工程师们 :-))。 一些有限数学(包括布尔代数,集合论,组合数学,图论)的背景知识会有帮助。

问:我该从那种语言学起?

答:HTML——如果你还不懂的话。市面上有一大堆的封面精美,宣传得天花乱坠的 糟糕的 HTML书籍,不幸的是很少有好的。我最喜欢的是 HTML: The Definitive Guide。

但 HTML 不完全是一种编程语言。当你准备开始编程时,我推荐从 Python起步。 你会听到一大群人推荐 Perl,并且 Perl 依然比 Python 流行得多,但是 难学得多且(以我之见)设计得不是很好。

C 确实重要,但它要比 Python 或 Perl 难多了。不要尝试先学 C。

Windows用户不要满足于 Visual Basic。 它会教给你坏习惯,而且它不可以移植,只能在Windows下运行。避免它。

问:我需要什么样的机器配置?

答:过去个人电脑能力相当不够并且内存小,结果给黑客的学习过程设置 了人为的障碍。不过一段时间以前开始就不是这样了;任何配置比一台 Intel 486DX50 好的 机器都有足够的能力进行开发工作,X,及 Internet 通讯,同时你现在买的最小的磁盘 都大得富足了。(依Barret之见,现在要至少Pentium 166MMX才够。)

选择用来学习的机器时重要的一点是注意配件是否是Linux兼容的(或BSD兼容,如果你选择学 BSD)。同刚才提到的一样,大多数现在的机器都是符合的;唯一的值得注意的区域在于 modem和打印机;有些具备为Windows设计的配件的机器不会在Linux下工作。

关于硬件兼容性有一个FAQ;最新版本在 这里。

问:我得因此憎恨和反对Microsoft吗?

答:不,你不必如此。不是因为Microsoft不令人讨厌,而是因为黑客文化早在 Microsoft出现之前就存在了,且将在Microsoft成为历史后依然存在。 你耗费在憎恨Microsoft的任何力气不如花在爱你的技术上。写好的代码—— 那会相当有效地打击Microsoft又不会让你得到恶报应。

问:但开放源代码软件不会使程序员丢饭碗吗?

答:看起来不太可能——目前为止,开放源代码软件产业似乎创造了更多的就业机会而不是 减少就业机会。如果写一个程序比起不写来是纯经济收益的话,那么在写完后, 程序员应该得到报酬不管程序是否是开放源代码。 并且,无论写出多么“免费自由”的软件,都存在更多对新的,定制的软件的需求。 我有这方面更多的论述,放在开放源代码 网站资料中。

问:我要如何开始?哪里有免费的Unix?

答:在本份文档的某个地方我已经提到过何处可以得到最常用的免费Unix。 要做一名黑客,你需要自立自强,以及自学能力。现在开始吧……

[目录]


开拓智域

Eric S. Raymond五部曲之Homesteading the Noosphere
开拓智域
by Eric S. Raymond
April 1998


--------------------------------------------------------------------------------
在观察由开放原始码版权所定义的"官方"意识形态与真正玩家的行为後, 发现到一些矛盾之处.  重新检视真正掌控开放原始码拥有权的文化.  我们发现暗藏著一个源自於Locke的土地产权理论的现象. 我们将此与玩家文化跟`礼物文化'关联起来, 意即参与者透过投入时间, 精力, 及创造力所生产的礼物来竞争并获取名望. 接下来检视在文化中, 迁涉到对冲突解决的分析, 并发展一些常规.
--------------------------------------------------------------------------------

1. 矛盾的现象
2. 玩家意识形态的多样性
3. 杂乱的理论, 清教徒实践
4. 开放原始码及拥有权
5. Locke及土地头衔(12p)
6. 玩家文化即礼物经济
7. 驾御之乐无穷
8. 名望的多面性
9. 拥有权及名望诱因
10. 自我的问题
11. 人性的价值
12. 名望游戏模型对整体的密切关系
13. 智域特质及领土於动物行为学的影响
14. 冲突的起因
15. 计划结构及拥有权
16. 冲突与冲突解决
17. 薪传机制及与学界的关联
18. 结论: 由文化到文化规范
19. 对进一步研究的一些问题
20. 参考文件, 附注, 及感谢(不翻译)

[目录]


矛盾的现象

1. 矛盾的现象

任何人观察忙碌, 巨大生产力的网际网路开放原始码软件世界一阵子, 一定都会注意到一个很有趣的矛盾, 开放原始码玩家们, 所说及所做之间的矛盾 -- 即开放原始码官方的意识形态及其实际的实践.
文化是善於应变的机器. 开放原始码文化是对应到一系统可指认出的驱力及压力. 一如往常, 文化对环境的适应力显示出清析的意识形态, 及隐含地, 潜意识或半意识的意识形态. 而, 并非不寻常地, 半意识的适应力扮演与清析的意识形态同样重要的地位.

在本文, 我们将深掘此一矛盾的根, 并用来发掘这些驱力及压力. 我们将演绎一些关於玩家文化习俗的有趣的事.  并透过建议一些方式, 以升华这一玩家文化的知识层次.


[目录]


玩家意识形态的多样性

2.玩家意识形态的多样性

网际网路开放原始码文化的意识形态(玩家们说他们所相信的)本身是相当复杂的话题. 所有成员都同意开放原始码(也就是, 软件可以免费散播及能够毫无困难地演化及修改成适合自己所需)是件好事, 并值得投入大量群体的力量. 这样的一致很有效地定义了文化的成员资格.  不过, 有许多理由值得我们考量, 尤其是许多个体及次文化信念的多样化.

一种是狂热; 一种不论开放原始码开发仅仅是个到达终点的便利工具(好的工具, 有趣的玩具, 及有意思的游戏)或者本身就是终点的热情.

狂热之辈会说``自由自由软件是我的生命! 我生命的意义在於生产有用, 优美程式及资讯资源, 然後送给人家.'' 中等热诚者会说``开放原始码是好东西, 我愿意花下大量时间协助''. 低度热诚之流则会说``对, 开放原码有时还可以. 我玩弄它, 并且尊重建造它的人们''.

另一种是对商业软件或企图统治商业软件市场的企业的敌意.

非常反对商业的人会说``商业软件是偷窃及聚财. 我写自由软件来结束这个恶魔.'' 中等反商业的人会说``商业软件一般还好啦.  程式设计师需要有收入, 但是那些推行劣质产品并且胡搞一通的则是恶魔'' 不反商业的人会说``商业软件还好啦.  我用或写开放原始码软件是因为我比较喜欢它''.

这样的态度组合表现出九种开放原始码次文化. 值得将这分别指出的原因是它们暗示著不同的议题, 及不同的适应, 及合作的行为.

从历史上来看, 最引人注目及最有组织的玩家文化是非常狂热及非常反商业的. 由Richard M. Stallman(RMS)所设立的自由软件基金会, 自1980年代早期, 大力支持著开放原始码的发展, 包含了像Emacs及GCC到目前为止, 在网际网路开放原始码世界依然是最基本的, 而且看来依然会在未来继续下去.

许多年来, FSF是唯一最重要的开放原始码的焦点, 产生大量至今依然对该文化非常重要的工具. FSF同时也是对外界来说, 唯一对玩家文化的赞助者.  他们有效地定义该辞`free software', 慎重地定义其重要性(新一点的 ` open source' 则慎重地避免一些误解).

因此, 内内外外对玩家文化的认知都倾向指出该文化是FSF的热情态度及反商业目标(RMS自己否认他是反商业的, 但他的程式是被许多人这样的解读, 包含他许多的口头游击战). FSF的强力而明显的口号``赶走软件聚财员外!''变成玩家意识形态的中心, 而RMS是最接近玩家文化的领导者的地位.

FSF的版权条文, ``一般大众版权'' (GPL), 表达了FSF的态度. 它被开放原始码界广泛地使用. 北卡的Sunsite是Linux界最大及最知名的软件库. 在1997七月, 大约一半的Sunsite软件套件都是用GPL做版权声明.

但FSF并不是游戏中的唯一成员. 还有一些比较安静的, 比较不那麽激烈, 而且在玩家文化中, 对市场比较友善. 实用主义者比较不像早期FSF那样的传统上的意识形态. 这些传统包含了, 更重要的, 纠缠著UNIX技术文化及前商业的网际网路.

典型的实用主义者态度是适度地反商业, 而其主要对商业的抱怨并非"聚宝库". 而是该世界对较好的技术UNIX, 开放标准及开放原始码软件的顽强拒用. 如果实用主义者痛恨任何东西, 那大概不是"聚宝", 而是在软件市场的龙头; 过去是IBM, 现在Microsoft.

对实用主义者来说, GPL的重要性是个工具而非终点目标. 它主要的价值不是用来对付`聚宝', 而是用来鼓励分享软件及成长市集模式发展团体. 实用主义者以拥有好工具及玩具来衡量价值, 而非不喜欢商业, 并且会使用高品质商业软件而不会有意识形态上的不舒适.  同时, 其开放原始码经验已经教导他技术品质的标准, 很少会有封闭软件能够达到.

许多年来, 实用主义者的观点在玩家文化中, 常顽固地透过拒绝完全使用GPL版权及FSF章程的方式来表达. 从1980年代到1990年代早期, 这样的态度倾向与Berkeley Unix的风迷有关, BSD版权的使用者, 及早期以BSD原始码为基础来建立开放原始码UNIXes的付出. 这些付出, 无法建立起大规模的市集团体, 因而变得片断及无效率.

一直到Linux在1993-1994年间开始爆发, 实用主义者找到了很有力的基础. 虽然Linus Torvalds从未反对过RMS, 他设下了商业Linux工业成长的良好典范, 透过保证商业用途软件上的高品质, 及轻微地嘲弄清教徒及狂热文化中的元素.

Linux快速成长的副作用引介了许多新的玩家进入, 而Linux是他们主要的兴趣, FSF的信念则是历史的兴趣.  虽然新一波的Linux玩家会描述Linux为``GNU一代的选择'', 大部份会仿效Torvalds而不是Stallman.

许多的反商业清教徒都发现他们自己处於少数地位. 在Netscape於1998年二月宣布要公开其Navigator 5.0原始码之前, 许许多多的事情都已经改变了. 这激起商业世界对`自由软件'的更大兴趣. 其後果是唤起玩家文化探索空前的机会及重贴其产品标签, 由`自由软件'成为`开放原始码', 以符合大众参与的认证许可.

在一个增援开发中, 文化中的实用主义者在1990年代有许多个中心. 其它半独立的团体及其半意识及有魔力的领导者开始由UNIX/Internet的根发芽. 在这些当中, 在Linux之後, 最重要的是Larry Wall带领的Perl文化. 比较小, 但依然很重要, 的是由John Osterhout创建的Tcl及Guido Van Rossum的Python语言. 所有这三个团体都透过发布其非GPL版权方案来表达其意识形态.

--------------------------------------------------------------------------------

[目录]


杂乱的理论, 清教徒实践

3. 杂乱的理论, 清教徒实践

然而, 在历经了所有的这些改变, 依然存在广泛的舆论在什麽是`自由软件'或`开放原码'. 对共同理论的最清楚的表述可在各式开放原始码版权中找到, 都有一些重要的共同元素.
在1997年, 这些共同元素被结合到Debian Free Software Guidelines, 後来变成开放原始码定义. 在开放原始码定义的指导下, 一份开放原始码版权必须要保护无条件的由任何人或团体来修改开放原始码软件的权利.

因此, 与OSD相关的理论(及OSD-conformant版权, 诸如GPL, BSD, 及Perl's Artistic License)就是任何人可以玩弄任何东西. 没有人可以防止一大票人来玩弄任何开放原始码产品(诸如, 以Free Software Foundations的gcc C compiler), 复制原始码, 将它们朝各种不同的方向演化, 但都可以宣称依然是该产品.

但在实际上, 这样的`分歧'几乎没有发生过. 大计划分歧的状况很少, 而且几乎都是由重新贴个标签及大规模的自我正当化来完成. 很清楚的, 在GNU Emacs/XEmacs分支, 或gcc/egcs分支, 或各式各样的BSD分支群, 这些分歧者都感觉到他们是在对抗一个相当巨大力量的社会规范.

事实上(与anyone-can-hack-anything的大众理论相矛盾之处)开放原始码文化有个很复杂但大体自我正当化的拥有权习俗. 这些习俗规范了谁能修改软件, 这些状况决定了谁能够修改,  谁有权力再发行修改过的版本到团体中.

这些文化的禁条明确地规范基准. 因此, 我们在此摘要一些重要的部份会对未来有点用处.

对计划分歧来说, 社会的压力很大. 除非实在是非这样做不可, 透过大众的自我审判.
发行一个未经原创者同意对计划的改变是受到阻止的, 除非在特殊状况下, 诸如一些一般的修正码.
将一个人的名字从计划历史, 或维护者中抹去是绝对不可行的, 除非当事者同意.
在本文, 我们将细细检验这些禁条及拥有权习俗. 我们将探索它们是如何运作的, 并且揭露在其内中的社会动力及开放原始码团体的诱因结构.

[目录]


开放原码及拥有权

4. 开放原码及拥有权

当产权可无限复制时, `拥有权'的意义为何, 或者延申来说, 整个文化不具有强制高压力量关系或稀有物质经济?
事实上, 在开放原始码文化的例子中这是个很容易回答的问题. 软件计划的拥有者是那些拥有独有权力, 被大规模团体认定, 可再发行修改过的版本.

(在讨论`拥有权'这一节中, 我使用单数, 因为所有计划都是由某个个体所拥有. 有时候, 应该要了解有些计划是由一群人所拥有的. 我们会在本文後段检验这样族群的内部的动力.)

根据标准的开放原始码版权, 所有参与者在演化游戏中都平等. 但在实际上, 大众对`正式'版, 即由大众认可的维护者所整合并认可的版本, 及支援厂商的`游离'修补版, 有很明显的差别待遇. 游离修补版是不寻常的, 而且一般都不受信任 [RP].

大众发行版是基础的是很容易了解的. 习俗鼓励个人需要时可以进行对软件的修补. 习俗对那些再将修改版发行的人或发展团队的待遇是不同的. 当修改版在开放原始码团体中被发行时, 用以与原有版本来竞争, 拥有权就变成是个问题.

一般来说有三种方法来看一个开放原始码计划的拥有权. 第一种, 最明显的, 是计划的创建者. 当计划只有一个维护者/创建者, 而创建者还在活动时, 习俗不允许质疑谁是计划的拥有者.

第二个方式是计划的拥有权是由上一个拥有者所转移过来的(有时可称为`转交指挥棒'). 在这个团体中, 一般认可, 计划拥有者不再感兴趣或无能再进行维护的时候, 会将责任交给下一个继任者.

在大计划中这就很重要, 控制权的转移往往伴随著华丽的吟咏. 对大多数开放原始码团体中, 大家所不知道的, 它实际影响著拥有者对继承者的选择, 习俗明白说明正统嫡系的重要性.

对小一点的计划, 在历史记录上记录一下计划拥有者的改变即可. 如果前一位拥有者并非志愿的转移控制权, 他可以在一段时间内在团体透过向大众公开来取回控制权.

第三种获取计划拥有权的方式是观察该计划需要工作, 而拥有者却失去兴趣或消失了. 如果您希望做这件事, 您需要去找到拥有者. 如果您找不到, 那麽可以在相关的地方宣告(像在该领域的新闻讨论网)该计划似乎变成孤儿, 而您正在考虑负起责任来认养.

习俗要求您在您宣告您是新的拥有者之前, 要等待一段时间. 在这段时间内, 如果有人宣告他们已经在这方面开始工作, 那麽他们的宣告胜过您的. 多让大众知道您对这方面的兴趣是很好的方式. 最好是你在许多相关的讨论区中宣告(相关新闻讨论网, mailing lists); 而如果您有耐心等待回应. 一般, 您制造越多的注意, 让上一个拥有者或其它的宣告者来反应, 当没有人反应时, 您的宣告会更有效.

如果您已经通过在计划使用者中这样的过程, 而没有人异议, 那麽您可以宣告该孤儿计划的拥有权, 并且在历史档中记下一笔. 不过, 这比正式交棒来的不安全, 您并不被视为嫡系, 除非您在使用者族群中做了许多的改善以後.

我已经观察了这样的习俗二十年了, 可以回朔到前FSF的古早开放原始码软件历史中. 他们有许多非常有趣的特色. 最有趣的事,  大多数的玩家都不需要人家告知便知道要这样做. 的确, 以上所述是第一次完整写下的摘要.

值得一提的事, 潜意识的习俗, 实在是令人惊人的协调. 我已经不夸张地观察到数百个开放原始码计划的演化, 而我还可以用手指来算出这些违反传统的例子.

第三个有趣的特色是这些传统在时间下的演化, 他们在协调的方向下如此运作. 这样的方向鼓舞更多的大众责任, 大众注意, 及更关心於现有拥有者保留原有拥有人的成就及历史记录.

这些特色建议了这些习俗并非意外发生的, 而是某种暗示性的条文, 或是开放原始码文化中的生产形式, 在运作中这些是完全基本的条件.

早先一位回响者指出, 相对於网际网路玩家文化的骇客/海盗文化(``warez d00dz''主要集中於破解游戏及海盗BBS)也有类同的两种生产形式. 我们将会在文中稍後回到d00dz的比较.


[目录]


Locke及土地头衔

5. Locke及土地头衔
要将整个一般的型态了解, 历史上, 在玩家之外, 有些类同的传统, 与玩家的习俗是相同的. 一些历史或政治哲学的学生或者会认出, 这个产权的理论暗示著与英美一般惯例法理论中的土地产权相同的观念!
在这个理论中, 有三种方法来确认土地的拥有权.

在边疆, 领土可以存在而没有拥有者, 一个人可以透过开垦来获取拥有权, 在未有人拥有土地时, 混以血汗, 架起栏干, 并且抵御个人的名衔.

一般转移土地的方法是头衔转移, 也就是从上一位拥有者的手中收到契据. 在这个理论中, `头衔传承'观念是很重要的. 拥有权理想证据是整个契据传承及转移可用於追朔土地在最早期被开垦时的规模.

最後, 一般法理论了解到土地头衔可能会遗失或被抛弃(例如, 如果拥有者死去而无继承者, 或者要建立头衔传承的文件遗失了). 无主的土地可透过adverse possession的方式所认领 -- 透过迁入, 改善它, 并为其抵御, 就由如是开垦它一般.

这个理论, 正如玩家习俗一般, 会在中央权威薄弱或不存在的背景下有机地演化. 它在挪威及日耳曼部族演化了数千年. 因为它被早期英国政治哲学家John Locke理性而系统化, 有时它被称为`Locke'产权理论.

类似逻辑的理论倾向在高度经济或生存价值, 而没有任何权威有足够的力量来强制分配稀有物品. 在以打猎聚货的文化中, 大家认为没有产权观念的想法下, 这一点甚至也有. 例如, 在Kalahari沙漠的!Kung San布西曼族, 并没有猎地的拥有权. 但水洞或泉却有类同於Locke的产权存在.

!Kung San的范例是具有教育性的, 因为它显示了Locke产权习俗适用的时机 - 当从该资源所能获取的回报大过於需要抵御的代价时. 猎地并非产权, 因为打猎所能获得的回报很难预测而可变的, 而且并非每日生存的必须品. 水洞, 另一方面来说, 对生存来说非常重要, 并且小到足够抵御.

在本文标题中, `智域'(`noosphere')是所有思想的领土, 所有可能想法的空间[N]. 我们在玩家拥有权习俗中看见了Locke产权理论在智域次集合 - 所有程式的空间 - 上的暗示. 即此`开拓智域', 正如所有新的开放原始码计划的建立者所做的事一般.

Fare Rideau <rideau@ens.fr> 正确地指出玩家们并不是在单纯的思想领土中运作. 他断定玩家们所拥有的是程式计划 -- 有目标地专注在物质劳力上(发展, 服务, 等等), 而与名望, 信赖度等等连上关系. 他因此断定由玩家计划所延展的空间, 并非智域, 而是一种双重的智域性质, 由智域计划拓展的空间. (有位天体物理学家在此同意, 在词语学上, 正确地可称这个重复的空间为`ergosphere'或`工作的领域'.)

在实际上, 智域及工域的分别在本文目地中并不重要. 在纯净的思想中, `智域'要存在实在也很难; 大概要有柏拉图式的哲学家才会相信了. 而将智域及工域分开, 也只有在某人希望断定想法(智域的元素)不能被拥有, 但如计划之类的可以被拥有的时候, 才会有实际作用. 这个问题导致一个智慧财产权理论的问题, 远远超过本文探讨的范围.

为了避免困惑, 要注意到智域或工域跟整个虚拟的电子媒体被称为`cyberspace'(大部份玩家伪装的地方)是绝不相同的. 产权规范法则在此是完全不同於物质阶层的 -- 基本上, 拥有媒体或机器属於`cyberspace'便拥有`cyberspace'的一部份.

Locke的结构强烈建议开放原始码玩家观察这些所为的习俗以持有对付出的代价所得的回报.  这些回报必然要比开拓计划所付出的更重要 - 花在维护`头衔传承'的版本历史上的代价, 花在引起大众注意的时间代价, 及等待领养孤儿计划的时间上.

再者, 由开放原始码所获得的`成果'必然是远超过简单的使用软件, 是一些会被分歧所连累或稀释的其它东西. 如果就是使用软件这麽简单, 应该不会有对分歧的禁条存在, 而开放原始码拥有权不会像土地产权一样的类同. 事实上, 这样的世界确实(即使用为唯一成果)在现有开放原始码版权中存在.

我们可以现在就将一些可能的成果候选者扫除. 因为您不能够强制网路连线, 找寻在那里的存在的力量. 同样地, 开放原始码文化不能构有任何像钱或内部稀有经济的类同品, 因此玩家不能够追求与物质富裕相关的任何事物.

在开放原始码活动中, 有个方法可以协助人们变得更富裕. 偶而, 某人在玩家文化中所获得的名望可在现实生活中获得经济上的重大好处. 它可以使您获的更好的职业收入, 或者顾问合约, 或者书约.

这样的副作用对大多数玩家来说是很少见的; 这可独立做为一个解释, 既使我们经常见到玩家们抗议说, 他们所为是出发於理想或爱, 而不是为了钱.

不论如何, 调停这样的经济副作用很值得加以检验. 以下我们会看到了解在开放原始码文化自身的名望动力, 很可以自我解释.

[目录]


玩家文化即礼物经济

6. 玩家文化即礼物经济
要了解名望在开放原始码文化中的角色, 我们需要从历史移到进一步的人类学及经济, 并检验交换文化及礼物文化之间的不同.
人类对社会地位的竞争有天生的驱动力; 它与我们的演化史息息相关. 在农业发展之前, 90%的历史, 我们的祖先生活在游牧打猎的生活形态中. 地位高个体获取较建康的伴侣并取用最好的食物. 这个透过地位来表达自我的驱力表现在多方面, 大致上是由於生存货物的缺乏所致.

大部份方式中, 人类采行组织的方式来获取稀有货品及所需. 每种方式都有其获取社会地位的方式.

最简单的是命令阶层. 在命令阶层中, 稀有品的分配是由中心权威来完成, 并以武力做为後盾.  命令阶层所达程度很有限[Mal]; 他们在组织成长时变得越来越兽性而无效率. 基於这个理由, 在大家族中的命令阶层往往在不同大型经济形态中变成寄生虫.  在命令阶层中, 社会地位主要是透过取得高压力量来达到.

占我们社会主导地位的是交换经济. 这是对稀有品的复杂采用形式, 不像命令阶层模式, 它成就很高. 稀有品的分配是透过分散的交易及志愿合作(事实上, 竞争野心是产生合作行为的主要效应). 在交换经济中, 社会地位主要是透过控制用以交易的东西来决定(不一定需要是物质的).

大多数人在精神上都有受到以上两种模式的影响, 并决定如何与他人互动. 政府, 军队, 及组织罪犯(举例而言)皆为在我们称为"自由市场"的广泛交换经济下的命令阶层寄生虫. 不过, 其实还有第三种模式, 在根本上完全与两者不同, 而且除了人类学家以外, 一般人并不知晓; 即礼物文化.

礼物文化不是因为稀有而采用而是丰富才采用. 它们是在没有物质稀有问题, 而生存必须品丰富的族群中掘起. 我们可以观察到礼物文化在气候温和及食物丰足的原始生态系中发展. 我们可以看见他们是在我们社会阶层中的确定地位, 特别是那些商业中富裕的族群.

丰富使得命令关系结构变得很难维系, 而交换关系则变程式无意义的游戏. 在礼物文化中, 社会地位不是由您能控制多少而决定, 而是由您给出多少来决定.

因此这是瓜基乌图酋长的冬季赠礼舞会. 这是百万富翁精心的大众慈善行为. 这是玩家长时间付出的生产高品质开放原始码.

透过这样的检验, 开放原始码玩家社会很明显地是个礼物文化. 在其中, 没有严重的`生存必须品'的短缺 -- 硬碟空间, 网路频宽, 电脑速度. 软件是免费地分享的. 这样的丰富产生一种状况, 即唯一的竞争是同跻间的名望.

不过, 这样的观察并不足以完全解释整个玩家文化的特性. cracker d00dz也有相同於礼物文化的特质, 但他们的行为是大不相同的. 其族群文化的智力在玩家中算是很强及独有的. 他们聚集秘密, 而非分享; 一个人需要投靠某个cracker组织来获取破解的软件, 而非取得如何破解的技巧.

(译注: 很多人认为Hacker及Cracker之间没有明显的界线. 但实际上, 这是错误的观点. Hacker及Cracker不但可以很容易的分开, 而且可以分出第三群 - "海盗"Internet Pirate出来, 一般大众认定的"破坏份子", 事实上是这第三种. Hacker及Cracker都有明确的定义, 要发表有关Hacker及Cracker之间的评议之前, 最好要详细调查一番, 否则招惹这两群技术高明的族群都不是好受的事. 比较容易判断的方式, "Hacker从来不自称Hacker; Cracker会自称Cracker; 自称Hacker的不是Hacker; 自称Cracker的不见得是Cracker; 被确认为Hacker称为Hacker的, 是Hacker; 而Richard M. Stallman是Hacker圣者;" 相信大家应该可以看出来, 为何大众对Hacker及Cracker会有错误观点的由来, Pirate利用这样的漏洞来污染整个玩家文化在大众的观点. )

在此所展示的, 看来不是很明显, 是礼物文化运作方式不只是一种. 历史及价值是很重要的. 我已经将整个玩家文化做了大体的摘要[HH]; 现有行为状态并非神秘的. 玩家透过选择他们竞争的形式来定义他们的文化. 而本文的接下来的部份将会检验这些形式.


[目录]


驾御之乐无穷

7. 驾御之乐无穷
在做这个`名望游戏'分析的同时, 顺便说一下, 我并非有意诋毁或忽略单纯的设计美妙软件并使其工作的艺术上的满足. 我们都经历过这样的满足并爱上它. 这些重大动机, 对那些并非是那麽执著的人们来说, 从一开始就不会成为玩家, 正如不爱音乐的人不会成为作曲家一样.
因此, 我们应该要考虑到另一种玩家行为模式, 即以技艺为单纯的主要动机. 这个`技艺'模式应可解释玩家传统在技艺的机会上及结果的品质上的最大效果. 这是否建议与`名望游戏'模式相冲突或不同的结果呢?

(译注: 在电脑科学中, 有个很大的争议, 即"软件设计是艺术"及"软件设计是工业"的争执. 最著名的"软件艺术家"可说是Knuth这位大师. 我们在此所见到的, 便是"软件艺术". "软件工业"在电脑科学上, 可由软件工程来代表.)

不见得. 在检视`技艺'模式中, 我们回到同样的问题上, 玩家圈子运作像礼物文化. 如果品质没有尺度来衡量, 要如何将品质最佳化呢? 如果稀有品经济不运作, 除了同跻评估外有什麽度量呢? 这显示出任何技艺文化最终要架构在名望游戏中 -- 而事实上, 我们观察到正是这个动力, 在中世纪同业公会中, 推动许多历史上的技艺文化.

从一个重要的观点来看, `技艺'模式比起`礼物文化'来得弱; 其自身, 并没有帮助我们解释在本文开始所说的矛盾.

最後, `技艺'动机本身可能如我们所假设的, 在心理上不会离名望游戏太远. 想想看您美妙的程式被锁在抽屉中, 而不再被使用. 现在想像它被许多人很满意的有效使用. 那一个梦想比较满足您呢?

不过, 我们将会注意这个技匠模式. 它直觉地揭露了许多玩家, 并相当完美地解释了许多的个体的行为.

在我发表了本文的第一个版本後, 许多匿名的回响者建议: ``您没办法用获取名望的动机来工作, 不过名望是当您把工作做好, 而获取的真实回报.'' 这是个微妙而重要的观点. 名望诱因可继续运作, 不论工匠是否关心到它们; 因此, 最终, 不管玩家是否了解其自身的行为是名望游戏的一部份, 他的行为都会被这个游戏所修饰.


[目录]


名望的多面性

8. 名望的多面性
在每个礼物文化中, 有许多理由表明同跻名望是值得付出的:
第一, 最明显的, 同跻之间的好名望是基本的回报. 我们是为此而活, 这是个我们在前面已触及的革命性动力. (许多人试著将驱策他们的动力, 由名望换成其它升华的形式, 而与同跻之间没有明显的关连, 诸如``荣耀'', ``建全伦理'', ``信仰''等等.; 这些并没有改变其中的机制.)

其次, 名望是(在单纯的礼物经济中, 是唯一的方法)吸引注意力及与他人合作的好办法. 如果一个人有雅量, 智慧, 公平处置, 领导能力, 及其它的好品德, 这将会非常有力地说服其他人来一起共同合作.

第三, 如果您的礼物经济与交换经济或命令结构纠缠关联, 您的名望将会溢满并使您获得更高的地位.

在这些一般理由之外, 玩家文化独特的状况造成名望比"真实世界"礼物文化更有价值.

主要的`特例'是某人送出的手工艺品(或者, 换另一种方式来解译, 是明显地看得出是一个人下足精力及时间所制的礼物)是非常复杂的. 其价值很明显地跟物质礼物或交换经济金钱完全不同的. 要客观地区别出好礼物及坏礼物是更加困难的. 所以, 赠与者企图的成功是微妙地由同跻间的风评来决定.

另一种特质是相对纯正的开放原始码文化.  大部份礼物文化是由这些元素所组成的 -- 由交换经济关系, 诸如交换奢侈品, 或是由命令经济关系, 诸如家族或部落族群. 在开放原始码文化中, 并没有类同的方式存在; 因而, 除了透过争取同跻名望之外别无它法.

[目录]


拥有权及名望诱因

9. 拥有权及名望诱因
我们现在准备将之前的分析放在一起, 成为一个连续而完整的玩家拥有权传统. 我们了解到这是由进驻智域而来的; 它是在玩家礼物文化中的同辈名望, 及其所附带的副作用.
由此这样的了解, 我们可以分析Locke在玩家圈子的产权习俗, 是一种名望诱因的最大化; 这可确保同跻名望可由该获得的人取得, 而不会漏到其它地方去.

我们以上所观察到的三个禁条, 在这个分析下, 就很有点道理了. 在某些状况下, 有些人胡搞, 有些人的名望会遭到不公平的处理; 这些禁条(及相关习俗)试图避免以下这些发生.

分歧计划是不好的, 因为它将过去的贡献者置於牺牲名望的危险中, 而他们只好在分歧後, 继续在两个案子中都活动. (一般来说这会变得很混乱而且难以实践.)
发行一个游离修补版会使拥有者受到不公平的名望危机. 就算正式版是完美的, 拥有者也会被这些游离版中的臭虫发出的高射炮射中(但请见 [RP]).
偷偷摸摸地将某人的名字将计划中移除, 在文化条文中, 是大恶不赦的事. 他偷取受害者的礼物并且变成小偷的礼物.
这三项禁条的违反者伤害整个开放原始码团体及受害者本身. 这还迁连他们会伤害到整个团体, 导致降低潜在贡献者对礼物/产品会收到回报感受的可能性.
很重要的对其他两个禁条有其它可能的解释.

第一, 玩家会对分歧计划表示厌恶, 并且悲叹重复的工作, 在未来, 需要在所有几个子计划中付出代价.  他们也会观察到分歧会将共同开发者团体分开, 导致两个子计划有较少於原有计划的智群在工作.

有位回响者指出, 在分歧的工作中, 很少有见到能够有多於一个分歧能够存活, 并且在长期享有`市场占有率'. 这加强了所有参与者参与的诱因, 互相合作并避免分歧, 因为很难事先知道, 谁将会站在输的一边, 而看到他们辛苦的工作不是整个消失就是逐渐漠落.

不喜欢游离修补通常可被解释为造成错误追踪的复杂度增高, 而且会造成维护者增加他们的工作量, 而他们自己通常就已经有很多自己需要做的事了.

这些解释都可以考虑为正确的, 而他们确实在Locke逻辑下的拥有权理论下行得通. 但同时理性吸引力, 他们无法解释为何当这些偶而发生的违反禁条事件, 会导致如此在情绪及领土上的反感 -- 不只是在受伤的一方, 而且旁观者及观察者也会反应严厉. 冷血地关心工作量及维护量的重复并不足以解释这些观察者的行为.

对於第三个禁条. 除了名望游戏的分析以外很难解释. 事实上这项禁条很少被分析为``它不公平''的结论, 则揭露的其本身的问题, 而我们会在下一节看到.


[目录]


自我的问题

10. 自我的问题
在本文的一开始, 我提到了文化的潜意识适应知识通常是起源於其意识形态. 一个很大的事实范例即Locke的拥有权传统被广泛地使用, 虽然事实上, 它们违反标准版权所陈述的条文.
我在与玩家们讨论到名望游戏的分析时, 观察到另一个有趣现象的范例. 即许多玩家拒绝这个分析, 并且强烈反对承认他们的行为是起源於渴望同跻名望的动机, 或者我在此不太精确地标为, `自我满足'.

这展现了玩家文化有趣的一面. 很清悉的大家都不信任并鄙视自我中心及自我出发的动机; 自我奖励被残酷的批评, 既使该团体事实上对此可获取许多有利之处. 很大一部份, 事实上, 该文化的`大大'及部族长者被要求要谦逊并幽默地自我贬低, 以便维护自己的地位.  这样的态度几乎使自尊呼之欲出用以编织解释整个诱因结构.

在大体下, 可以确认的, 这一般起源於欧裔美国人对`自我'的负面态度. 整个玩家圈子都告诉自己, 渴望自我满足是很坏的动机(至少是不成熟的); 自我只是对追求女性时的可容忍的怪僻, 而且通常被认为是个精神病状. 只有在升华的形式或伪装的形式如``同跻名望'', ``自尊'', ``内行气派''或``成就的自豪''才是可被接受的.

我可以写一整篇论文来讨论这个文化传承中的不良部份的根,  我们可以发见,  相信我们有真正的`无私'动机(违背心理学及行为的证据),  将会造成自我迷惘的巨大伤害. 或者我可以, 如果Friedrich Wilhelm Nietzsche及Ayn Rand没有已经将整个解构`利他主义'成为许多不同的个别兴趣的工作完成.

我并非在此做道德哲学或是心理学, 因此我在此仅观察一个以认为自我是邪恶的观点所造成的一些伤害, 就是: 它在情绪上造成许多玩家很难以清析地了解自己文化的社会动力!

但我们并没有在此线调查中完成. 在玩家文化中对於自我出发的行为的禁忌是如此的深,玩家要怀疑是否该采用其它的可行方式. 当然了这样的禁条在其它礼物文化中并没有这麽强, 像剧场或巨富之间的同跻名望!


[目录]


人性的价值

11. 人性的价值
在建立了名望是玩家文化回馈机制的中心之後, 我们现在需要了解为何它看来如此的重要, 然而确依然是半隐密地并且不受承认.
对比的是海盗文化的指令式. 在那个文化, 追求地位的行为是露骨的甚或炫耀的. 这些crackers追求宣称释放"zero-day warez" (在原版软件释放的当天破解该软件并再发行)但却对如何做到的闭口不提. 这些魔术师并不喜欢把密技公开. 因此, 这导致了cracker文化的知识库在整体上进步缓慢.

(译注: 社会大众及Eric S. Raymond对骇客文化有所误解, 在整体知识库的发展上, 骇客文化透过结帮来进化, 因此骇客文化有点像帮派文化. 其整体知识库的发展上, 步调并不慢.)

在玩家团体中, 对比来说, 一个人的工作代表一个人的表达方式. 这是非常严格的英才制度(最好的工匠胜利)而且有很强的意识, 即品质会说话. 最大的吹牛就是程式``能跑'', 而任何有能力的程式设计师会看到的是好东西. 因此, 玩家文化的知识库增加快速.

对抗自大驱使的装模作样的禁条导致增加生产力. 但那是个次级效应; 在此受到保护的是该团体同跻评估系统的资讯品质. 即, 自吹自擂或自我放大是被镇压的, 因为在创造及合作的行为者中, 它就像杂音一样搞乱实验室中的美妙.

玩家文化传播礼物的媒介是无形的, 其通讯频道很难表现情绪的细微差别, 而面对面的成员接触是唯一的例外. 这使得该文化比其它礼物文化对杂音有更低的容忍力, 而需要花不少时间来解释大众谦逊需要部族长者.

谈吐谦逊对一个有志成为成功计划维护者的人也是有用; 他必须要使该团体相信他有很好的判断能力, 因为一个维护者的大部份工作是判断其他人的工作. 谁愿意贡献给那些无法判断其工作品质的人呢, 或者谁愿意贡献给那些会吞食计划成果的人呢? 潜在的贡献者希望计划领导者有足够的谦逊及品味, 当客观时机到来时, 有能力说, ``对, 这比我的版本工作来得好, 我会用它'' -- 并且将成就让该收到的人收取.

另一个在开放原始码世界需要谦逊行为的理由, 您很少希望给大众认为计划已经`完成'的映象. 这可能会导致潜在的贡献者觉得不须要贡献. 要将您的工作成效最大化, 需要对您程式的状态谦逊. 如果您吹牛自己的程式, 然後说``没什麽价值, 它对x, y, 及z无效, 因此它并不好'', 然後很快的自己偷偷补上x, y, 及z.

最後, 我自己亲眼见到有些玩家领导者自鄙的行为反映了害怕成为崇拜的教首. Linus Torvalds及Larry Wall两者的行为都很明显地想要避免成为这样的对象. 有一次跟Larry Wall一起吃晚餐, 我开玩笑``您是在场的头号玩家 -- 您选餐厅''. 他畏缩了. 这样做是对的; 无法分辨他们领导的分享价值会搞砸一个很好的团体, 这是个他及Linus都无法忽略的一点. 另一方面来说, 大部份玩家喜欢有Larry的问题, 如果他们有办法自我承认这一点.


[目录]


名望游戏模型对整体的密切关系

12. 名望游戏模型对整体的密切关系
名望游戏的分析有些不是很明显的其它关连. 许多都是从建立一个成功的计划可获得比与现有计划合作获得更大的名望而来. 一个计划如果有许多创新, 也会获得许多的名望, 相反於`me, too'的对现有计划的持续改善. 另一方面来说, 只有作者了解的软件或是需要非入门者的, 在名望游戏中, 通常贡献一个现有计划比自己建立一个来得受人注目. 最後, 要与现有成功的计划相竞争比填补一个空缺的壁灶来的困难的多.
因此, 有个与邻居的最佳距离(类同计划间的竞争). 太接近就会有其中一个产品会变成``me, too!''的有线价值, 一个贫乏的礼物(其中一个可能最好放弃). 离得太远, 没有人有能力使用, 了解, 或察觉到另一位的付出的关系(同样, 贫乏的礼物). 这产生一个在进驻智域中的型态, 如拓荒者散播在实体边疆上 -- 并非散乱的, 但很像是散乱的碎形波. 计划倾向开始於在边疆的范围填补空缺.

有些非常成功的计划变成`目录杀手'; 没有人愿意再去与那些已经建立起来的计划竞争, 因为对玩家来说实在太难. 大家最多是发现自己所须, 而在这些成功的计划中, 新增附加功能. 典型的`目录杀手'范例是GNU Emacs; 由1980年代开始, 它的多样化功能就已经填补整个程式设计编辑器的目录生态系, 没有人再去试图写一个新的出来. 因而, 人们只写Emacs modes.

整体来说, 这两种倾向(缝隙填补及目录杀手)在时序上的发展可用来预测未来的倾向. 在1970年代, 大部份开放原始码都是玩具或范例. 在1980年代, 则是在开发工具及网际网路工具.  在1990年代, 这项行动移向作业系统. 在每个案例中, 当前一个问题接近被处理掉时, 一个新而更加复杂的问题层次被开始攻下.

这种倾向在不远的未来有点有趣的关连. 在1998早期, Linux看来很像是`开放原始码作业系统'目录的杀手 -- 所有为其它竞争的作业系统, 现在都已经开始为Linux device drivers及extensions写作. 而大部份这个文化所想要的开放原始码的低阶的工具都已经存在了. 还有什麽吗?

应用软件. 当2000年接近, 看来预测开放原始码发展的能力会逐步迈向最後的处女地带 - 为非技术人员所设计的程式 - 是不过份的. 稍早的指标是GIMP的发展, Photoshop-like的影像处理软件, 这是个开放原始码第一个主要对end-user-friendly GUI的界面软件, 并可被考虑为在过去十年中足勘与商业软件相比的应用软件. 另一种则为流言四传的应用软件工具KDE及GNOME.

最後, 名望游戏分析解释了屡次引用的格言, 即您无法用自称玩家来变成玩家 -- 当其它玩家称您为玩家时, 您才是玩家. `玩家', 以这种观点来考量, 是某人显示出了(透过贡献礼物)他或她有技术能力及了解名望游戏的运作.  这样的评断大半是一种知觉及传承, 并且只有身在文化中之辈才会意会.

[目录]


智域特质及领土於动物行为学的影响

13. 智域特质及领土於动物行为学的影响
了解产权习俗的结果会帮助我们从另一个角度来看它; 即动物行为学, 特别是领土动物行为学.
产权是一种动物领土观念的抽象化, 是演化来用以降低同物种之间暴力发生. 透过划出界线, 并尊重其他的界线, 一苹狼如果与其它发生战斗, 可能会导致它受伤或致死, 并降低生存繁演的机会.

类同的, 在人类社会中的产权功能是避免人际间的冲突, 透过设立疆域清楚地分别合平的行为及侵略的行为. 有时大家喜欢将人类产权看成是个抽象的社会传统, 但这完全是错的. 任何人有苹狗就会知道, 当狗对陌生人接近时的吠叫, 是一种介於动物领土及人类产权之间的连续性. 我们本地的狼兄地就本能地比许多人类政治理论家知道的更清楚.

宣告领土(就像制造领土)是个表示实现愿望的行为, 一种表示在什麽样的界线下将会防御. 社会支持产权宣告是一种减少阻力及促进合作的行为. 这些比栏杆或狗吠更抽象的``宣告产权''依然是有效的, 甚至既使它只是在README档案中简单的描述计划维护者的名字, 也是有效的. 它依然是个抽象的领土, 而且(就像其它的产权形式)我们本能式的产权模式是由领土演化而用来解决冲突解决.

这个动物行为学分析, 第一眼看来很抽象, 很难以跟真正玩家的行为关连起来. 但它有一些重要的结果.  其中之一解释了全球资讯网的大众化, 特别是解释了为何开放原始码计划有个公开网站看来会比没有网站的来得重要.

客观地想, 这看来很难解释. 与原来在原创及维护上所付出的力量来说, 一个网页很简单, 因此很难想像一篇网页是个重要或非凡的付出.

网站的本身功能并不足以解释一切. 网页的通讯功能可以混合FTP站, mailing list, 及Usenet. 事实上一个计划的平日通讯很少是完全透过网站来通讯的, 反而mailing list或newsgroup更重要. 那麽, 为什麽公开网站会变成是计划的中心呢?

`home page'这个隐喻提供了一个重要的线索. 当在建立开放原始码计划时, 它是个在智域中宣告领土的行为(而传统也认知为此), 它在心理层次上并非十足强制的. 毕竟, 软件并没有位置的本质, 而且可以立即复制的. 它在我们本能的`领土'及`产权'记号上是可同化的, 不过, 要在付出一点代价後.

一个计划的网页表现了抽象的进驻可能的计划领域空间, 透过全球资讯网表达其王国的`本土'领域. 从智域降到`cyberspace'并没有让我们通过真实世界的栏干及狗吠, 但它确实保障我们宣告产权的力量, 并使我们对领土更加感到安全. 而这也是有网页的计划看起来更加地`真实'.

这个动物行为学的分析, 也鼓励我们更加详细的检验, 在开放原始码文化中, 这个处理冲突的机制. 他带领我们预期, 除了将名望诱因最大化以外, 拥有权传统将会在避免冲突及解决冲突上扮演一个角色.


[目录]


冲突的起因

14. 冲突的起因
在开放原始码软件的冲突大致有以下主要议题:
由谁来做下计划的决策?
由谁来接受荣耀或谴责, 承受什麽样的?
要如何减低负担, 特别是在复杂的错误追踪中避免劣质版本?
技术上来说, 什麽是正确的事?
如果我们看看``什麽是正确的事''议题第二眼, 它将应该要消失掉.  对任何这样的问题, 要看是否有个客观的方式来让大家都接受. 如果有, 那游戏结束大夥都赢. 如果没有, 那麽就变成``谁来决定?''.
所以, 这三个问题的冲突解决理论将可解决一个计划的三大问题: (A) 决定设计时的闲扯要何时而止, (B) 要如何决定那些贡献者接受荣耀及如何授与, 及 (C) 如何保持一个团队不会变成多重分歧.

拥有权的角色在解决(A)及(C)的问题上是很清楚的. 惯例确保计划拥有者可做下决策. 我们在以前曾见过, 惯例会对分歧者施加压力并稀释其拥有权价值.

注意这些惯例是合理的, 甚至对某些不关心名望游戏的人来说都很有帮助.  我们可从检验纯正的"工匠"模型的玩家文化来看出. 在此观点下, 这些惯例很少与稀释名望诱因有关, 而比较保护工匠在选择眼光上的权益.

技匠模型并不足以解释关於(B)的玩家惯例, 谁做了什麽而接受什麽荣耀(因为对一个纯正的工匠来说, 并不关心名望游戏, 因此没有其它动机可循). 要分析这一点, 我们需要将Locke理论带到另一个新高点, 并检验冲突及运作的权力在计画中及计划之间.


[目录]


计划结构及拥有权

15. 计划结构及拥有权
一般的个案来说是一个计划有一个单一个拥有者/维护者. 在这种状况下没有可能会有冲突. 拥有者可做下所有的决定, 拥有所有的益处, 及受到所有的谴责. 唯一会冲突的问题可能是继承者 -- 当旧的拥有者失去兴趣或不见了, 由谁来当新的拥有者. 该团体亦对避免分歧很感兴趣. 这些兴趣都由文化规范所表达, 即当一个拥有者/维护者对该计划不再有兴趣, 应该公开地将名衔交给下一位.
非一般的最简单的例子, 是许多位共同维护者在一位`仁慈的独裁者'下工作. 在共同计划中习惯於这个模式; 我们在大计划像Linux kernel或Emacs中看到, 及解决``由谁来决定''的问题, 这看起来不会比其它的方式来得糟糕.

典型来说, 一个仁慈的独裁者组织由一个拥有者-维护者组织, 建立者吸引贡献者演化而来. 即使拥有者依然在位, 它也有计划部份的功劳由谁来获取的争执存在.

在这种状况下, 习俗有义务由拥有者/独裁者来公平地处理贡献者的贡献(例如透过在README或历史档中提及). 在Locke的产权模型术语来说, 这意味透过贡献一个计划来获取部份的名望(正面或负面的).

追朔这个逻辑, 我们见到`仁慈的领导者'并非真正拥有整个计划. 虽然他有权力做下决策, 他事实上是透过交易名望来交换其他人的工作. 这类比就像佃农耕种, 是很难抗拒的, 除了有时候当某个贡献者不再活动, 他的名字依然继续获得好处.

一个仁慈的独裁者计划加上许多参与者, 他们倾向於发展出两族贡献者; 一般贡献者及共同发展者. 一个典型的途径, 变成共同开发者, 可获得计划较大部份的责任. 另一种是以`lord high fixer'的角色, 专长在修正许多臭虫. 以这种方式或其它种类的, 共同开发者在整个计划中, 是那些以透过投资时间并有重大贡献的贡献者.

次系统拥有者角色在我们的分析中特别重要并且要求更进一步的检验. 玩家喜欢说`权威要负责'. 接受维护责任的共同作者可获得一个次系统的掌控权及所有相关部份的计划, 只受到计划领导者的修正(可说是建筑师). 我们观察到这项法则有效地圈起Locke模型的计划产权, 并且同样地有其它产权界线避免冲突的效用.

传统上, `独裁者'或计划中的领导者及共同作者, 是预期要与共同作者在关键决定上做协商. 特别是该决定与共同作者所拥有的次系统有关(也就是说, 有投资时间并负责任). 一个有智慧的领导者, 认识出计划内部产权界线的作用, 是不会轻率地影响或反转由次系统拥有者的决定.

有些很大的计划完全不吃`仁慈的独裁者'这一套. 一个方法是转共同作者成为投票委员(像Apache). 另一种为轮换独裁者, 即控制权由一位成员轮换到另一位资深成员(为Perl组织所采用).

这样复杂的安排通常被考虑为不太稳定及复杂. 很明显地这些困难的认知, 为这些委员及设计者本身所了解; 这些问题是玩家文化中, 大家清悉地了解的.  不论如何, 我认为有些玩家对委员会或轮换独裁者组织心中不舒服, 因为它与过去Locke模型的思考大不相同. 在这些复杂的组织中, 不论是做拥有权或是名望回报的计算是有问题的. 很难看出其内部界线在那里, 除非高度的协调及信任, 否则很难避免冲突.

--------------------------------------------------------------------------------

[目录]


冲突与冲突解决

16. 冲突与冲突解决
我们曾经见过在计划中, 角色复杂度的增加是由设计权威及部份产权的分布来表现. 这是个有效的方式来分散诱因, 同时也稀释了计划领导者的权威性 -- 更重要地, 它稀释了领导对潜在冲突镇压的权威性.
当设计上的技术争执看来会导致互相残杀的冲突时,  它们很少是起因於吵架的. 这些通常都是由个别的领域的权威来负责解决.

另一种解决冲突的方式是"资深" -- 如果两个贡献者或贡献群有所争执, 而争执无法客观地解决, 并且都不拥有该争执的领域, 曾经为这个计划付出较多的一方胜利(即在计划中, 拥有较多产权的一方胜利).

这些法则通常都足以解决大部份计划的争议. 当这些不生效时, 计划领导者的命令通常可解决. 争议在通过这两关之後还存在的很罕见.

冲突除非在两个关键上都指向不同的方向的时候("当权者要负责"及"长者胜利")是不会变得严重的, 而计划领导者的权威是很微弱或不发生作用的. 这种状况最明显地是在继承权争执时, 而领导者不在时. 我曾见过这样的战斗一次. 非常地丑陋, 痛苦, 折磨, 只有当所有参与者都变得精疲力竭时, 将它交给外人来处理, 我锺心地期望不要再看见任何这一类的争执.

最终, 当所有冲突解决机制, 在所有玩家社团中都失效时. 唯一剩下的机制只剩吵架及躲避 -- 对那些拒绝合作, 破坏传统的人们的公众审判.


[目录]


薪传机制及与学界的关联

17. 薪传机制及与学界的关联
在这篇文章的先前版本曾提出一个研究问题: 这个团体究竟是如何告知并指导成员符合习俗?  这些习俗是否是在半知觉状态下, 不言自明的或自我组织起来的?  是否是由范例所导引的?  是否由明白的教条所授?
由教条所授明显的很罕见, 因为至今为止只有少数几条该文化的规范曾经有人提出过..

大部份的规范都是由范例所导引的. 用个很简单的例子, 在所有软件发行中的规范中, 应该都会有个README或READ.ME档案, 用以说明这个软件的简略说明. 这个传统至少从1980年早期就已经建立起来了, 但至今尚未有人将本条写下. 这是由观察许多软件发行而来的.

另一方面, 有些玩家习俗是自我组织起来的, 尤其是一旦有其中的份子了解到这个基本的(或者不自觉地)名望游戏. 大部份玩家不需要被传授以我在第三节所列的三个禁忌, 或者可说这些是不言自明的. 这个现象导出更进一步的分析 -- 而我们可能可以在探讨玩家在探索该文化智库的过程中找到解释.

大部份文化透过暗示(更精确一点`神秘', 透过宗教式或神秘性的方法)做为薪传机制. 这些秘密对外来者是不揭露的, 但可预期到可被热诚的新手所发现或理解. 要被内部所接受, 他需要展示他对该文化的神秘的了解及学习程度, 以接受认可.

玩家文化对此是不凡地警觉, 并且大量使用这些暗示及测试. 我们可在至少三种层次的过程运作中找到:

犹如密码式的神秘. 拿个例子, 在USENET新闻讨论群中有个alt.sysadmin.recovery有个很明显的秘密; 您不可能在不知道之前就提出问题, 而知道该秘密您才会被准许进入. 其中的老手对揭露这个秘密有很严格的禁忌.
对特定技术秘密的基本要求. 一个人必须要在送出礼物之前先吸收大量的技术知识(例如, 必须要至少了解一种主要的电脑语言). 这个隐藏线索由大处至小节都有作用, 犹如做为品质过滤(诸如抽象思考力, 坚持, 及精神力量)的功能用以发挥该文化的力量.
神秘社会内容. 要与该文化迁连上关系必须要参加特定计划. 每个计划都是活生生的玩家社会文化范例, 即贡献者必须要调查并了解该团体的社会及技术以便能有效参与. (具体来说, 一般的方式是透过阅读该计划的网页或邮件) 透过这些计划团体, 新手体验到有经验的老玩家的社会行为.
在透过探索这些秘密的过程中, 这位未来的玩家学到丰富的知识, 而使得这些禁条及其它习俗不言自明.
有些人可能会偶然议论玩家礼物文化结构是其中心秘密. 一个人在掏心吐胆的展现其对名望游戏及其暗藏的习俗, 禁忌及使用的了解之前, 是不被考虑为受传承的. 但这不重要; 所有文化都对其未来的参与者有这样的要求. 更进一步地说, 玩家文化表明对其参与者没有野心 -- 或者, 至少, 没有人因为我揭露这些而来跟我吵架!

有大量的人对本文回应指出玩家拥有权习俗看来十分接近(而且很可能直接源於)学术界的业务, 特别是科学研究团体. 研究团体有很类似的问题, 特别是在开采潜在可能的思考领域, 及展现非常类似的对问题可行的解决途径上, 使用同跻检视及名望.

既然许多玩家曾经在学界打滚过(通常都是在大学时学会玩电脑), 在了解过玩家文化後, 将玩家文化与学界做会类比自然是不稀奇的.

玩家`礼物文化'有明显地与学界平行类同的特质. 一旦研究员取得终身职, 他不再需要担心生存问题(的确, 终身职的观念可回溯至早期的礼物文化, 即``自然哲学家''基本上是富裕的绅士, 时间满满可奉献於研究上.) 在生存的危机解除後, 名望成了驱动的目标, 也就是在期刊或媒体上, 鼓励分享新点子及研究成果. 这造成客观而正面的功能, 因为科学研究, 就如玩家文化一般, 非常依赖`站在巨人的肩膀上', 而不需要一再地重新发现一些非常基本的原理.

有些人则进一步推论玩家文化只是研究团体风气的一种反射, 而且已经几乎到达相当程度. 这可能讲得过头了, 因为玩家文化似乎不过是以高中学历的聪明人们所架构起来的!

这里还有一些有趣的可能性存在. 我怀疑学界与玩家文化的类同型式, 并不止是因为其起源类同, 还因为它们所做的事, 在自然法则及人类本能的连系之下, 而演化出最理想的社会组织.  历史的裁决似乎断定自由市场资本主义是整体来说对经济效益最佳的方式; 或者, 以类同的方式来说, 名望游戏礼物文化是在生产(及检验)高品质创造力的工作上最佳的合作方式.

这一点如果是真的话, 那就比学术兴趣更加有意义了.  因为这提出了一点与教堂观与市集观中稍微不同的观点; 即, 最终, 软件产品工业资本家模式的末日到来, 而将被排出竞争, 从资本主义开始产生大量的剩馀财富, 而导致大量程式设计师生活下饥荒後的礼物文化下的那一刻开始. (译注: 换言之, 也就是大软件公司自掘坟场. 任意垄断操纵软件市场的後果, 造成软件设计师无法生存, 引发大规模投向以名望为基础的礼物文化中的活动, 增强了玩家文化的後盾. 我们可以在科技史的发展上发现许多类同现象.)

--------------------------------------------------------------------------------

[目录]


结论_ 由文化到文化规范

18. 结论: 由文化到文化规范
我们已经检视了用以控制及规范开放原始码软件产权的习俗. 我们已经见到这是如何揭露出在其下的权益特质及与Locke的土地产权理论的关系. 我们已经将玩家文化与`礼物文化'关连起来, 即参与者透过投入时间, 精力, 及创造力来竞争名望. 我们已经检验过在文化中的有相关的冲突解决分析.
下一个合理的问题应该是"为何这些这麽重要?" 玩家们并无意识分析而发展出这些习俗, 而且直到今日, 下意识地遵守这些习俗. 这些有意识地分析并没有立即明显地有任何的实用性 -- 除非, 或许, 我们可以进一步推展这些描述成为处方, 并演绎出一些改善这些习俗功能的方法.

在英式美国一般法传统下, 在玩家文化及土地产权理论之间, 我们已经发现一个相当合理的类比. 历史上来说 [Miller], 欧洲种族文化发明了这个传统来解决他们的争执解决系统, 即由未书写的, 下意识的习俗系统到明白地由种族中智者所记下的惯例法规 -- 然後最後白纸黑字写下.

或者, 既然我们的人口逐步上扬, 而对所有成员的薪传越来越困难, 是为玩家文化做点类同的事的时候了 -- 发展一套对解决各种争议的实用"程式码"(written code), 可增加在开放原始码计划的实力, 及一套仲裁传统, 即团体中的资深成员可做一些争执调解.

本文中的分析已经将这样的"程式码"大纲划出, 将过去暗示性的变成明白书写的. 不会出现在以上没有出现过的; 他们需要由各计划的建立者或拥有者志愿采用. 也不会完全地苛刻, 因为在该文化的压力会随时间而改变. 最後, 要将这样的"程式"付诸实现, 他们必须要反射出该玩家部落的广泛接受.

我已经开始进行这样的"程式码", 可能会叫做"Malvern Protocol", 以我所住的小镇名字来命名. 如果在本文中的这些分析逐渐受到广泛接受, 我会让大众都可取得Malvern Protocol, 用以解决争执范例"程式". 有兴趣批评及发展这套"程式"的团体, 或者希望提供一些他们的想法的, 都很欢迎与我连络.


[目录]


对进一步研究的一些问题

19. 对进一步研究的一些问题
该文化(也是我自己的文化)了解到, 不跟著一位仁慈的独裁者的模式是脆弱的. 这样的计划大多都失败了. 有些则惊人地成功而重要(Perl, Apache, KDE). 没有人真正了解其中的差别在何处. (每个计划的生命力, 与其参与者的组织动力生息相关, 是个相当暧 的观点, 是否真得存在一个组织可重复实行无碍的策略呢?)
就观察到的事实而论, 我们确实发现到, 成功的计划, 获取比需要相同工作量的除错及协助成功计划的工作来得更高的名望. 这是否是个对相同付出的理性价值评断呢?  或者它是个我们在此所演绎出来潜意识的领土模型所造成的次级效应?


[目录]


参考文件, 附注, 及感谢

20. Bibliography, Notes, and Acknowledgements
[Miller] Miller, William Ian; Bloodtaking and Peacemaking: Feud, Law, and Society in Saga Iceland; University of Chicago Press 1990, ISBN 0-226-52680-1. A fascinating study of Icelandic folkmoot law, which both illuminates the ancestry of the Lockean theory of property and describes the later stages of a historical process by which custom passed into customary law and thence to written law.

[Mal] Malaclypse the Younger; Principia Discordia, or How I Found Goddess and What I Did To Her When I Found Her; Loompanics, ISBN 1-55950-040-9. Amidst much enlightening silliness, the `SNAFU principle' provides a rather trenchant analysis of why command hierarchies don't scale well. There's a browseable HTML version.

[BCT] J. Barkow, L. Cosmides, and J. Tooby (Eds.); The adapted mind: Evolutionary psychology and the generation of culture. New York: Oxford University Press 1992. An excellent introduction to evolutionary psychology. Some of the papers bear directly on the three cultural types I discuss (command/exchange/gift), suggesting that these patterns are wired into