The source of my bemusement comes from the fact that the press uses a term one way, while the people who understand computer technology use the term a very different way. Why is it that the press, which understands almost nothing about computers, gets to define the language we as computer programmers use? It seems to me that there is a blind arrogance in the press redefining terms they didn't create in the first place.
It is especially odd when people who should know better, such as the editors at PC Week, make the same mistake. After all, upper echelon managers in the PC industry read rags like PC Week fairly avidly, and it is depressing to think that influential people should be fed such thin gruel.
So here, as an exercise in futility, is an attempt to set the record straight. I realize that in this particular case, we have gone too far down the dark road of ignorance; there is no turning back. The term hacker, used in the most pejorative sense imaginable, now decorates the covers of recent editions of Time and Newsweek. Once things have gone that far, there is little hope that the tide can be stemmed even by the most compelling arguments. Nevertheless, some readers may be interested in understanding or reviewing the original, pre-pundit, meaning of these terms, so I include a brief definition, history and discussion of them here.
Hackers are individuals who have the will and the ability to explore new areas of computer science. They are experienced programmers, often working in C/C++, who "hack" solutions to complex programming problems. Hackers, for instance, created Linux and Apache, two huge Open Source programming projects.
The people the press writes about in the Denial of Service attacks are called crackers. A cracker is a computer user who spends long hours trying to compromise the security of various computer systems. (After I first published this article, a number of people wrote me to point out that "cracker" is also a common term for people who break encryption schemes on programs, or people who distribute keys for encrypted programs.)
Hackers are, by definition, programmers. Crackers are not necessarily programmers. A hacker may or may not be interested in security issues, but there is no such thing as a cracker who is not interested in computer security. A cracker is tending his trade when he or she spends hours on the phone trying to trick someone into giving them their password. A hacker would not be hacking if they spent long boring hours on the phone doing anything, let alone trying to perpetrate a fraud. A hacker might write a security system, but then again, he or she would be just as likely, in fact even more likely, to be writing a device driver, or an email protocol or some other piece of code.
A major authority in computer lore who uses this term correctly is best selling book author and Newsweek reporter Stephen Levy. In particular, his book "Hackers" is one of the great examinations of this subject. In that book, Levy uses the word Hacker as I do here. Eric Raymond, the author of the important, and very recent, book "The Cathedral and the Bazaar," also uses the term more or less as I do. Raymond, a long time computer programmer and key participant in both the Free Software Foundation and the Open Source Movement, has a reputation that far exceeds that of most reporters working in the commercial press. In his book, Raymond says, "The beginnings of hacker culture as we know it today can be conveniently dated to 1961, the year MIT acquired the first PDP-1." Does anyone really think that the programmers at MIT in 1961 were interested in breaking into computers on the Internet? If so, they should note that the internet was not even invented in 1961.
The simple fact is that hackers and crackers are two totally different animals. Using the terms interchangeably is like using the terms surrealist and impressionist interchangeably. There is no question that the two terms are related in a very generic sense, but their actual definitions are entirely disparate. Hackers are programmers and computer experts, crackers are not necessarily programmers and their main interest is in breaking into secure computer systems.
This subject strikes a nerve with me because I have long used the term hacker in a positive sense. I, like many other programmers, refer to myself as a hacker. For some reason one doesn't want to call oneself a programmer, or a coder. There is something stiff, and overly formal about those terms. Hacker is a much more friendly, and somehow appropriate term.
My friend David Intersimone has even invented the "universal" gesture, or symbol, for hacking. Let me take a moment to explain what I mean by a "universal symbol." If someone nods their head, then people in nearly all countries know they are saying yes, while if they shake their head back and forth, that means they are saying no. If someone raises their hands in the air and shrugs their shoulders, then that means they are saying: "I don't know." A smile, is perhaps the ultimate universal gesture. It is something "everybody everywhere does in the same language." In this tradition of universally accepted gestures, David I has created a symbol for hacking. One should hunch the shoulders a bit, perhaps squint slightly, then place one's hands in front of the chest, a bit like a hamster might. The fingers should be spread out and extended in a claw like gesture that mimics the act of typing. Finally, one moves his or her hands up and down in a see-sawing motion. This exaggerated mimicking of the act of typing is the universally understood symbol for hacking -- at least in David I's lexicon.
In the last paragraph, I also use the term hacking several times. If one is writing code, then one is hacking. It is good to be hacking, it is bad to be answering mail, or writing marketing materials, or writing documentation. Hacking is an honorable thing to do, while filling in an expense report, for instance, is just a bureaucracy's way of wasting our time.
Finally, the word hacker has an especially hallowed ring in the programming community because it has always been the term used for the very best programmers. If someone has progressed past the beginning stages, past the intermediate stages, and then found a way to excel even among the very highest echelon of programmers, then he or she has truly earned the honorarium "hacker." (When I call myself a hacker, I am not using the term in this most elevated, and most highly refined, sense.) A computer guru might just be a very knowledgeable computer user, but a hacker can only be a very good programmer. He or she is among the very top echelon of programmers.
Having said all this, I have to confess that there are valid arguments on the opposite side. It pains me to admit this, but I have to confess that I have some sympathy for the reporters who so egregiously abuse the term hacker.
The most obvious defense of those who use the term "hacker" in a pejorative sense is the fact that many crackers, in an excess of hubris, label themselves "hackers." The famous cracker Kevin Minick, for instance, calls himself a hacker. And I will have to confess that his skills are formidable enough to at least give him some claim to that status. It may be true that some hackers also double as crackers, just as some JEDI knights turn to the Dark Side.
Even worse than crackers who call themselves hackers, is the strain of corporate programmer who regards hackers as amateurs. Granted, this is a relatively small group of people, but still there are programmers, and a larger group of programmer managers, who dislike the informal, highly independent ethic that surrounds the true hacker community.
These representatives of the corporate world want to believe that programmers can be tamed and controlled, and if possible, turned into interchangeable pieces in an assembly line. In an attempt to suppress the individuality and sense of pride engendered by the term hacker, these people make the spurious claim that hackers do not use professional programming techniques. They claim "hacker" is a pejorative term for people who come up with non-standard, ill-tested solutions to problems.
These unfounded aspersions, are, of course, nonsense. No one is more interested in technique and in following the best architectural principles than a true hacker. Nonetheless, the ability of one group of people to cast a shadow over the term hacker has made it somewhat easier for the press to come in and smear the term. In fact, in my more paranoid moments, I would say that corporate managers, who often have the ear of the press, deliberately used the term hacker when speaking of crackers in order to attempt to undermine the sense of pride and self-worth found in some of their most necessary, but nonetheless expensive, employees.
(In saying this, I do not mean to set up a dichotomy between corporate VPs or managers and hackers. My point is not to criticize one group or the other, but to encourage everyone not to treat anyone as an object or a "thing". If a manager tries to rob an employee of his or her humanity, he is no better or worse than an employee who uses language to do the same thing to a manager. The point is that we should all respect one another's humanity.)
Another hurdle in the fight to clear the grand name of hacker from the filth smeared on it by the press is the general problem that the computer industry has with creating a viable lexicon. Consider, for instance, the term "application server." There are, at this time, as many definitions of the term application server as their are companies who claim to make applications servers. A few years ago, the same could be said of the term client server. Years before that, the term multi-tasking was abused in a similar manner.
If we dig deeper into programming terminology, we find similar problems. For instance, what Pascal programmers call class methods are called static methods by C++ programmers. And lets not even get into the different meanings of the term static in C++, or the fact that Java programmers use the term "final" where any normal human being would say constant or "const!" And even when there is general agreement on what to call something, there are still occasions when the words that were chosen are highly suspect. For instance, I have always found the terms for passing a parameter by "reference" or by "value" to be unconscionably confusing!
Finally, one has to mention the influence of marketing departments. I can picture the struggles of a relatively non-technical reporter who tried to wrestle with Microsoft's chameleon like evolution of the term OLE into ActiveX, and finally into COM -- or was it OLE into COM and then finally into ActiveX? Can anyone possibly care? And more importantly, in the face of such nonsense, can anyone blame reporters for throwing up their hands and saying that they, if no one else, at least have some sense of the importance of language, and some ability to establish meaningful conventions and standards. As a result, they refuse to even try to dig to the bottom of the terms such as hacker, and instead will make up their own definitions, and use their power to make the definition stick!
In this article I have attempted, in the face of no-doubt insurmountable odds, to rescue the term hacker from the clutches of a voracious and ill-informed press. Recognizing that this mission is quixotic in the extreme, I ultimately settle for a more modest attempt to set the record straight for those who are perhaps baffled by the ambient noise surrounding the term hacker.
The somewhat plaintive note that I sound in several places in this text comes from my knowledge of the larger battle for human dignity that lurks in the shadows of this debate. I think, for instance, of the fate suffered by many writers over the last few hundred years. Writing is a grand profession, but there is an attempt by many editors and others to make writers into interchangeable pieces in a big machine. Nothing is more terrifying to the owner of a newspaper than the thought that a writer might rise up and gain some significant stature in the world.
Programmers face a similar challenge. Just as writers drive the press and the book industries, so do programmers drive the software industry. A lot of very rich men would be in extremely bad shape if they ran out of programmers who were willing to create their wares.
Furthermore, there is an interesting parallel between programmers and writers, since they are both often intelligent individuals with a high degree of cultural sophistication. Of course the same can be said of editors and of corporate vice-presidents. The difference between these professions, can, perhaps be found in the goals of the individuals who practice them. For the sake of maintaining the peace, I will not finish that thought, and instead allow the reader to decide what goals writers, programmers and businessmen might ultimately seek.
In the long run, we will probably find that just as some writers are treated well, and are highly respected for their work, while other writers are regarded as mere "hacks," so will some programmers continue to be highly rewarded and respected, while others will become the tools of men who have more respect for the almighty dollar than they do for the principles of engineering.
The fate apparently being suffered by the term "hacker" is just one minor chapter in the evolving story of the programming profession. But it is interesting to keep tabs on these phenomena, just so that one can find small ways to take the measure of our society -- and of the status of programmers -- as the world struggles with the rapidly evolving state of computer technology.