xdays

怎样成为一名黑客

December 30, 2011

为什么是这篇文档?

作为 Jargon File 的编辑和其他有关类似文化的文档的作者,我经常收到一些热衷于网络的新手的邮件,他们在邮件中经常问道:“我如何才能成为一个神秘的黑客?”我发现自 1996 年以来好像没有任何 FAQ 或者文档来回答这个非常重要的问题,所以我写了这篇文档。很多黑客认为这篇文档描述准确,我也认为确实如此。尽管如此,我并不是说它就是有关这一主题的权威,如果你不喜欢你在这里读到内容那就写下你的观点。

如果你仅仅离线读到是这篇文档一个片段,最新版本可以在这里找到http://catb.org/\~esr/faqs/hacker-howto.html

注意:在这篇文档的最后有一个 FAQ 的列表,在你给我发邮件询问问题之前确保你已经仔细阅读了这部份内容。

这篇文档已经被翻译成下多种语言版本:阿拉伯语、白俄罗斯、中文(简体)、丹麦语、荷兰语、爱沙尼亚、德国、希腊意大利希伯来语、挪威语,葡萄牙语(巴西),罗马尼亚的西班牙语,土耳其语和瑞典语。注意尽管这篇文档不断更新,这些版本可能有不同程度的过期。

妆点这篇文档的那个图标,有五个点在九个方格里,叫做滑翔机。它有简单的样式,这种样式包含数年来令黑客们痴迷的一种叫做 Life 的数学模拟的特征。我觉得它是黑客的直观象征。简单说来,首先增加一些神秘的色彩,但也开启了一扇复杂逻辑世界的大门,你可以从这里了解更多关于滑翔机象征的内容。

黑客是什么?

在 Jargon File 里包含很多关于黑客的定义,大多数都和熟练的技术和解决问题超越限制的之士有关。如果你真的想知道如何成为一名黑客,这两点很重要。

曾经有一个社区,崇尚共享主义文化,由专家级程序员和网络奇才组成,这个社区的历史可以追溯到几十年前的分时小型机和 ARPAnet 实验项目。崇尚这种文化的成员正事黑客的起源。黑客们构建了因特网,黑客们造就了 Unix 系统,黑客们使新闻组得以运行,黑客们构建了互联网。如果你是这一文化的一部份,如果你为这种文化作出过贡献,那么其他成员会知道你,称你为黑客,你就是一个黑客。

黑客的观念不仅仅局限于软件黑客文化。很多人将黑客精神应用到像电子或者音乐领域,你可以在任何科学和艺术的最高领域发现他的身影。软件黑客在其他领域里发现了这种相似的精神也会称他们为黑客,而且一些人认为黑客文化独立于黑客的致力于的媒介。但是这篇文档接下来要讨论的是软件黑客的技能和观点,这些起源于黑客文化的传统。

还有另一个群体自豪的自称为黑客,但实际上不是。这些人(多数事青少年)以入侵计算机系统或者截获电话系统为乐。真正的黑客称他们为骇客也不想和他们有一点关系。真正的黑客认为骇客事懒惰的,不负责任的,不聪明的,是一群不能因为有能力破坏安全而被称之为黑客的群体,就像能发动汽车并不代表就是汽车工程师一样。不幸的是,许多记者,作者被愚弄来用黑客描述骇客,这将无休止的另黑客不悦。

黑客与骇客最大的不同是:黑客创造,骇客破坏。

如果你想成为一名黑客,继续读下去。如果你想成为已经骇客,去读 alt.2600 新闻组然后在你发现自己没有自己想象的那么聪明之后做好蹲 5 到 10 年监狱的准备。这就是所有我想告诉骇客的。

黑客的态度

  1. 这个世界充满了等待去解决的有趣的问题
  2. 同一个问题不需要被解决两次
  3. 拒绝枯燥乏味的工作
  4. 向往自由
  5. 态度不是能力的替代品

黑客们解决问题创造新事物,他们相信自由和自愿的互帮互助。要想成为一名黑客,你必须自己有这种态度。而要想有这样一种态度,你必须信仰这种态度。

但如果你把培养黑客态度当作一种在这种文化中被接收的方式,你就误解了要点。成为一个信仰这些观点的人对你很重要,因为这样能帮助你学习并且保持积极主动。就像所有创造性艺术一样,成为大师的最有效的方式就是模仿大师们的思想,不仅仅从智力上也要从感情上模仿。

