[Ceci est la traduction, réalisée le 23 Nov 1997, du texte original d'Eric S. Raymond, daté du 07 Nov 1997. La version originale (en anglais, et peut-être plus à jour) de ce document se trouve à l'URL http://www.ccil.org/~esr/faqs/hacker-howto.html.]
Il existe une communauté, une culture partagée, de programmeurs expérimentés et de spécialistes des réseaux, dont l'histoire remonte aux premiers mini-ordinateurs multi-utilisateurs, il y a quelques dizaines d'années, et aux premières expériences de l'ARPAnet [le réseau connu aujourd'hui sous le nom d'Internet, NDT]. Les membres de cette culture ont créé le mot ``hacker''. Ce sont des hackers qui ont créé l'Internet. Ce sont des hackers qui ont fait du système d'exploitation Unix ce qu'il est de nos jours. Ce sont des hackers qui font tourner les newsgroups Usenet et le World Wide Web.
Si vous faites partie de cette culture, si vous y avez contribué et si d'autres personnes qui en font partie savent qui vous êtes et vous considèrent comme un hacker, alors vous êtes un hacker.
L'état d'esprit d'un hacker ne se réduit pas à cette culture des hackers du logiciel. Il y a des gens qui appliquent l'attitude du hacker à d'autres domaines, comme l'électronique ou la musique. En fait, on trouve cet esprit à l'état le plus avancé dans n'importe quel domaine de la science ou des arts. Les hackers du logiciels reconnaissent cette similitude d'esprit, et certains affirment que la nature même du hacker est indépendante du domaine particulier auquel le hacker se consacre réellement. Mais dans la suite de ce document, nous nous concentrerons sur les aptitudes et les attitudes des hacker du logiciel, et sur les traditions de la culture partagée qui a créé le terme ``hacker''.
NB: il y a un autre groupe de personnes qui s'autoproclament des ``hackers'', mais qui n'en sont pas. Ces gens (principalement des adolescents de sexe masculin) prennent leur pied en s'introduisant à distance dans les systèmes informatiques et en piratant les systèmes téléphoniques. Les vrais hackers appellent ces gens des ``crackers'' et ne veulent rien avoir à faire avec eux. Les vrais hackers pensent que les crackers sont des gens paresseux, irresponsables, et pas très brillants. Malheureusement, de nombreux journalistes se sont laissé abuser et utilisent le mot ``hacker'' quand ils devraient utiliser le mot ``cracker''. Cela ne lasse pas d'irriter les vrais hackers.
La différence fondamentale est la suivante: les hackers construisent des choses, les crackers les cassent.
Si vous voulez devenir un hacker, alors continuez cette lecture. Si vous voulez devenir un cracker, allez lire le newsgroup alt.2600, c'est tout ce que j'ai à en dire.
Mais si vous pensez qu'adopter l'attitude d'un hacker n'est qu'un moyen pour être accepté dans la culture des hackers, alors vous avez raté le point essentiel: il faut croire à ces principes pour en tirer la motivation personnelle pour continuer à apprendre. Comme pour tous les arts créatifs, la façon la plus efficace de devenir un maître est d'imiter l'état d'esprit des maîtres -- non seulement intellectuellement mais aussi émotionnellement.
Donc, pour devenir un hacker, répétez les phrases suivantes jusqu'à y croire réellement:
Si pour vous cette façon de penser n'est pas naturelle, il faut qu'elle le devienne si vous voulez devenir un hacker. Autrement, vous allez découvrir que votre énergie va se disperser dans des distractions comme le sexe, l'argent ou la reconnaissance sociale.
(Vous devez également développer une certaine foi en votre propre capacité d'apprentissage: même si vous ne savez pas tout ce qu'il faut pour résoudre un problème, si vous en traitez seulement une partie et que vous en apprenez quelque chose, alors vous allez réussir à traiter la partie suivante, et ainsi de suite jusqu'à ce que le problème soit résolu.)
Pour vous comporter comme un hacker, vous devez vous convaincre que le temps de pensée des autres hackers est précieux, à tel point que c'est pour vous une obligation morale de partager vos informations, de résoudre des problèmes et d'en donner les solutions pour que les autres hackers puissent résoudre de nouveaux problèmes au lieu de perpétuellement revenir sur les mêmes.
(Il n'est pas nécessaire de vous croire obligé de donner toute votre production créative, bien que les hackers les plus respectés soient ceux qui le font. Il est tout à fait compatible avec les valeurs des hackers d'en vendre une partie suffisante pour payer sa nourriture, son loyer et ses ordinateurs, d'entretenir une famille et même de devenir riche, à condition de ne jamais oublier que vous êtes un hacker pendant tout ce temps.)
Pour se comporter comme un hacker, vous devez vous en convaincre suffisamment pour automatiser les parties ennuyeuses de votre travail, non seulement pour vous-même mais aussi pour tous les autres (et particulièrement les autres hackers).
(Il y a une exception apparente à cette règle: un hacker va parfois faire des choses qui semblent répétitives ou ennuyeuses à un observateur pour se vider l'esprit, ou pour acquérir une nouvelle compétence, ou pour faire une expérience particulière. Mais c'est toujours par choix: une personne capable de penser ne devrait jamais être forcée à faire un travail ennuyeux.)
(Ce n'est pas la même chose que de combattre toute forme d'autorité. Les enfants ont besoin d'être guidés, et les criminels d'être arrêtés. Un hacker peut accepter de se soumettre à une certaine forme d'autorité pour obtenir quelque chose qu'il désire plus que le temps perdu à suivre les ordres. Mais c'est un marchandage limité, conscient. Une soumission totale à une autorité donnée est hors de question.)
Les autoritaristes se nourrissent de censure et de secrets. Et ils se méfient de l'entraide mutuelle et du partage d'informations. Ils n'apprécient la ``coopération'' que quand ils peuvent la contrôler. Donc, pour vous comporter comme un hacker, vous devez développer une hostilité instinctive vis-à-vis de la censure, du secret et de l'usage de la force ou de la ruse pour dominer des adultes responsables. Et vous devez vous tenir prêt à agir conformément à cette conviction.
Par conséquent, vous devez apprendre à vous méfier des attitudes et à respecter les compétences, quelles qu'elles soient. Les hackers ne se laissent pas impressionner par les poseurs, mais ils apprécient les compétences, particulièrement les compétences de hackers, mais aussi toutes les autres. Les compétences dans les domaines exigeants maîtrisées par une élite sont particulièrement appréciées, et plus particulièrement celles qui nécessitent un esprit perçant et une grande concentration.
Si vous respectez la compétence, alors vous aimerez travailler à vous améliorer sans cesse, et celà sera plus un plaisir qu'une routine. C'est vital pour devenir un hacker.
Cet ensemble change lentement au cours du temps, au fur et à mesure que l'évolution technologique crée de nouvelles compétences et en rend d'autres obsolètes. Par exemple, à une certaine époque il convenait de savoir programmer en assembleur, et il n'était pas question, jusqu'à une date récente, de HTML.
En tout état de cause, il est clair que cela inclut, fin 1996:
A part le C, vous devez également apprendre LISP [ou scheme, NDT] et Perl [ou Python, NDT], et Java aura bientôt sa place également dans la liste. En plus d'être les langages les plus pratiqués par les hacker, ils représentent chacun une approche très différente de la programmation, et contribueront de façon très sensible à votre éducation.
Je ne peux pas vous donner un cours complet sur ``comment apprendre à programmer'', c'est quelque chose de très complexe. Mais je peux vous dire que les livres et les cours ne suffisent pas (la plupart des meilleurs hackers sont autodidactes). Ce qu'il faut, c'est (a) lire du code et (b) écrire du code.
Apprendre à programmer, c'est comme apprendre à écrire correctement dans un langage humain. La meilleure façon d'y arriver, c'est de lire des trucs écrits par des maîtres, d'en écrire un peu, d'en lire beaucoup plus, d'en écrire un peu plus, etc. jusqu'à ce que vous arriviez à écrire avec la même force et la même économie de moyens que vos modèles.
Trouver du bon code à lire a longtemps été difficile, parce qu'il y avait très peu de gros programmes disponibles sous forme de sources pour que les apprentis hacker puissent les lire et les étudier. Heureusement, cette situation a évolué, et maintenant des logiciels libres, des outils de programmation libres et des systèmes d'exploitation libres (tous disponibles sous forme de sources, tous écris par des hackers) sont maintenant très faciles à trouver. Cela nous ammène directement à notre sujet suivant...
Bien sûr, il y a d'autres systèmes d'exploitation dans le monde à part Unix. Le problème, c'est qu'ils sont distribués sous forme de binaires. Vous ne pouvez pas lire le code, et encore moins le modifier. Apprendre à hacker sur une machine DOS ou Windows, ou sous MacOS, c'est comme d'apprendre à danser en étant plâtré des pieds à la tête.
En plus, Unix est le système d'exploitation de l'Internet. On peut apprendre à utiliser l'Internet sans connaître Unix, mais on ne peut pas être un hacker de l'Internet sans le comprendre. C'est pour cette raison que la culture des hackers est à l'heure actuelles fortement Unix-centrique. (Ce n'a pas été toujours le cas, et quelques hackers âgés regrettent cet état de fait, mais la symbiose entre Unix et l'Internet est devenue suffsamment forte pour que même Microsoft semble s'y casser les dents.)
Donc, installez un Unix (j'aime bien personnellement Linux mais d'autres choix sont possibles). Apprenez-le. Faites-le touner. Parlez à l'Internet avec. Lisez le code. Modifiez le code. Vous trouverez de meilleurs outils de programmation (y compris C, Lisp, Perl) que sous n'importe quel système d'exploitation de Microsoft, vous vous amuserez, et vous en tirerez plus de connaissances que ce que vous avez l'impression d'apprendre, jusqu'à ce que vous deveniez un vrai maître hacker. Pour en savoir plus sur comment apprendre Unix, voir The Loginataka.
Pour obtenir Linux, voir Where To Get Linux [En françaix, allez voir sur Freenix, au Loria ou, pour plus de pointeurs, sur le Linux Center, NDT].
Cela ne signifie pas seulement apprendre à utiliser un browser [navigateur, butineur..., NDT], mais aussi apprendre à écrire en HTML, le langage de balisage du Web. Si vous ne savez pas programmer, le fait d'écrire en HTML vous apprendra quelques habitudes mentales qui vous aideront à démarrer. Donc, faites-vous une home page [page-maison?, NDT].
Mais ce n'est pas seulement d'avoir une home page qui fera de vous un hacker. Le Web est plen de home pages. La plupart sont d'un intérêt absolument nul, parfois jolies à regarder mais nulles quand même (pour plus d'information voir The HTML Hell Page).
Pour être utile, votre page doit avoir du contenu. Elle doit être intéressante et/ou utile pour les autres hackers. Cela nous conduit à notre sujet suivant...
Par conséquent, si vous jouez le jeu du hacker, vous apprenez le score principalement à partir de ce que les autres hackers pensent de vos capacités, et c'est pour ça que l'on n'est vraiment un hacker que lorsque les autres hackers vous considèrent comme tel. Ce fait est obscurci par l'image du hacker comme un travailleur solitaire, aussi bien que par un tabou de la culture des hacker (qui s'estompe progressivement mais qui reste présent): le fait d'admettre qu'une partie de sa motivation vient de son ego ou de la recherche d'une acceptation externe.
De façon spécifique, le monde des hacker constitue ce que les anthropologues appellent une culture du don. On obtient un statut ou une réputation non pas en dominant les autres, en étant beau, ou en possédant des choses que les autres désirent, mais en faisant des dons: de son temps, de sa créativité, du résultat de ses compétences.
Il y a principalement cinq types de choses à faire pour être respecté par les hackers:
Les ``demi-dieux'' les plus respectés dans l'univers des hackers sont ceux qui ont écris des programmes importants, utiles, qui correspondent à un besoin répandu, et qui en ont fait don à la communauté, de sorte que maintenant tout le monde s'en sert.
Si vous êtes un débutant, essayez de trouver un programme en cours de développement qui vous intéresse et de devenir un bon béta-testeur. C'est une progression naturelle que de commencer par aider à tester des programmes, puis d'aider à les débugger, puis d'aider à les modifier. Vous apprendrez beaucoup de cette façon, et vous vous ferez un bon karma par rapport à des gens qui vous aideront plus tard.
Les personnes qui maintiennent les FAQs techniques les plus importantes sont presque autant respectées que les auteurs de logiciels libres.
Les gens qui font ce genre de choses sont très respectés, parce que tout le monde sait que c'est un boulot qui demande énormément de temps et qui n'est pas aussi drôle que de jouer avec du code.
La culture des hackers n'a pas de chefs, au sens précis du terme, mais elle a des héros, des historiens et des porte-parole. Quand vous aurez été dans les tranchées pendant assez longtemps, vous pourrez peut-être devenir l'un de ceux-ci. Mais attention: les hackers se méfient des egos surdimensionnés chez les anciens de leur tribu. Il faut donc éviter de montrer ouvertement que l'on recherche à obtenir ce genre de célébrité. Il vaut mieux faire en sorte qu'elle vous tombe toute cuite dans votre assiette, et toujours rester modeste à sujet de votre statut.
C'est pour cette raison que de nombreux hackers ont adopté l'étiquette ``nerd'' et utilisent même le terme plus cru de ``geek'' comme un insigne honorifique; c'est une façon de déclarer leur indépendance vis-à-vis des attentes normales de la vie sociale. Voir The Geek Page pour une discussion exhaustive.
Si vous arrivez à vous concenter suffisamment sur le hack pour y exceller et vivre votre vie par ailleurs, tant mieux. C'est beaucoup plus facile à présent que lorsque j'étais un débutant. La culture dominante est beaucoup plus tolérante de nos jours vis-à-vis des techno-nerds. Il y a même un nombre croissant de gens pour penser que les hackers forment un matériel de premiers choix en tant que petit(e) ami(e) / mari / femme. (Consultez par exemple Girl's Guide to Geek Guys.)
Si vous voulez devenir un hacker parce que vous n'avez pas de vie privée, pas de problème: au moins il n'y aura rien pour vous empêcher de vous concentrer. Et vous finirez peut-être par en avoir une un jour.
Pour finir, une liste de choses à ne pas faire:
Le Loginataka [en anglais, NDT] parle un peu de l'entraînement et de l'attitude du hacker Unix.
J'ai également écrit A Brief History Of Hackerdom [Une Brève histoire de la culture des hacker, NDT].
Peter Seebach maintient une excellente Hacker FAQ pour les cadres qui ne comprennent pas comment se comporter avec des hackers.
J'ai écris un papier, The Cathedral and the Bazaar, qui explique comment fonctionne la culture de Linux. Voir la page de mes écrits.
Et même si je le faisais, être un hacker est une attitude et une compétence que l'on doit essentiellement apprendre par soi-même. Vous verrez que même si les vrais hackers sont prêts à vous aider, ils ne vous respecteront pas si vous les suppliez de vous transmettre tout ce qu'ils savent à la petite cuillère.
Commencez par apprendre deux ou trois choses. Montrez que vous essayez, que vous êtes capable d'apprendre par vous-même. Ensuite, vous pourrez aller voir les hacker avec des questions.
Si vous voulez commencer à programmer, je vous conseille de commencer par Perl ou par Python. Le C est vraiment important, mais beaucoup plus difficile.