The new generation of hackers are turning open source into a powerful force in today’s computing world. They are the heirs(继承人) to an earlier hacking culture that thrived(繁荣) in the 1960s and 1970s when computers were still new — part of a community that believed software should be shared and that all would benefit(有益于) as a result.
These expert programmers and networking wizards(男巫) trace(追溯) their lineage(血统) back to the first time-sharing minicomputers and the earliest ARPAnet experiments. The members of this community coined the term “hacker”. Hackers built the Internet and made the UNIX operating system what it is today. Hackers run Usenet and make the World Wide Web work.
Thanks to the advent(到来) of relatively low-cost(廉价的) computers and the Internet, the new hackers are immeasurably(无限地) more numerous(许多的), more productive(能生产的), and more united than their forebears(祖先). They are linked by a common goal — of writing great software; and by a common code — that such software should be freely available to all.
In 1991, Linus Torvalds sent a posting to an Internet newsgroup, asking for advice on how to make a better operating system. His project was a hobby, he said, and would never be “big and professional”. In 1994, the first working version of Linux was distributed(分布式的).
Marleen Wynants and Jan Cornelis, while discussing the economic(经济的), social, and cultural(文化的) impact(影响) of Free and Open Source Software in their paper “How Open is the Future?” suggest that Linux was more than just a toy for hackers. Propelled(推进) by Linux, the open source hacker culture surfaced from its underground location. Amateur(爱好者) hacker programmers began to create coalitions(联合) with more established(确定的) parts of the software production and distribution(分布) sector(部门). New companies and organisations(组织) were founded, while new products, licenses and communities were created.
In the spring of 1997, a group of leaders in the free software community assembled(集合) in California. This group included Eric Raymond, Tim O’Reilly, and VA Research president Larry Augustin, among others. Their concern(关系) was to find a way to promote(促进) the ideas surrounding free software among people who had formerly shunned(避开) the concept(观念). They were concerned that the Free Software Foundation’s “anti-business message” was keeping the world at large from really appreciating the power of free software.
At Eric Raymond’s insistence(坚持), the group agreed that what they lacked to a great extent(程度) was a marketing campaign(运动) devised(设计) to win mindshare, and not just market share. Out of this discussion came a new term to describe the software they were promoting: open source. A series of guidelines(指导方针) were crafted(精心制作的) to describe software that qualified(限制) as open source. While there has been a hacker subculture(亚文化群) developing open source applications and Internet protocols(协议) for many years, without explicitly(明确地) using the label(标签) “open source”, it is only in the last few years, after this conference, that this practice has become visible(可见物) to a broader public.
In 1998, Microsoft’s anxiety(焦虑) leaked out through what is now known as the Halloween Documents. These documents comprised(包含) a series of confidential(机密的) Microsoft memos on potential(潜在的) strategies(战略) relating to free software, open source software, and to Linux in particular. Among the leaked documents were a series of responses to the original memos.
The leaked documents and responses were published by Eric Raymond during Halloween 1998. Forced to concede(承认) that the memos did indeed originate(引起) from within the company, Microsoft dismissed them as the private speculations(投机) of a couple of engineers. “Linux has been deployed(配置) in mission-critical, commercial(商业的) environments with an excellent pool of public testimonials(证明书),” Vinod Valloppillil, one of the memos’ authors, had noted.
The documents also acknowledged(承认) that open source software “ is long-term credible(可靠的) … FUD (spreading Fear, Uncertainty, and Doubt) tactics(策略) cannot be used to combat(反对) it,” and “Recent case studies (the Internet) provide very dramatic(戏剧的) evidence(证据) … that commercial quality can be achieved/exceeded(超过) by OSS projects.”
FUD was a traditional Microsoft marketing strategy, acknowledged and understood internally(内部地). Examples of Microsoft’s FUD tactics included announcing the launch(发射) of non-existent(不存在的) products or spreading rumours(谣言) that competing products would cause Windows to crash.
Should you happen to bump(碰撞) into them and inquire(询问) about their craft, hackers will gleefully(欢欣地) inform(通知) you that programming is the most fun you can have with your clothes on… although clothes are not mandatory(强制的).
A hacker is someone who enjoys exploring the details of computers and how to stretch(伸展) their capabilities(才能), as opposed to most users, who prefer to learn the minimum(最小的) necessary. Originally, “hacker” was a term of respect, used among computer programmers, designers, and engineers. The hacker was one who created original and ingenious(有独创性的) programs.
To programmers, “hackers” connote(意味着) mastery(掌握) in the most literal(文字的) sense: those who can make a computer do what they want it to — whether the computer wants to or not. Unfortunately, this term has been abused(滥用) by the media to give it a negative(负的) connotation(内涵) — of someone who breaks into systems, destroys data, steals copyrighted software and performs other destructive(破坏的) or illegal(非法的) acts with computers and networks.
The term that accurately(精确地) defines(定义) that kind of person is “cracker”.
Hackers carry stacks(堆) of ideas teetering(摇晃) in their heads at any given time. Their brains cannot stop collecting, consuming(消耗), or taking things apart(相距), only to reassemble(重新装配) them again. But what seems to drive them is an intense(强烈的) ability, even a need, for analysis and organisation. When hackers encounter(遭遇) a technology for the first time, they do not just absorb(吸收) the general shape, but go straight for the details. They feed on the logic(逻辑) of technology. When they do communicate, they can speak and write with great precision(精度) about what they’ve learned.
Hackers solve problems and build things, and they believe in freedom and voluntary(自愿的) mutual(共同的) help. The hacker mindset(心态) is not confined(限制) to the realm(领域) of software (or hardware(计算机硬件)). The hacker nature is independent of the particular medium(方法) the hacker works in.
Hackerism ideas have travelled(有过…旅行的) beyond the computer industry. The ideals(理想) of the hacker culture could apply to almost any activity one pursues(继续) with passion. Burrell Smith, a key member of the team that created the Apple Macintosh computer, says, “Hackers can do almost anything and be a hacker. You can be a hacker carpenter(木匠). It’s not necessarily high-tech(高科技的). I think it has to do with craftsmanship(技术), and caring(有同情心的) about what you’re doing.”
In his book Biopunk, Marcus Wohlsen reasons that the primal(被压抑童年情绪的释放) urge(力劝) to tinker(做焊锅匠) is an essential prerequisite(先决条件) to being a hacker. In the hands of its most gifted practitioners(开业者), tinkering(铸补) is an essential form of creativity(创造力). But it is a different brand of creativity, practised in a different spirit, than the kind suggested by the romantic(浪漫的) image of the lone artist or genius(天才) inventor trying to wrestle(摔跤) inspiration(灵感) out of nothing.
Tinkering in a generic(类的) sense is fiddling(诈骗) or tweaking(扭), spending the weekend in the garage trying to squeeze(挤) a few more horsepower(马力) out of the Yamaha FZ 16. But it still retains(保持) the idea of “work that is not really work”. Jacking up your shocks and putting in balloon tyres on your Willy’s Jeep is not something you do because you have to. Tinkering is work you do for fun.
Hackers embrace(拥抱) the playfulness(玩笑) of tinkering, but here’s the mischief(恶作剧) in their creed(信条): just because the work is fun does not mean it is unimportant. “Playing”, in the hacker sense of the word, is not just a way to stay entertained(娱乐). It is an attitude toward innovation(创新) that champions gamesmanship(搅乱战术) and admires intellect(智力) applied with competitive(竞争的) vigour(活力) and flair(资质).
In chess, the grandmaster(大师) and the goat each play with the same sixteen pieces. But in the hands of the former, the game becomes an object of beauty and raw intellectual(智力的) force. In the same way, the gifted tinkerer can rearrange(重新排列) the already existing engine parts or snippets(小片) of computer code in a way that creates something utterly(完全地) new and potentially(潜在的) transformative(变化的).
For hackers, the logical(合逻辑的) frame(框架) of mind required for programming spills over into more commonplace(平凡的) activities. You could ask hackers a question and sense their mental accumulators(蓄电池) processing bits until they came up with a precise(精确的) answer to the question you asked.
Marge Saunders would drive to the Safeway supermarket every Saturday morning in her Volkswagen and on her return would ask her husband, “Would you like to help me bring in the groceries(杂货)?” Bob Saunders would reply, “No.” Stunned(震惊), Marge would drag in the groceries herself. After this occurred a few times, she exploded, hurling(猛投) curses(诅咒) at him and demanded an explanation on why he didn’t help her.
“That’s a stupid question to ask,” he said. “Of course I won’t like to help you bring in the groceries. If you ask me if I will help you bring them in, that’s another matter.” It was as if Marge had submitted(服从) a program into the TX-0, and the program, as programs do when the syntax(语法) is improper(不正确的), had crashed. It was not until she debugged(调试) her question that Bob Saunders would allow it to run successfully on his own mental computer.
Wikipedia accurately(精确的) explains the “hacker ethic(伦理)” as a generic phrase that describes the moral values and philosophy(哲学) that are standard in the hacker community. The early hacker culture and resulting philosophy originated(引起) at the Massachusetts Institute of Technology (MIT) in the 1950s and 1960s.
The term “hacker ethic” is attributed(归属) to journalist Steven Levy, as described in his book titled Hackers: Heroes of the Computer Revolution, written in 1984. The guidelines(指导方针) of the hacker ethic make it easy to see how computers have evolved(发展) into the personal devices(装置) we know and rely(依靠) upon today.
The hacker ethic was a “ new way of life, with a philosophy, an ethic and a dream.” However, the elements(基础) of the hacker ethic were not openly debated and discussed; rather they were accepted and silently agreed upon.
Free and Open Source Software (FOSS) has evolved from the hacker ethics that Levy described. The hackers who stay true to the hacker ethics — especially the Hands-On Imperative — are usually supporters of the free and open source software movement.
The general tenets(原则) of the hacker ethic are:
The last two points of the traditional ethics perhaps do not seem surprising today. They must be understood in their historical(历史的) context(环境). In the 70s, computers were strange and unfamiliar to most people. In cases where they meant something, it was mostly to do with administrative(管理的) data processing, computing centres, punch(冲压机) cards and Teletype interfaces(界面). Art, beauty and life changes were not mainstream(主流) notions(概念) associated(交往) with computers.
Hackers dress for comfort, function, and minimal(最低的) maintenance(维护) rather than for appearances (some, perhaps unfortunately, take this to extremes(狂热分子) and neglect(疏忽) personal hygiene(卫生)). They have a very low tolerance(公差) for suits and other “business” attire(服装); in fact, it is not uncommon for hackers to quit(离开) a job rather than conform(符合) to a dress code.
When they are somehow pushed into conforming to a dress code, they will find ways to subvert(颠覆) it, for example, by wearing absurd(荒谬的) novelty(新奇) ties. Most hackers I know consider a tie as a strangulation(绞窄) device(装置) that partially(部分地) cuts off the blood supply to the brain which explains the behaviour of tie-wearers. A tie could bestow(使用) upon you the reputation(名声) of a super-loser, a suit-wearing super-user with no clue(线索) — someone with root privileges(特权) on a UNIX system but no idea what he is doing; the equivalent(等价物) of a three-year-old with an AK-47 for a toy. In times of dire(可怕的) stress(压力), he may roll up his sleeves and loosen(放松) the tie about half an inch. It seldom helps.
Female hackers almost never wear visible(明显的) makeup(化妆品) and many use none at all.
In his essay by the same name, Eric Steven Raymond lists out, among other things, the basic hacking skills for wannabe(想达到目标的人) hackers. He recommends the following five languages — Python, Java, C/C++, Perl and Lisp.
Python. It is cleanly designed, well documented and relatively kind to beginners. Despite(尽管) being a good first language, it is not a toy; it is very powerful and flexible(灵活的), and well suited for large projects. Paul Graham points out that many hackers use Python because they like the way source code looks.
That may seem a frivolous(无聊的) reason to choose one language over another. But it is not as frivolous as it sounds — when you program, you spend more time reading code than writing it. You push blobs of source code around the way a sculptor(雕刻家) does with blobs of clay(粘土). So a language that makes source code ugly is maddening(令人发狂的) to an exacting programmer, as clay full of lumps(块) would be to a sculptor.
Java. Eric Raymond suggests that Java is a good language to learn to program in. Most hackers today may not agree. Their main objection(异议) is that Java is not malleable(可锻的). The malleability(顺从) of the medium(方法) while programming is part of the process of discovery, which includes understanding all the requirements and forces — internal(内部的) or not — that a system must be designed around.
James Gosling, best known as the father of the Java programming language, in his paper “Java: An Overview”, says, “Very dynamic(动态的) languages like Lisp, TCL and Smalltalk are often used for prototyping(样机研究). One of the reasons for their success at this is that they are very robust(强健的)… Another reason … is that they don’t require you to pin down decisions early on. Java has exactly the opposite property: it forces you to make choices explicitly(明确地).”
The difference between languages like Lisp and Java, as Paul Graham points out in his book Hackers and Painters, is that Lisp is for working with computational(计算的) ideas and expression, whereas(然而) Java is for expressing completed programs.
As James Gosling says, Java requires you to pin down decisions early on. And once pinned down, the system — which is the set of type declarations(申报), the compiler(编译器), and the runtime system — makes it as hard as it can for you to change those decisions, on the assumption(假定) that all such changes are mistakes you’re inadvertently(疏忽的) making. The effect is like having governors(主管人员) (speed limiters) fitted in your off-roader(越野的) to prevent fools (you?) from doing too much damage. Hackers don’t like a language that talks down to them. Hackers just want power.
C/C++. If you get into serious programming, you will have to learn C, the core language of UNIX. C++ is very closely related to C; if you know one, learning the other will not be difficult. Neither language is a good one to try learning as your first, however.
Perl. Another language of particular importance to hackers is Perl, which is worth learning for practical reasons. It is very widely used for active Web pages and systems administration(管理), so that even if you never write Perl, you should learn to read it.
Lisp. The truly serious hacker should consider learning Lisp. Lisp(口齿不清) is worth learning for the profound(深厚的) enlightenment(启迪) experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp a lot.
The single most important step any newbie(网络新手) can take toward acquiring(捕获) hacker skills is to get a copy of Linux or one of the BSD-Unixes, install(安装) it on a personal machine, and run it. Yes, there are other operating systems in the world besides UNIX/Linux. But they’re distributed(分配) in binary(二进制的) — you can’t read the code and you can’t modify(修改) it.
Trying to learn to hack on a Windows machine is like trying to learn to dance while wearing a body cast. Besides, UNIX is the operating system of the Internet. While you can learn to use the Internet without knowing UNIX, you can’t be an Internet hacker without understanding UNIX. For this reason, the hacker culture today is pretty strongly UNIX-centred.
So, bring up a Linux. Learn it. Run it. Tinker(发出丁当声) with it. Talk to the Internet with it. Read the code and modify(修改) it. You’ll get better programming tools (including C, Lisp, Python and Perl) than any Microsoft operating system can dream of. You’ll have fun and you’ll soak(吸收) up more knowledge than you realise, until you look back on it as an ace hacker.
You must earn the title of “hacker”, rather than just claim(要求) it. The same essay by Eric S Raymond that I mentioned earlier offers some invaluable(无价的) tips on how to earn your status in hackerdom. Among others, there are two main things you can do to be respected by hackers (for a complete list, read “How to become a hacker” by Eric S Raymond).
Write open source software. The first (the most central and most traditional) is to write programs that other hackers think are fun or useful, and give the program sources to the whole hacker culture to use. Hackerdom’s most revered demigods(受崇拜的人) are people who have written large, capable(能干的) programs that met a widespread need, and given them away, so that now everyone uses them.
Help test and debug(调试) open source software. They also serve hackerdom who stand and debug open source software. In this imperfect(有缺点的) world, we will inevitably(不可避免地) spend most of our software development time in the debugging phase(相). That’s why any open source author will tell you that good beta-testers (who know how to describe symptoms(症状) clearly, localise(地方化) problems well, can tolerate(忍受) bugs in a quickie(快饮) release, and are willing to apply a few simple diagnostic(诊断的) routines(程序)) are worth their weight in rubies(红宝石). Even one of these can make the difference between a debugging phase that’s a protracted(拖延的), exhausting(使耗尽的) nightmare(恶梦) and one that’s merely a salutary(有益的) nuisance(讨厌的人).
If you’re a newbie(网络新手), try to find a program under development that you’re interested in and be a good beta-tester. There’s a natural progression(前进) from helping test programs to helping debug them and then on to helping modify them. You’ll learn a lot this way and generate(形成) good karma(因果报应) with people who will help you later on.
To end, I will have to quote Eric S Raymond yet again, since he puts it so beautifully:
We half-joke about ‘world domination’, but the only way we will get there is by serving the world. That means you and I; and that means learning how to think about what we do in a fundamentally(根本地) new way, and ruthlessly(无情地) reducing the user-visible complexity(复杂) of the default environment to an absolute(绝对的) minimum(最小值).
Computers are tools for human beings. Ultimately(最终的), therefore, the challenges of designing hardware(计算机硬件) and software must come back to designing for human beings — all human beings. This path will be long, and it won’t be easy. But we owe it to ourselves and each other to do it right. May the open source be with you!