或者就像下面这首禅师所说的:
沿着这样一条路线:
发现大师
追随大师
与大师同行
品透大师
成为大师

所以,如果你想成为一名黑客,重复下面的事情知道你相信它们:

1. 这个世界充满了等待去解决的有趣的问题

做一名黑客非常有趣,但这种有趣来源于艰辛的努力。努力激发动力。成功的运动员从他们锻炼身体超越自身的极限中获取动力。同样地,要做一名黑客,你必须能从解决问题的过程中获得快乐,磨练技能,锻炼智力。

如果你觉得这样并非理所当然,要做一名黑客你应该如此。否则,你的黑客动力可能会被性,金钱或者社会虚名所阻碍。

(你必须能在你的学习能力范围内培养一种信念,就是尽管你可能不具备解决一个问题所需要的所有东西,如果你从其中的一部份学起,你将能够学会处理接下来的一小部分,这样下去你就能解决掉问题)

2. 同一个问题不需要被解决两次

创造性的大脑是宝贵的,有限的资源。既然有那么多有趣的问题等待被解决,它们不应该被浪费在重复发明轮子之上。

要想做一名黑客,你要知道其他黑客思考的时间是宝贵的。所以当你分享信息,解决问题并且给出解决办法以便其他黑客解决新的问题而不是总是重复处理旧问题时要有一种道德上的使命感。

注意,同一个问题不需要被解决两次并不是说你必须将现有的解决办法奉为信条,或者说对于给定的问题只有一种正确的解决办法。通常情况下,面对一个以前从未碰到的问题,我们能从问题的第一个解决办法中学到很多。相信自己可以做的更好是很好也很必要的,而人工技术,制度上的屏障这些阻止了好的解决办法被重新利用从而促使人们不得不重新发明轮子就不好了。

你不必认为你有义务贡献你的所有创造性的产出,尽管这么做的黑客能赢得其他黑客的尊重。出售自己的成果换取食物,租房或者买计算机也是和黑客价值观一致的。用你的黑客技能养家糊口,甚至发家也是理所当然的,只要你在做这些事情的时候不要忘记你对你的艺术和你的黑客伙伴们的忠诚。

3. 拒绝枯燥乏味的工作

黑客(更通俗说,富有创造力的人们)绝不该被重复性的苦差困扰,因为如果正他们就不能做只有他们能做的事情,解决新问题。这种浪费会危害到所有人。因此枯燥和苦差不仅仅事令人不悦,更是一种罪恶。

作为黑客,你应该相信是该尽最大可能的自动化那些枯燥的小事,这不仅为你也为其他所有人(特别是其他的黑客们)。

(关于这一点有个明显的例外。黑客们有时候在他们看来重复和枯燥的事情来进行脑力休息,或者为了获取一种通过其他方法无法获取技能或者特殊的经验。但是这也因人而异,每一个能思考的人都不应该强迫陷入令自己苦恼的境地。)

4. 向往自由

黑客们天性反对独裁,任何能对你发号施令的人都可能阻止你去解决令你着迷的问题。而且按照独裁着思路,你会发现一些特别愚昧的理由。所以独裁思维一经发现,必须反抗,以免其压迫你和其他黑客。

(这并不等同于反对所有权威。儿童需要被监护,罪犯需要被关押。黑客需要接受一些权威来在最短段时间内得到他需要的。但这也是有限的,有意识的权衡,个人屈服权威是不应该接受的。)

独裁主义者喜欢审查和保密。他们不相信志愿的合作和信息共享,他们只相信他们控制的合作。因此作为黑客,你需要培养一种对审查,保密以及使用武力或者欺骗方式压迫有能力人的做法怀有一种本能的敌意。并且你要愿意为这种信仰斗争。

5. 态度不是能力的替代品

要想成为一名黑客,你必须培养这些态度。但是仅仅复制一种态度你不会成为黑客,也不能让你成为一名运动员冠军或者摇滚明星。成为一名黑客需要智力,实践,奉献精神和汗水。

所以你要学会怀疑,尊重每一种能力。黑客从来不会让装腔做势者浪费他们的时间,但是他们尊重能力,特别是黑客能力,不过任何能力都是有价值的。只有少数人掌握的技能固然是好的,而那些涉及智力,实践和专注的技能当然最好。

