Excerpt from “The Grand Bazaar and the Cathedral”: How to Become a Hacker


Excerpts from “The Grand Bazaar and the Cathedral”

Here are excerpts from the Chinese versionAppendix: How to Become a Hacker
This article is by the famous open source flag bearerEric S.RaymondondBy. The English version of the book was written in 2001 and the Chinese version was published in 2014. Some of the links in this article are no longer accessible, but in order to maintain the integrity of the original text, they were put in.

The following is the original text

A.1 why did you write this article

As “hacker jargon” (Jargon File,http://www.tuxedo.org/jargon/) and the authors of several other widely circulated similar articles, I often receive e-mails from enthusiastic novice internet users, who will ask, “how can I become a hacker?” It is quite strange that I have not seen any FAQ or online articles addressing this important issue.

So I’ll write an article.

If you are reading an offline version, you can find its latest online version at this website:http://www.tuxedo.org/~esr/faqs/hacker-howto.html

Note: There is a FAQ (Frequently Asked Questions) at the end of this article. Please read it twice before sending me an email to ask questions.

A.2 what are hackers

In the “hacker jargon” article, there are a lot of definitions of the term “hacker”, most of which are related to the characteristics of “superb technology”, “keen to solve problems” and “breaking through limits”. If you want to know how to become a hacker, there are only two really important points.

For a long time, there has been a community that advocates a shared culture and its members are all programming experts and network experts. Its history can be traced back to decades ago when the first time-sharing minicomputer was born and ARPAnet was still in the earliest experimental period. Members of this community have coined the word “hacker”. Hackers have built the Internet. Hackers have created the current UNIX operating system. Hackers have run Usenet. Hackers have made WWW work.

If you are part of this culture, if you contribute to this community and other people in the community know that you are called a hacker, then you are a hacker.

Hacker spirit is not limited to software culture. People will use hacker attitude on other things, such as electronics or music. In fact, hacker spirit can be found in any science or art at its highest level. Software hackers will also call them “hackers” if they identify their peers in other fields. So some people say that hackers are actually independent of what they do.

In the rest of this article, I will focus on the technology, attitude and cultural tradition of software hackers, which gave rise to the word “hacker”.

A group of people claimed to be hackers in high profile, but they were not. The main purpose of these people (mostly young people) is to break into other people’s computers or crack the telephone system. Real hackers call them “cracker” and don’t want to talk to them at all.

Most real hackers believe that hackers are lazy, irresponsible and not very smart. If your goal is to break through the security system, it won’t make you a hacker, just like learning hotwire to start a car won’t make you a car engineer.

Unfortunately, many journalists and writers have used the word “hacker” incorrectly to describe hackers, which makes real hackers extremely dissatisfied.

The most fundamental difference between the two is that hackers engage in construction and hackers engage in sabotage.

If you want to be a hacker, please read on. If you want to be a hacker, read the alt.2600 Newsgroup (news:alt.2600). If you find yourself not as smart as you think, be prepared to go to jail 5 to 10 times. This is what I want to say to hackers.

A.3 hacker attitudes

Hackers solve problems and make things. They believe in freedom and help each other voluntarily. If you want to be recognized as a hacker, your behavior must show that you have this attitude. Of course, if you want to do this, you must really believe in this attitude.

If you regard cultivating hacker’s attitude as a way to gain acceptance of hacker culture, it is far from enough. You should really think that these attitudes are crucial to you-this will help you learn and keep warm.

Like all other creative activities, the most effective way to become a master is Taskmaster’s mode of thinking-not only intellectually but also emotionally.

So, if you want to be a hacker, repeat these things until you believe in them.

1.The world is full of fascinating problems waiting for people to solve.

Being a hacker has a lot of fun, but it is a kind of fun that requires hard work. Efforts need motivation, and the motivation of successful athletes comes from the pleasure of controlling their bodies and exceeding their past physiological limits.

Similarly, to become a hacker, you must have a basic sense of excitement about solving problems, sharpening skills and intellectual challenges.

If you are not the kind of person who is naturally sensitive to this, you need to turn yourself into this kind of person, otherwise you will find that your energy as a hacker will be slowly exhausted by distractions such as sex, money and social recognition.

You must also cultivate a confidence in your learning ability-you must believe that even if you do not have all the knowledge needed to solve a problem, if you successfully deal with a small part of it and learn from it, you will learn enough knowledge to solve the next small part-so on and on, you will eventually solve the whole problem.

2.Don’t solve a problem twice.

Creative minds are extremely precious and limited resources. They should not be wasted on such things as reinventing the wheel, especially when there are so many fascinating new problems waiting there.

To be like a hacker, you must believe that the thinking time of other hackers is very precious-it is so precious that it is almost your moral obligation to share information, solve problems and give solutions to other hackers, so that other hackers can solve new problems instead of solving old problems endlessly.

You don’t have to feel that you have an obligation to contribute all creative products, although hackers who do this can gain the greatest respect from other hackers. Selling software in exchange for food, rent and computers does not violate hacker values. It is not important to use your hacker skills to support your family or even make a fortune. As long as you do this, don’t forget your loyalty to your ideals and your hacker friends.

3.Boredom and boredom are harmful.

Hackers (and creative people) should never feel bored or do boring and stupid repetitive work. If this happens, it means they have not done what only they can do-solve new problems. This kind of waste will hurt everyone, boredom and boredom are not only bad, but also harmful.

To be a hacker, you must believe this very much and hope to automate as many boring things as possible, not only for yourself but also for others (especially other hackers).

There is an obvious exception to this: hackers sometimes do things that outsiders seem to repeat or uninteresting, but in fact they do so only to clear their brains, or to acquire certain skills, or to acquire some experience that cannot be acquired under other circumstances. Note that this is voluntary-no one with ideas should be forced to do things that they feel boring.

4.Freedom is a good thing.

Hackers are inherently anti-authoritative. If someone can order you, he can prevent you from doing what you especially want to do-and if you explore the thinking of authoritative people, you will find that their reasons are often horribly stupid. Therefore, no matter where authoritarianism appears, you must fight against it to prevent them from oppressing you and other hackers.

This is not to say that we have to fight against all power. Children need adult guidance and criminals need mandatory detention. Hackers should accept some kind of power. Although it takes them some time to obey orders, they get more things they want. This is a kind of controlled and rational negotiation, and is by no means the kind of personal compliance that the authorities want.

Abusers of authority are strong through censorship and confidentiality. They do not trust voluntary cooperation and information sharing-they only like “cooperation” under their control. To behave like a hacker, you must have an intuitive aversion to censorship, confidentiality, and the use of force or deception, and you must be willing to fight against them.

5.Attitude cannot replace ability.

To become a hacker, you must develop these attitudes. But attitude alone will not make you a hacker, just as attitude alone will not make you a champion athlete or rock star. To be a hacker, you need wisdom, practice, devotion and hard work.

Therefore, you must learn to be skeptical and respect every ability. Hackers will not let pretenders waste their time. Hackers admire their ability-especially, but not limited to, their ability to do anything is good. The technical ability that only a few people can control is especially good, while the technical ability that requires sharp thinking, strong hands-on ability and concentrated attention is the best.

If you value ability, you will have fun in hands-on development-hard work and devotion will become intense competition rather than hard work. If you want to grow into a hacker, this is crucial.

A.4 basic skills of hackers

For hackers, attitude is important, but skills are more important. Attitude is not a substitute for ability, there are some specific basic skills that you must master, otherwise no hacker is willing to call you “hacker”.

These basic skills will change slowly over time because technological progress will produce new skills and eliminate old ones. For example, it used to include machine language programming instead of HTML. However, at present, it is obvious that the basic skills include the following aspects.

1.Learn how to program.

This is, of course, a basic hacking skill. If you don’t know any computer language, I suggest starting with Python. It is clean and tidy in design, well documented and friendly to beginners. As a good introduction language, it is not a toy at the same time. It is very powerful and flexible, and it is completely suitable for large-scale projects. I have written a more detailed evaluation on it.http://noframes.linuxjournal.com/lj-issues/issue73/3882.html. Its tutorials can be found on Python’s website.http://www.python.org. Java is also a good language for learning programming. It is harder than Python, but it can produce faster code than Python. I think it can be an excellent second language.

But note that if you only know one or two languages, then you will not reach the skill level of hackers, not even programmers-you need to learn to think about programming in a general way that is independent of any language. To be a real hacker, you need to reach such a level that you can connect what is in the manual with what you already know so that you can learn a new language in a few days.

This means that you need to learn several very different languages.

If you want to enter the real programming field, you must learn C, which is the core language of UNIX. C++ and C are closely related; If you know one, it won’t be too difficult to learn the other. However, neither of these two languages is a good introduction language.

Other languages that are more important to hackers are Perl (http://www.perl.com) and LISP (http://snaefell.tamu.edu/~colin/lp/)。 Perl is worth learning because of its practicality. It is widely used in dynamic web pages and system management, so even if you never write Perl, you should learn how to read it.

LISP is also worth learning. When you finally master it, you will get a deep and thorough experience, which will make you a better programmer in the future, even if you don’t use it very much in practice.

In fact, it is best to learn all five languages (Python, Java, C/C++, Perl and LISP). They are not only the most important hacker languages, but also represent completely different programming methods, each of which will greatly benefit you.

I can’t give complete guidance on how to learn programming here-it’s a complicated skill. But I can tell you, books and courses can’t do it either (many hackers, perhaps most hackers, are self-taught). You can learn language features from books, but that is only skin deep. You can only acquire the thinking mode of transforming knowledge into skills through practice and following masters. The practice is to read and write the code.

Learning programming is like learning how to write natural language well. The best way is to read what the masters have written, then write your own things, read more, write more, read more, write more … so on and on until what you write begins to develop the strength and conciseness you experience in the classics.

It was not easy to find some good code to read before, because few large projects will be provided to the growing hackers in the form of source code for reading and practicing. Now this situation has changed dramatically. Open source software, open source programming tools, and open source operating systems (all written by hackers) are everywhere. This brings us to the next topic.

2.Find an open source UNIX and learn to use and run it.

Suppose you have a PC or a PC that you can use (children are really happy today:-). For any novice, the most important step to acquire hacker skills is to create a Linux or BSD-UNIX, install it on a personal machine, and then run it.

Yes, there are other operating systems in the world except UNIX, but they are all issued in binary-you have no code to read and no code to change. Trying to learn hacker skills under DOS or Windows or MacOS is like learning to dance in plaster.
Moreover, UNIX is the operating system of the Internet. If you don’t know UNIX, you can learn to use the Internet, but you won’t become a hacker on the Internet.

Therefore, to a large extent, today’s hacker culture is UNIX-centered. (Not always, some veteran hackers are still dissatisfied with this, but the symbiotic relationship between UNIX and the Internet is so close that even with Microsoft’s energy, it is impossible to really shake it. )

So, find a UNIX-I personally like Linux, but there can be other things (yes, you can run both Linux and DOS/Windows on the same machine). Learn it, run it, play games with it, use it to talk to the internet, read its code, change its code. You will get many times better programming tools (including C, LISP, Python and Perl) than Microsoft operating system. You will enjoy it. You will absorb more knowledge than you realized at that time. When you become a hacker, you will understand.

For more information on how to learn UNIX, see Loginataka (http://www.tuxedo.org/~esr/faqs/loginataka.html) ,

See “where can i get Linux” (http://linuxresources.com/apps/ftp.html)。
Inhttp://www.bsd.orgHelp and resources for BSD UNIX can be found.

Note: If you are a novice, I really don’t recommend you to play Linux or BSD alone. For Linux, find a local Linux user group and ask for help, or you can find LISC (Linux Internet Support Co-operative.http://www.linpeople.org), LISC maintains the IRC channel.http://openprojects.nu/services/irc.htmlWhere can you get help?

3.Learn how to use WWW and write HTML.

Most of the things made by black guest culture are invisible. These things help factories, offices and universities to operate, but have no obvious impact on the life of non-hacker groups.

The Web is a big exception. Even politicians admit that this huge and glittering hacker toy is changing the world. For this reason alone (of course, there are many other benefits) you also need to learn how to master the Web.

This is not just to say that you should learn how to use a browser (anyone can do this), but to learn how to use HTML, the Web markup language. If you don’t know how to program, writing HTML can teach you some thinking habits, which will help you learn programming. So, first write a home page.

But having a home page is far from making you a hacker. Homepages are everywhere on the Internet, but most of them are meaningless and meaningless mud-they are flashy and vulgar, trying to attract your attention, but mud is mud after all (more content can be found in HTML Hell Page:http://www.tuxedo.org/~esr/ht …) 。

To be valuable, your web page must have content-it must be interesting and/or useful to other hackers, which brings us to the next topic …

A.5 status in hacker culture

Like most cultures that do not involve money, hacker culture depends on reputation.

You are trying to solve some interesting problems, but how interesting the problem is and how good your plan is are judged by your technical colleagues or superiors.

Accordingly, in the hacker game, you should know that your score comes mainly from the evaluation of your technology by other hackers (this is why you are a hacker only when other hackers call you a hacker).

The reason why this fact is relatively hidden is that hackers always give people the image of working independently, and it is also due to a taboo in hacker culture (although it gradually weakens, it is still very strong): hackers think that one should not mix “self” or “external evaluation” factors into one’s motivation.

Specifically, hacker culture is what anthropologists call gift culture. The reason why you get the status and honor is not to dominate others, not to be beautiful, not to have what others want, but to give more. In particular, give your time, give your creativity and give results that reflect your skills.

Basically, doing the following five things will make you respected by other hackers:

1.Write open source software.

The first thing (the most core and traditional) is to write programs that other hackers think are interesting or useful, and then publish the source code of the programs to the whole hacker culture. (We used to call these works “free software”, but this confused too many people, and people were not sure what “free” was really trying to say. Now, many of us prefer to call it “open source software”,http://www.opensource.org/. )

In the hacker circle, the most respected idols are people who have written large programs that can meet a wide range of needs and contributed them so that anyone can use them.

2.Assist in testing and debugging open source software.

Hackers also respect those who debug open source software. In this imperfect world, we inevitably spend a lot of time in the debugging phase during the software development process.

This is why any open source author will tell you after a little thought that good beta testers are extremely precious (they will clearly describe symptoms, well locate problems, tolerate bugs in earlier versions, and are willing to use some simple diagnostic routines). For some people, the debugging process may be a long and hard nightmare, while for good testers, it may only be a cleaning process beneficial to the program.

If you are a novice, try to find a program that is under development and that you are interested in, and try to be a good beta tester. It is a natural process from helping to test, to helping to correct mistakes, and then to helping to revise them. You will learn a lot from it. Moreover, good deeds will be rewarded with good deeds, and others will be willing to help you in the future.

3.Publish useful information.

Another good thing is to collect and filter the useful and interesting information, put them on the web page or documents like FAQ list, and make them easy for people to see.

Technical FAQ maintainers will even receive the same respect as open source authors.

4.Help to do some basic work.

The hacker culture (and the development of the Internet) is driven by volunteers. There are many necessary but unattractive tasks to be done by someone-managing mailing lists, hosting newsgroups, maintaining large software libraries, proposing RFC and other technical standards, etc.

People who do this kind of work well will get a lot of respect, because everyone knows that these jobs will take a lot of time and are not as interesting as playing with code. Doing these things reflects dedication.

5.Service hacker culture itself.

Finally, you can serve and promote the hacker culture itself, for example, writing an accurate introductory tutorial on “how to become a hacker:-). This does not require you to stay in this circle for a long time and become famous for one of the above four things.

There is no doubt that hacker culture has no leaders. But it does have cultural heroes, tribal elders, historians and spokesmen. If you stay in this trench long enough, you may become one of them.

Remember: hackers don’t trust tribal elders to show off themselves. It is dangerous to pursue this reputation openly. Instead of fighting hard for this, it is better to straighten out your position, wait for fame to come, and then remain humble and elegant to your position.