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.
Hackers sparked the open source revolution
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.
So, who are these hackers?
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.
The hacker attitude
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:
- Access to computers — and anything that might teach you something about the way the world works — should be unlimited and total. Always yield to the Hands-On Imperative! Hackers believe that essential lessons can be learned about the systems — about the world — from taking things apart, seeing how they work, and using this knowledge to create new and even more interesting things. They mostly resent any person, physical barrier, or law that tries to keep them from doing this.
- All information should be free. If you don’t have access to the information you need to improve things, how can you fix them? A free exchange of information, particularly when the information is in the form of a computer program, allows for greater overall creativity.
- Mistrust authority — promote decentralisation. The best way to promote this free exchange of information is to have an open system, with no boundaries between hackers and a piece of information, or an item of equipment that they need in their quest for knowledge, and their time online. The last thing they need is a bureaucracy, whether in the corporate world, in government, or at university. Bureaucracies are flawed systems, dangerous in that they cannot accommodate the exploratory impulses of true hackers. Bureaucrats hide behind arbitrary rules (as opposed to the logical algorithms by which machines and computer programs operate): they invoke those rules to consolidate their own power, and perceive the constructive impulse of hackers as a threat.
- Hackers wish to be judged by their hacking, not bogus criteria such as degrees, age, race, or position. Hacker cultures are meritocracies, where positions are based on demonstrated knowledge and achievements. Hackers care less about people’s superficial characteristics than they do about their potential to advance the general state of hacking, to create new programs to admire, to talk about new features in the system, etc.
- You can create art and beauty on a computer. Hackers deeply appreciate innovative techniques that allow programs to perform complicated tasks with a few instructions. A program’s code is considered “beautiful” in its own right, having been carefully composed and artfully arranged. Learning to create programs that used the least amount of space almost became a game between early hackers.
- Computers can change your life for the better. This belief is subtly manifest. Rarely will hackers try to impose their view of the myriad advantages of the computer way of knowledge to an outsider. Yet, this premise dominates the everyday behaviour of hackers. For sure, the computer has changed their lives, given it a focus, enriched it, while making it more adventurous. It has made hackers masters of a certain slice of the world. Since all this is so obvious to hackers themselves, they believe that surely everyone could benefit from experiencing this power. Surely everyone could benefit from a world based on the Hacker Ethic. This is the implicit belief of hackers, and they irreverently go beyond what is conventionally expected of computers — leading the world to a new way of looking at and interacting with computers.
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.
The hacker attire
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.
How to become a hacker
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.
So are you a 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!
- How to Become a Hacker, an essay by Eric Steven Raymond
- Hackers: Heroes of the Computer Revolution, by Steven Levy
- The Daemon, the GNU, and the Penguin, by Peter H. Salus
- OpenSources, by Chris DiBona, Sam Ockman and Mark Stone
- The New Hacker’s Dictionary, by Eric S Raymond, MIT Press
- Biopunk: DIY Scientists Hack the Software of Life, by Marcus Wohlsen