如果你尊重能力,你会享受锻炼这种能力的喜悦。辛勤工作和奉献精神会变成很有热情的事情而不仅仅是苦差。这种态度对成为一名黑客至关重要。

基础黑客技能

黑客技能固然重要,但是技能更加重要。态度不能取代能力。在你梦想让其他黑客称你黑客之前你需要具备一些基本的技能。

这些技能随着新技术产生的新技能而淘汰了旧的而不断变化。例如,过去包括用机器语言编程,直到最近才包含 HTML。但有一点非常明确,接下来提到的技能一直包含在内。

1. 学习如何编程

理所当然,这是最基本的黑客技能。如果你一门编程语言也不了解的话,我建议你从 Python 开始。它设计精良,文档全面,对初学者非常友好。尽管是一门很好的初学者语言,它却不仅仅是一个玩偶,Python 非常灵活强大并且适合做大项目。我曾写过一篇Python 评价,从 Python 的官方网站上能找到许多指导文档。

我过去常常推荐 Java 作为最早学习的一门编程语言,但是这篇评论文章改变了我的观点(从这篇文章搜索 The Pitfalls of Java as a First Programming Language)。正如他们讽刺到的,一个黑客不能像五金店的管道工一样紧紧按照方法解决问题;你必须要知道各个组件真正做了什么。现在我认为最好先学习 C 或者 Lisp,然后在学 Java。

这里还有一个更为普遍的观点,如果一门编程语言为你做的太多,那么它可能是对于生产环境是很好的工具但同时却不适合用来学习。不仅仅编程语言有这样的问题,网络应用开发框架像 RubyOnRails,CakePHP,Django 一样能让表面上理解更容易,却让你在遇到困难问题,或者寻求跟好的解决办法时难于处理。

当你正式开始编程时,你必须学习 C 语言,Unix 系统的核心语言。C++和 C 语言非常接近,如果你学会了一个另一个也就不难了。这两种语言都不适合作为你第一学习的编程语言。实际上,你越避免使用 C 语言你的生产效率越高。

C 非常高效,节省你的机器资源。不幸的是,C 需要你手工做一些底层的资源(如内存)的管理才能如此高效。这些底层代码非常复杂切 bug 多多,会占用你大量时间来调试代码。现在机器的性能都足够强大,这或许是一个不太好的折衷。更明智的做法是采用一门对机器来说并不算高效但是对人来说更高效的语言,比如 Python。

其他对黑客来说比较重要的语言是 Perl 和 LISP。Perl 因其实用性值得一学;它在动态网页和系统管理中广泛应用,因此即使你从来不写 Perl 程序至少你要能读懂它。许多人像我建议你用 Python 一样在使用 Perl,来在那些并不需要特别高效的场合下避免使用 C。你需要看懂他们的代码。

LISP 值得一学另有原因,当你最终学会它时你会得到意义深远的启蒙。这种经验将使你在以后成为一个更好的程序员,即使你很少使用 LISP 这门语言本身。(你可以从编写或者修改 Emacs 编辑器的编辑模式或者 GIMP 的 Script-Fu 插件中很容易的对 LISP 有个初步的认识)

最好是你能把 Python,C/C++,Java,Perl 和 LISP 这五门语言都学会。他们除了是一门黑客语言之外,还代表了编程的不同方法,每种编程语言都以不同的方式让你受益。

但是要注意仅仅靠累加语言你是不能达到黑客技能水平,甚至连一个程序员的水平都到达不了,你需要脱离编程语言从更高的角度思考编程问题。想要成为一名真正的黑客,你要锻炼通过联系文档和你的知识来学习一门新的编程语言的能力,这就意味着你要学习几门完全不同的语言。

我无法在这里就如何编程给予指导,这是一项非常复杂的技能。但是我可以告诉你书和培训课程是做不到的,可能所有的黑客都是自学。你可以从书上学到编程语言的一些特性,但是将知识转化技能的思想只能从实践中获得,阅读代码和写代码最为有效。

Peter Norvig,Google 的顶级黑客以及关于人工智能的广泛使用的教材的联合作者,写过一篇很好的文章叫用十年自学编程他的学习编程的方法很值得关注。

学习编程就像学习写文字一样。最好的学习方法就是读一些大师写的东西,写一些自己的东西,再读一些,再写一些,再读一些,再写一些…重复这个过程直到你的文笔能有一种你自己的力量和优势。

找代码阅读过去是件很困难的事情,因为很少有大型的的程序代码供初出茅庐的黑客阅读和思考。现在情况已经完全转变了,开源软件,编程工具和操作系统(都由黑客缔造)广泛使用。这也引出了我接下来的话题…

2. 从开源的 UNIX 系统中选取一个,学习使用和运行它

我假设你拥有一台个人电脑或者可以接触到一台(稍等一下来理解这句话的意思,黑客文化起源于那个计算机非常昂贵,个人是买不起的时代)。任何新手想要获取黑客技能要经历的一个最重要的是获取一个 Linux 系统,或者 BSD-UNIX 家族中的的一个,或者 Solaris,把它安装的个人电脑上。

是的,世界上出了 Unix 还有其他的操作系统,但是他们是以二级制方式发行,你无法阅读到源代码,进而你也无法修改它。用装有 windows 系统或者其他闭源系统的机器上学习黑客技能就像穿着注塑学习跳舞。

在 Mac OS X 下学习是可以的,但是只有系统的一部分被开源。你会经常撞墙,而且你要闭源培养一些依赖苹果专利代码的坏习惯,如果你能专注于 Unix 系统下的一些高级特性,你会学到很多有用的东西。

Unix 是伴随因特网诞生的操作系统。但你不需要知道 Unix 也可以学习如何使用因特网,不学习 Unix 你却无法成为一名因特网黑客。因此,今天的黑客文化都是以 Unix 为中心的(这并不是完全正确,一些老时代的黑客们并不认同这一点,但 Unix 和因特网之间的共生关系已经足够紧密,以致微软也无法郑重的否认)。

因此,启动一个 Unix,可以像我一样使用 Linux 或者还有其他的选择(是的,你可以在一台机器上安装 Linux 和 windows 双系统),学习它,使用它,修补它。使用它和因特网交流。阅读代码,修改代码。你会找到比任何 windows 系统中拥有的更好的编程工具(包括 C,Lisp,Python 和 Perl),当你作为一名大师级的黑客回首时你会发现你获取笔记想想更多的乐趣,汲取更多的知识。

想要了解更多关于 Unix 的信息,看 The Loginataka ,你可能还想看一下 The Art Of Unix Programming

要获取一个 Linux,阅读下 Linux Online 这个网站,你可以从那里下载或者找到一个能帮助你安装系统的用户组。

在写这篇 HOWTO 的最初十年里我说从一个使用者观点来看,所有的发行版本都是一样的,但是在 2006-2007 年间,最好的选择集中在 Ubuntu 上。虽然其他的发行版也有自己的优点,Ubuntu 是目前也一直是对于新手最好的选择。

你可以从 www.bsd.org找到关于 BSD 的资源。

一个小试牛刀的好办法是从 Linux 爱好者成为 LiveCD,一种完全从 CD 启动系统而不对硬盘座任何修改的的镜像启动系统。这样会很慢,因为光驱本来就很慢。但这是不做任何修改仅仅看一下的一种方式。

我曾经写过一篇初级读物basics of Unix and the Internet

我过去常常建议新手单独安装一个 Linux 或者 BSD。现在的安装程序已经足够友好,即使是个新手,你自己也可以完成。尽管如此,我还是建议和本地用户组取得联系,请求帮组,这样无害,而是让安装过程更顺利。

4. 学习如何使用万维网和 HTML

在黑客文化中创造的很多东西都在默默的发挥着他们的作用,帮助工厂,办公室和大学正常运转,这些对非黑客的生活似乎没有什么影响。网页是一个很大的例外,这个巨大耀眼的黑客工具正在改变整个世界,甚至政客们也这么认为。单就这个理由(当然还有其他理由)你就应该学会如何制作网页。

这不仅仅意味着学习如何使用浏览器(任何人都可以这么做),而是学习如何写 HTML,网页标记语言。如果你不知道如何编程,写 HTML 会培养一些你帮助你学习编程的习惯。因此给自己建立一个主页。试着坚持使用 XHTML,相比传统的 HTML 它是更干净的学习语言(网上有一篇很好的初学者指南:这里

但是光有一个自己的主页还不足以让你成为一名黑客。网络上有很多网页,大多数都是没有意义的,没有任何内容的,华而不实的垃圾,吸引你但仍然是垃圾的页面。(更多关于这方面的信息参考 The HTML Hell Page)。

要想值得一读,你的页面必修有内容,必须有趣或者对其他黑客来说有用。这也引出了我接下来谈论的主题…

4. 如果你英语不好,就好好学它

我自己作为一个说英语的美国人,挺不情愿这样建议,担心这样会被认作一种文化歧视。但是一些说其他语言者强烈希望我这么指出英语是黑客文化和因特网的工作语言。要在黑客社区内活动你需要掌握这门语言。

回到 1991 年,据我了解许多把英语作为第二语言的黑客也使用英语来技术交流,即使他们说共同的母语。据我了解到的报道英语比其他语言的技术词汇多,因此对于工作来说是更好的工具。也因为同样的原因,以英语写的技术书籍的翻译通常都让人不满意(如果有的话)。

Linus Torvalds,一个芬兰人,用英语来注释他的代码(显然对他来说不是凑巧)。他熟练的英语技能在他募集一个世界范围的 Linux 开发者社区起到很大的作用。这是一个值得学习的榜样。

对于本地说英语者来说,这并不代表你有作为黑客足够的语言技能。如果你写的东西有歧义或者很多拼写错误,许多黑客(包括我自己)会忽略你。尽管写的粗心并不能代表思考的粗心,我们发现两者有很强的关联性,粗心思考者对我们来说无用。如果你无法写的流畅,就学习。

黑客文化中的地位

  1. 写开源软件
  2. 帮助测试和调试开源软件
  3. 发布有用的信息
  4. 帮助保持基础设施运行
  5. 为黑客文化本身服务

像其他非盈利文化一样,黑客王国因声望而运转。你尝试解决有兴趣的问题,但是他们有多有趣,你的解决办法是够好,是由你的技术同仁或者前辈来评判的。

相应的,当你玩黑客这场游戏时,你通过其他黑客对你技能的评价来获取分数(这也是在其他黑客都称你为黑客之前你不是一个真正的黑客的原因)。这一事实也变得模糊,一方面原因是通常黑客被认为是一种隐士工作,另一个原因是自负和外界评价对个人东西有影响的黑客文化禁忌。

特别的,黑客王国被人类学家成为奉献文化。你要获取地位和声誉,不是靠支配其他人,也不是打扮漂亮,也不是拥有其他人没有的东西,而是把东西奉献出来。具体的,奉献你的时间,你的创造力和你技能的成果。

你可以做一下五件事情来赢得黑客的尊重:

  1. 写开源软件

    首先(也是最主要最传统的方式)就是写其他黑客认为很有用且很有意思的程序,并且将代码公布给黑客社区使用。

    (我们过去常常把这些作品成为自由软件,但是这样称呼困扰了那些不明确自由为何以的人,现在大多数时候我们称之为开源软件)

    有些人曾编写了大型且功能强大程序,这些程序能满足大众的需求的人,并且他们将这些程序公之于众以至于现在为每个人所用,他们是黑客文化所尊敬的英雄。

    但是这里有个历史上的小插曲,尽管黑客们把他们之中开源软件开发者奉为我们的社区中最强大的核心,20 世纪 90 年代中期,黑客们的主要工作都集中在闭源软件上。在 1996 年我写这篇 HOWTO 第一个版本时,这依然是事实。在 1997 年以后,开源软件进入主流,事情才开始改变。今天“黑客社区”和“开源软件开发者”已经是对同一种文化和人群的描述,但是应该知道事情并不是总是如此。(更多信息参考这里

  2. 帮助测试和调试开源软件

    同样包括支持和调试开源软件的人们。在这个不完美的世界里,我们不可避免地在调试阶段花费大量开发时间。这也是为什么从开源软件开发者的思想告诉你的杰出的测试者(他们能清楚的描述问题的现象,集中问题,在临时的版本中能容忍 bug 存在,并且愿意做一些例行的诊断工作)是很重要的。尽管他们之中有些人能判断在哪个测试阶段是延长的,哪个是令人筋疲力尽的噩梦,哪个只是一个有益的小麻烦。

    如果你是一个新人,试着寻找一个你感兴趣的处于开发阶段的程序,做一名测试员。从测试程序,到排错,再到帮助修改他们,这是一个自然的过程。用这种方式你会学到很多,并且还会积累人品(^^)以后别人也会帮助你的。

  3. 发布有用的信息

    你可以做的另一件好事是搜集过滤有用的和有趣的信息整理成网页或者 FAQ,而且让这些信息可以获取到。主流技术的 FAQs 的维护者们同样得到开源开发者的尊重。

  4. 帮助保持基础设施运行

    黑客文化(和互联网工程开发等等)都是由志愿者维护的,为保持它正常运转有很多必须但是乏味的工作要做,如管理邮件列表,缓和新闻组,维护大型软件的归档库,开发 RFCs 文档和其他技术标准。

    做这些事情的人也会得到很多尊重,因为人人都知道这些工作会耗掉很多时间但是没有玩弄代码有趣,做这些事情体现了牺牲精神。

  5. 为黑客文化本身服务

    最后,你可以服务和传播文化文本(比如通过写如何成为黑客的准确的入门文档,呵呵!),这还不是你该去做的直到你呆了一段时间并对以上四件事情非常了解了。

    事实上,黑客文化没有领导者,但它确实有英雄和部族长老和历史学家和发言人。当你在战壕里呆的时间够长了,你就会成长为其中一员。注意:黑客并不完全信任部族长老,所以享有这这名誉挺危险的。并不是为这样一个荣誉去努力,你需要自己评估自己的位置去享有,然后保持谦虚和亲切。

黑客和呆子的关系

恰恰与传言想法,要成为一名黑客你不需要成为一个书呆子。那不会有帮助,但是很多黑客实际上确实是书呆子。缺乏社交生活能让你专注于真正重要的事情,例如思考和 hacking(这个词只可意会不可言传)。

因此,很多黑客因“极客”这个标签而自豪,

这是声明他们独立于正常的社交期望的一种方式(也包括对通常伴随极客的科幻小说和策略游戏的嗜好)。19 世纪 90 年代,呆子通常用于指这种方式,那时候书呆子是一种稍微轻蔑语而极客是更难听的。2000 年以后它们发生了转变,只要在美国的流行文化里发生了。而且现在甚至在非专业技术人群中也盛行了一种“极客自豪”文化。

如果你能足够专注于黑客而且还有有生活,那很好。现在这样相比 19 世纪 70 年代我还是一个新手的时候已经很容易了;现在主流文化对于技术书呆子已经很友好了。很多开始逐渐意识到黑客是高质量的爱人和配偶。

如果你因为没有生活而被黑客文化所吸引,那也可以-至少你的专注力没有问题。兴许将来你也会有自己的生活。

风格要点

然后,要成为一名黑客,你需要有一些黑客习惯。当你离开电脑时你也有一些能帮助你培养习惯的事情可做。这些事不能取代黑客行为但是许多黑客会做,他们感觉这些事情和黑客精神的本质有基础关联。

学好书写自己的本地语言。尽管存在程序员都不会写作这样一个偏见,令人惊讶的是很多黑客(包括我所认识的最杰出的黑客们)都是很好的写手。

阅读科幻小说,参加科幻小说约会(一个很好的遇见黑客的机会)

学习武术。武术作为对自律的训练同样是黑客们需要做的。黑客中最流行的形式莫过于亚洲的空手道,比如跆拳道,各种形式的空手道,功夫,合气道或者柔术。西方的剑术和压手的刀术也有很多追随者。手枪射击在被认为合法的地方也很流行。最黑客化的武术是那些着重于心智训练,放松意识,和控制,而不是原始力量,运动竞技或者体力消耗。

研究一种真正的思想自律。常年来倍受黑客欢迎的是禅(很重要的是你不需要信仰一种宗教或者放弃你所信仰的宗教也能受益于禅),其他的形式可能也可以,但是谨慎选择那些不需要你相信疯狂的事物的形式。

培养耳朵对音乐的欣赏能力。学习欣赏古怪风格的音乐。学习演奏一些英语乐器,或者学习演唱。

培养对双关语和文字游戏的欣赏能力。

这些事情你做的越多,你拥有的黑客元素越多。对于真正的黑客,玩乐和工作,科学和艺术之间的界限逐渐消失,或者汇聚成更高形式的创新玩乐。另外,不要拘泥于狭窄的技能面。尽管大多数的程序员以程序员自居,他们也能胜任其他相关的领域---通常包括系统管理员,网页设计和 PC 硬件故障处理。一个做系统管理员的黑客,也可能很擅长脚本编程和网页设计。黑客们做事不会半途而废,既然开始依稀那个技能那就把它做得相当好。

最后,一下是不要做的事情:

不要使用愚昧浮夸的 ID 或者网名。

不要陷入用户组(或者其他任何地方)的口角里。

不要自称网络朋克,也不要把时间浪费到那些自称是的人身上。

不要发表或者邮件任何带有拼写错误和语法错误文字。

以上这些事情你做了只会给你带来的嘲讽的声誉。隐藏你的真实身份骇客们,盗版软件者和其他低劣形式的幼稚愚蠢行为。黑客们不会做这些,他们因他们的所为自豪,而且希望这与他们的真实名字关联。所以如果你有口实请丢弃。在黑客文化中这样只会证明你是一个失败者。

历史记录:黑客,自由软件,开源软件

自从我在 1996 年写下这篇 howto 的时候以来,围绕这篇 howto 的环境已经和今天大相近庭。简单描述下这些改变可能帮助一些人澄清黑客社区中对开源,自由软件和 Linux 的混淆。如果你对这部分不好奇,你可以直接跳过阅读 FAQ 和名词解释。

我在这里描述的黑客精神和社区远早于 1990 年 Linux 的浮现;我在 1976 年左右参与其中,它的根源可以追溯到 19 世纪 60 年代。但是在 Linux 之前,大多数的黑客文化是在版权系统或者少数准实验系统上进行的,像 MIT 的 ITS,它从来没有在他最初的学术环境之外被部署过。尽管早期有一些对改变这种情况的尝试(前 Linux),他们的影响往好了说也是很边缘化的,并且只限于专门的忠实支持者,而这些人在黑客团体中都是极少数的,更别提通常来说的软件软件大行业了。

现在所谓的开源可以追溯到和黑客社区诞生的时候,但是直到 1985 年它是一种没有被命名的民间行为而不是一种带有理论和宣言的有意识的运动。这个事前阶段在 1985 年被理查德斯托曼终结,他给它了一个名字---自由软件。但是他的命名同样也是一种声明;他赋予自由软件标签以思想,这是当时的黑客社区还没有接受的。这样就导致自由软件被黑客社区里的大量的少数派(特别是和 BSD Unix 有关系的那部分人)高声拒绝,而被剩下下的大多数人(包括我)认真使用,默默的保留下来。

尽管保留下来,理查德斯托曼的举着开源软件的旗帜来引导黑客社区的声明到 19 世纪 90 年代中期一直受阻。这种情况被 Linux 的崛起而挑战了。Linux 给开源软件开发一个温暖的家。许多以我们目前成为开源名义发起的项目都由版权限制的 Unix 迁移到了 Linux。围绕 Linux 的社区爆炸式的增长,变得壮大也脱离了早起的 Linux 黑客文化。理查德斯托曼断然尝试将所有这些活动收编如自由软件运动,但是却被爆炸增长的多样的 Linux 社区和他们的公共发起人 Linus Torvalds 所挫败。Torvalds 因为别无选择继续使用自由软件条款,但是对外公开拒绝理查德斯托曼的思想。许多年轻的黑客追随者这种举措。

在 1996 年,当我第一次发表我的这篇黑客 HOWTO 时,黑客社区很迅速的围绕着 Linux 和另一些很方便的开源操作系统(尤其那些出身于 BSD Unix 系统的)重组。社区关于我们大多数人用数十年在闭源的操作系统上开发闭源软件的记忆还没有褪去,但是这一事实依然成为一段逝去历史的一部分了;黑客们普遍开始以他们加入开源项目如 Linux 或者 Apache 来证明自己是黑客了。

但是开源软件一词尚未合并,在 1998 年之前也不会了。当真正合并了,黑客社区大多数会在接下来的 6 个月接收它;例外之处就是少数人思想上依附于自由软件。自从 1998 年以来,特别是 2003 年以来,用开源软件开发来鉴别黑客行为已经很接近了。现在区别这些分类基本没有意义了,而且将来也不会改变。

这些值得记住,但是,事情也并不总是如此。

注意:翻译本文仅为锻炼个人翻译能力和理解黑客文化之用,很多言辞由于水平有限翻译不慎恰当,其间参考这篇译文数次,感谢译文作者,请请不要转载本译文免得误人子弟。

英文原文:http://www.catb.org/esr/faqs/hacker-howto.html