Texte original copyright © 2001 Eric S. Raymond
Dernière modification : 2011-04-14, sur base de la révision 1.43 de l'original
"How To Become A Hacker" d'Eric Steven Raymond est un document qui a su s'imposer avec les années et la qualité comme référence de ce qu'il est bon de faire ou ne pas faire pour s'intégrer au mouvement hacker. Cependant, plus de dix ans après la publication de sa première version, il n'en existait toujours pas sur le Web de traduction française. C'est pourquoi, afin de combler ce manque, je me suis attelé à la tâche avec un succès dont seul le lecteur peut juger.
Certains pourraient opposer à cette démarche de traduction que l'anglais étant de toute façon la langue de l'informatique, et la langue internationale, sa maîtrise est indispensable à la maîtrise des connaissances et savoir-faires liés au hacking. Il me semble absurde qu'une langue soit un obstacle à la lecture d'un document conseillant son apprentissage. Ce serait un peu comme supprimer les classes préparatoires aux examens des grandes écoles.
Bien entendu, il m'a fallu prendre quelques libertés stylistiques par-rapport au texte originel, même si j'ai essayé de me tenir autant que possible à la structure et aux expressions employées par l'auteur. Je ne peux cependant pas décemment éluder un certain vocabulaire anglicisé qui est le jargon propre à l'informatique, de même que certains passages méritaient une annotation quant à la traduction ; les considérations sémantiques sur "free software" par-rapport à "open-source software" par exemple n'ont pas lieu d'être en français puisque l'expression "logiciel libre" est sans équivoque.
L'auteur s'étant exprimé à la première personne, je respecte son style et la traduction est également à la première personne. Ne perdez donc pas de vue qu'à partir de la section suivante, mises à part les notes entre parenthèses commençant par "NdT", les propos sont ceux d'Eric Steven Raymond, pas ceux de Jean-Karim Bockstael, et n'engagent ainsi que ce premier.
Tout commentaire, ou correction est à formuler par e-mail à jkb@jkbockstael.be. Cependant, la traduction se voulant fidèle à l'original, je n'ajouterai pas de contenu qui ne soit pas dans l'original.
En tant qu'éditeur du Jargon File et auteur de quelques autres documents connus de nature similaire, j'obtiens souvent de débutants internautes enthousiastes des e-mails me demandant (dans le fond) "comment puis-je apprendre à devenir un hacker érudit ?". A l'époque, en 1996, j'ai constaté qu'il ne semblait exister aucun autre FAQ ou document sur le Web qui réponde à cette question vitale, donc j'ai démarré celui-ci. Beaucoup de hackers le considèrent à présent abouti, et je suppose que cela signifie qu'il l'est. Cependant, je ne prétends pas être l'autorité exclusive sur ce sujet ; si vous n'aimez pas ce que vous lisez ici, écrivez le vôtre.
Si vous lisez un instantané de ce document hors-ligne, la version actuelle réside à http://files.jkbockstael.be/hacker-howto-fr.html (NdT : l'original se trouve à http://catb.org/~esr/faqs/hacker-howto.html).
Note : il y a une liste de questions fréquemment posées à la fin de ce document. Veuillez les lire — deux fois — avant de m'écrire pour me poser une question à propos de ce document. (NdT : les questions quant au fond sont à adresser, en anglais bien sûr, à esr@thyrsus.com ; les questions quant à la version française sont à adresser à jkb@jkbockstael.be)
De nombreuses autres traductions de ce document sont disponibles : Arabe, Bulgare, Catalan, Chinois (simplifié), Danois, Néerlandais, Estonien, Farsi, Finnois, Allemand, Grec, Hébreu, Italien, Japonais, Norvégien, Polonais, Portugais (Brésilien), Roumain, Russe, Espagnol, Turc et Suédois. Notez que puisque ce document change souvent, elles peuvent être dépassées à différents degrés.
Le diagramme de cinq cercles dans neuf carrés qui décore ce document est appellé un planeur. C'est un motif simple aux propriétés surprenantes dans une simulation mathématique appelée Jeu de la vie qui a fasciné les hackers depuis de nombreuses années. Je pense que cela fait un bon emblème visuel pour ce que les hackers sont — abstrait, semblant mystérieux, mais une porte vers un monde entier avec une logique complexe à soi. Vous pouvez en lire plus à propos du planeur comme emblème ici.
Si vous trouvez que ce document a de la valeur, veuillez me laisser un don sur Gittip. Pensez aussi à donner à d'autres hackers qui ont produit du code que vous utilisez et appréciez. Beaucoup de petites contributions s'ajoutent vite les unes aux autres, et peuvent permettre à ceux qui vont ont offert leur travail de créer de la valeur. (NdT : Il s'agit là du compte Gittip de l'auteur, pas du traducteur ; je ne réclame ou ne souhaite aucun don)
Le Jargon File contient une poignée de définitions du terme "hacker", la majorité ayant trait à la compétence technique et une joie à résoudre des problèmes et vaincre des limites. Si vous voulez savoir comment devenir un hacker, cependant, seule deux sont vraiment pertinentes.
Il y a une communauté, une culture commune, d'experts programmeurs et d'érudits des réseaux dont l'histoire remonte plusieurs décennies jusqu'aux premiers mini-ordinateurs à temps partagé et aux premières expériences d'ARPAnet. Les membres de cette culture sont à l'origine du terme "hacker". Des hackers ont construit l'Internet. Des hackers ont fait du système d'exploitation Unix ce qu'il est aujourd'hui. Des hackers alimentent Usenet. Des hackers font fonctionner le World Wide Web. Si vous faites partie de cette culture, si vous y avez contribué, et si d'autres personnes en son sein savent qui vous êtes et vous disent hacker, vous êtes un hacker.
La mentalité d'un hacker n'est pas confinée à cette culture des hackers-programmeurs. Il y a des gens qui appliquent l'attitude du hacker à d'autres domaines, tels que l'électronique ou la musique — en fait, on en trouve aux plus hauts niveaux de toute science ou art. Les hackers de logiciels reconnaissent ces esprits ailleurs et peuvent les appeler "hackers" aussi — et certains affirment que la nature du hacker est en fait indépendante du médium particulier sur lequel il travaille. Mais dans le reste de ce document, nous porterons notre attention sur les compétences et attitudes des hackers de logiciels, et sur les traditions de la culture d'où a émergé le terme "hacker".
Il y a un autre groupe de gens qui prétendent être hackers, mais n'en sont pas. Ce sont ces gens (principalement des adolescents mâles) qui s'amusent à infiltrer des ordinateurs ou abuser du système téléphonique. Les vrais hackers appellent ces gens des "crackers" et ne veulent rien avoir à faire avec eux. Les vrais hackers pensent pour la plupart que les crackers sont paresseux, irresponsables, et pas vraiment brillants, et objectent que savoir briser une sécurité ne fait pas plus de vous un hacker que savoir démarrer aux fils une voiture ne fait de vous un ingénieur en automobile. Malheureusement, beaucoup de journalistes et d'écrivains ont commis l'erreur d'utiliser le mot "hacker" pour décrire des crackers ; ceci irrite au plus haut point les vrais hackers.
La différence de base est celle-ci : les hackers construisent des choses, les crackers les cassent.
Si vous voulez devenir un hacker, continuez à lire. Si vous voulez devenir un cracker, allez lire le groupe alt.2600 et soyez prêt à déchanter en découvrant que vous n'êtes pas aussi malin que vous croyez l'être. Et c'est tout ce que je dirai à propos des crackers.
Les hackers résolvent des problèmes et construisent des choses, et ils croient en la liberté et en l'entraide volontaire. Pour être accepté en tant que hacker, vous devez vous comporter comme si vous aviez cette attitude vous-même. Et pour agir comme si vous aviez cette attitude, vous devez réellement y croire.
Mais si vous pensez cultiver une attitude uniquement comme moyen d'obtenir l'acceptation de cette culture, vous vous fourvoyez. Devenir le genre de personne qui croit en ces choses est important pour vous — pour vous aider à apprendre et vous maintenir motivé. Comme pour tous les arts créatifs, le moyen le plus efficace de devenir un maître est d'imiter la mentalité des maîtres — pas seulement intellectuellement mais aussi émotionnellement.
Ou, comme le dit le poème Zen moderne suivant :
Pour suivre la voie :
regarde le maître,
suis le maître,
marche avec le maître,
vois au-travers du maître,
deviens le maître.
Donc, si vous voulez devenir un hacker, répétez les choses suivantes jusqu'à les croire :
Etre un hacker est très amusant, mais c'est le genre d'amusement qui demande beaucoup d'effort. Cet effort nécessite de la motivation. Les athlètes distingués trouvent leur motivation dans une sorte de bien-être physique à faire accomplir des exploits à leurs corps, à se pousser eux-mêmes au-delà de leurs propres limites physiques. De manière similaire, pour être un hacker vous devez obtenir une certaine excitation à résoudre des problèmes, améliorer vos compétences, et exercer votre intelligence.
Si vous n'êtes pas le genre de personne qui ressent cela naturellement, vous devez le devenir avant de pouvoir devenir un hacker. Le cas contraire, vous verrez votre énergie sabotée par des distractions comme le sexe, l'argent, et l'approbation sociale.
(Vous devez aussi développer une sorte de foi en votre propre capacité d'apprentissage — une conviction que même si vous ne savez pas tout ce qu'il faut pour résoudre un problème, si vous progressez dans juste une partie de celui-ci et en apprenez, vous apprendrez assez pour résoudre la partie suivante — et ainsi de suite, jusqu'à avoir fini.)
Les cerveaux créatifs sont une ressource de valeur, et limitée. Ils ne devraient pas être gaspillés à ré-inventer la roue pendant qu'il y a tant de nouveaux problèmes fascinants qui attendent.
Pour vous comporter comme un hacker, vous devez croire que le temps de pensée des autres hackers est précieux — tellement qu'il est presque pour vous un devoir moral de partager l'information, résoudre des problèmes et ensuite en donner la solution juste pour que d'autres hackers puissent résoudre des nouveaux problèmes au lieu de devoir perpétuellement répondre à d'anciens.
Notez, cependant, que "Aucun problème n'a à être résolu deux fois." n'implique pas que vous ayez à considérer toutes les solutions existantes comme sacrées, ou qu'il n'y a qu'une bonne solution à un problème donné. Souvent, nous apprenons beaucoup d'un problème que nous ne connaissions pas auparavant en étudiant la première version d'une solution. C'est acceptable, et souvent nécessaire, de décider que nous pouvons faire mieux. Ce qui n'est pas acceptable est toute barrière artificielle technique, légale, ou institutionnelle (comme du code fermé) qui empêche une bonne solution d'être réutilisée et force les gens à ré-inventer la roue.
(Vous n'avez pas à croire que vous êtes obligé de donner tous les produits de votre créativité, même si les hackers qui le font sont ceux qui sont le plus respectés des autres hackers. C'est cohérent avec les valeurs des hackers de vendre assez de vos créations pour vous maintenant nourri, logé, et équipé. Il est acceptable d'utiliser vos compétences de hacker pour soutenir une famille ou même s'enrichir, tant que vous n'oubliez pas votre loyauté à votre art et à vos camarades hackers ce faisant.)
Les hackers (et les personnes créatives en général) ne devraient jamais s'ennuyer ou devoir trimer à du travail stupidement répétitif, parce que quand cela arrive, cela signifie qu'ils ne sont pas en train de faire ce qu'eux seuls peuvent faire — résoudre des nouveaux problèmes. Ce gaspillage est mauvais pour tout le monde. Donc l'ennui et la routine ne sont pas uniquement désagréables mais de ce fait néfastes.
Pour vous comporter comme un hacker, vous devez y croire assez pour vouloir automatiser les parties ennuyeuses autant que possible, non seulement pour vous-même, mais pour tout le monde (en particulier les autres hackers).
(Il y a une exception apparente à cette règle. Les hackers font parfois des choses qui semblent répétitives ou ennuyeuses comme exercice d'éclaircissement mental, ou de façon à acquérir une compétence ou de l'expérience qu'on ne peut obtenir autrement. Mais ceci est par choix — nulle personne apte à penser ne devrait se retrouver contrainte à une situation qui l'ennuie.)
Les hackers sont de nature anti-autoritaire. Quiconque peut vous donner des ordres peut vous empêcher de résoudre un problème qui vous fascine — et, étant donnée la manière dont les esprit autoritaire fonctionnent, va généralement trouver quelque raison épouvantablement stupide de le faire. L'attitude autoritaire doit donc être combattue où que vous la trouviez, de peur qu'elle ne vous étouffe vous et les autres hackers.
(Ceci n'est pas pareil que de combattre toute autorité. Les enfants doivent être guidés et les criminels reclus. Un hacker peut accepter certaines formes d'autorité de façon à obtenir quelque chose qu'il désire plus que le temps qu'il consacre à suivre les ordres. Mais ceci est une négociation consciente et limitée ; le genre de rémission de soi que les autoritaires veulent n'est pas à offrir.)
Les autoritaires prospèrent sur la censure et le secret. Et ils ne font pas confiance en la coopération volontaire et le partage d'information — ils n'aiment que la "coopération" qu'ils contrôlent. Donc, pour vous comporter en hacker, vous devez développer une hostilité instinctive à la censure, au secret, et à l'usage de la force pour obliger des adultes responsables à obéir. Et vous devez être prêt à agir selon cette pensée.
Pour être un hacker, vous devez développer quelques-unes de ces attitudes. Mais adopter une attitude uniquement ne fera pas de vous un hacker, pas plus que cela ne fera de vous un athlète champion ou une star du rock. Devenir un hacker demandera de l'intelligence, de la pratique, de la dévotion, et du travail soutenu.
De ce fait, vous devez apprendre à vous méfier de l'attitude et à respecter toute compétence. Les hackers ne vont pas laisser des fumistes gâcher leur temps, mais ils vénèrent la compétence — en particulier la compétence en hacking, mais toute compétence est valorisée. La compétence dans des savoir-faires exigeants que peu peuvent maîtriser est particulièrement bonne, et la compétence dans des savoir-faires exigeants qui impliquent de l'acuité mentale, de l'art et de la concentration est la meilleure.
Si vous révérez la compétence, vous allez aimer la développer en vous-même — le travail soutenu et la dévotion vont devenir une sorte de jeu intense plutôt qu'une corvée. Cette attitude est vitale pour devenir un hacker.
L'attitude du hacker est vitale, mais les compétences sont encore plus vitales. L'attitude n'est pas un substitut à la compétence, et il y a un certain nombre de compétences de base que vous devez avoir avant qu'aucun hacker ne songe à vous appeler ainsi.
Ces compétences changent lentement avec le temps, l'évolution technologique créant de nouvelles compétences et rendant d'autres obsolètes.. Par exemple, cette liste incluait la programmation en langage machine, et n'incluait pas jusqu'à récemment le HTML. Mais actuellement elle comporte plutôt clairement les suivantes :
C'est, bien sûr, la plus fondamentale des compétences de hacking. Si vous ne connaissez aucun langage de programmation, je vous recommande de commencer par Python. Il est proprement conçu, bien documenté, et relativement gentil pour les débutants. Même si c'est un bon premier langage, ce n'est pas un simple jouet ; il est puissant et souple, et bien adapté pour des grands projets. J'ai écrit une évaluation de Python plus détaillée. De bons tutoriels sont disponibles sur le site web de Python.
Je recommandais Java comme bon langage à apprendre tôt, mais cette critique a changé mon avis (cherchez-y la section "The Pitfalls of Java as a First Programming Language"). Un hacker ne peut, comme le dit cette critique, "approcher la résolution de problèmes comme un plombier dans une quincaillerie" ; vous devez savoir ce que les composants font concrètement. Je pense que ce qui est le mieux est d'apprendre d'abord le C et le Lisp, ensuite Java.
Il y a peut-être un aspect plus général ici. Si un langage en fait trop pour vous, il peut être simultanément un bon outil pour la production et un mauvais pour l'apprentissage. Il n'y a pas que les langages qui ont ce problème ; les frameworks web comme RubyOnRails, CakePHP, ou Django peuvent trop facile vous mener à une compréhension superficielle qui vous laissera sans ressource quand vous devrez abattre un problème difficile, ou simplement débugger la solution à un problème facile.
Si vous vous mettez à de la programmation sérieuse, vous allez devoir apprendre C, le langage au coeur d'Unix. Le C++ est très proche du C ; si vous connaissez l'un, apprendre l'autre ne sera pas difficile. Aucun des deux n'est un bon premier langage à essayer d'apprendre, cependant. Et, en fait, plus vous éviterez de programmer en C, plus vous serez productif.
Le C est très efficace, et très épargnant en termes des ressources de votre machine. Cependant, le C obtient cette efficacité en vous demandant d'effectuer beaucoup de gestion de ressources de bas niveau (la mémoire, par exemple) à la main. Tout ce code de bas niveau est complexe et prompt aux erreurs, et va pomper des quantités énormes de votre temps en débuggage. Au vu de la puissance des machines actuelles, ceci est habituellement un mauvais compromis — il est plus malin d'utiliser un langage qui utilise moins efficacement le temps de la machine, mais utilise plus efficacement votre temps. Donc, Python.
D'autres langages d'importance particulière pour les hackers incluent Perl et LISP. Le Perl vaut la peine d'être appris pour des raisons pratiques ; il est largement utilisé pour les pages web dynamiques et l'administration système, donc même si vous n'écrivez jamais de Perl vous devriez apprendre à le lire. Beaucoup de gens utilisent Perl de la manière dont je suggère d'utiliser Python, pour éviter le C pour des tâches qui ne nécessitent pas la performance du C. Vous devez être capable de comprendre leur code.
Le LISP vaut la peine d'être appris pour une raison différente — l'expérience d'illumination profonde que vous aurez quand vous le comprendrez enfin. Cette expérience fera de vous un meilleur programmeur pour le reste de vos jours, même si vous n'utilisez pas beaucoup LISP. (Vous pouvez vous familiariser plutôt facilement avec le LISP en écrivant ou en modifiant les modes d'Emacs ou des plugins Script-Fu de GIMP.)
Le mieux, en fait, est d'apprendre les cinq, C/C++, Java, Perl, et LISP. En plus d'être les plus importants des langages de hacking, ils représente des approches très différentes de la programmation, et chacun vous éduquera de manière valable.
Mais soyez conscient que vous n'atteindrez pas le niveau de compétence d'un hacker ou même d'un programmeur simplement en accumulant des langages — vous devez apprendre à penser aux problèmes de programmation de façon générale, indépendamment de l'un ou l'autre langage. Pour être un vrai hacker, vous devez arriver au point où vous pouvez apprendre un nouveau langage en quelques jours en mettant en rapport ce qu'il y a dans le manuel à ce que vous savez déjà. Ceci signifie que vous devriez apprendre beaucoup de langages très différents.
Je ne peux vous donner d'instructions complètes sur l'apprentissage de la programmation ici — c'est une compétence complexe. Mais je peux vous dire que les livres et les cours ne suffiront pas — beaucoup, peut-être la plupart des meilleurs hackers sont autodidactes. Vous pouvez apprendre les particularités d'un langage — des morceaux de connaissance — dans des livres, mais la mentalité qui fait de cette connaissance une compétence vivante peut uniquement s'apprendre par la pratique et l'apprentissage. Vous allez donc (a) lire du code et (b) écrire du code.
Peter Norvig, qui est l'un des meilleurs hackers de Google et co-auteur de l'un des manuels les plus utilisés sur l'IA, a écrit un excellent essai intitulé Teach Yourself Programming in Ten Years . Sa "recette pour le succès en programmation" mérite une attention particulière.
Apprendre à programmer et comme apprendre à écrire en bon langage naturel. La meilleure manière de le faire est de lire quelque chose d'écrit par des maîtres de la forme, écrire quelques choses soi-même, lire beaucoup plus, écrire un peu plus, lire beaucoup plus, écrire un peu plus... et répéter cela jusqu'à ce que sa propre production commence à développer le genre de force et de concision que l'on voit dans ses modèles.
Trouver du bon code à lire était ardu, parce qu'il n'y avait pas beaucoup de grands programmes disponibles en source pour que des hackers curieux les lisent et les bidouillent. Ceci a changé radicalement ; des logiciels libres, des outils de programmation, et des systèmes d'exploitation (tous construits par des hackers) sont maintenant largement disponibles. Ce qui m'amène élégamment au sujet suivant...
Je vais supposer que vous avez votre ordinateur personnel ou que vous avez accès à un ordinateur. (Prenez le temps d'apprécier ce que cela signifie. La culture des hackers a originellement évolué à une époque où les ordinateurs étaient si coûteux que les particuliers ne pouvaient en posséder.) Le pas le plus important qu'un débutant peut faire vers l'acquisition des compétences de hacker et d'obtenir une copie de Linux ou d'un des Unixes BSD, l'installer sur une machine personnelle, et l'utiliser.
Oui, il y a d'autres systèmes d'exploitation qu'Unix dans le monde. Mais ils sont distribués en binaire — vous ne pouvez pas lire le code, et vous ne pouvez pas le modifier. Essayer d'apprendre à hacker sous Microsoft Windows ou un autre système fermé est comme essayer d'apprendre à dancer en ayant le corps plâtré.
Sous Mac OS X c'est possible, mais seule une partie du système est libre — vous allez sûrement heurter beaucoup de murs, et vous devrez être attentif à ne pas prendre la mauvaise habitude de dépendre du code propriétaire d'Apple. Si vous vous concentrez sur Unix vous apprendrez beaucoup de choses utiles.
Unix est le système d'exploitation de l'Internet. Même si vous pouvez apprendre à utiliser l'Internet sans connaître Unix, vous ne pouvez pas être un hacker d'Internet sans comprendre Unix. Pour cette raison, la culture hacker actuelle est fortement centrée sur Unix. (Ceci n'a pas toujours été le cas, et quelques anciens en sont encore mécontents, mais la symbiose entre Unix et l'Internet est devenue assez forte pour que même le muscle de Microsoft ne semble pas parvenir à sérieusement l'endommager.)
Donc, installez un Unix — j'aime Linux pour ma part, mais il y a d'autres voies (et oui, vous pouvez utiliser Linux et Microsoft Windows sur la même machine). Apprenez-le. Utilisez-le. Bidouillez avec lui. Utilisez l'Internet avec lui. Lisez le code. Modifiez le code. Vous aurez des meilleurs outils de programmations (entre autres C, LISP, Python, et Perl) qu'aucun système d'exploitation de Microsoft peut rêver d'accueillir, vous allez vous amuser, et vous accumulerez plus de connaissance que vous aurez conscience d'apprendre tant que vous ne jetterez pas un regard en arrière une fois passé maître hacker.
Pour plus d'informations sur l'apprentissage d'Unix, voyez The Loginataka. Vous pourriez aussi jeter un oeil à The Art Of Unix Programming.
Pour obtenir un Linux, voyez le site Linux Online! ; vous pouvez le télécharger de là, ou (meilleure idée) trouvez un Linux User Group local pour vous aider lors de l'installation.
Pendant les dix premières années de la vie de ce HOWTO, je disait que du point de vue de l'utilisateur, toutes les distributions Linux sont presque équivalentes. Mais en 2006-2007, un meilleur choix a émergé : Ubuntu. Même si les autres distributions ont leurs propres forces dans leurs propres domaines, Ubuntu est de loin la plus accessible aux débutants. Attention, cependant, à l'hideuse et presque inutilisable interface de bureau "Unity" qu'Ubuntu a amené par défaut quelques années après ; les variantes Xubuntu ou Kubuntu sont meilleures.
Vous trouverez de l'aide et des ressources sur BSD Unix à http://www.bsd.org/.
Une bonne manière de tremper vos orteils dans l'eau et de démarrer ce que les fans de Linux appellent un live CD, une distribution qui s'exécute entièrement depuis un CD sans devoir modifier votre disque dur. Ce sera lent, parce que les CDs sont lents, mais c'est une manière de jeter un oeil aux possibilités sans devoir faire quoi que ce soit de drastique.
J'ai écrit une introduction aux bases d'Unix et de l'Internet.
Je déconseillais d'installer Linux ou BSD vous-même si vous êtes débutant. De nos jours, les programmes d'installation sont devenus assez bons pour que l'installation soit possible entièrement soi-même, même pour un débutant. Cependant, je vous recommande encore de contacter votre Linux User Group local et y demander de l'aide. Ça ne peut pas faire de mal, et cela facilitera le processus.
Beaucoup des choses que la culture hacker a construit travaillent de manière invisible, aidant le fonctionnement d'usines, de bureaux, d'université sans impact évident sur la manière dont vivent les non-hackers. Le Web est la grande exception, le gigantesque jouet brillant pour hacker dont même les politiciens admettent qu'il a changé le monde. Pour cette simple raison (et beaucoup d'autres bonnes raisons aussi) vous devez apprendre à utiliser le Web.
Ceci ne signifie pas uniquement savoir comment utiliser un navigateur (n'importe qui sait faire cela), mais apprendre à écrire le HTML, le langage de marquage du Web. Si vous ne savez pas programmer, écrire du HTML vous apprendra des habitudes mentales qui vous aideront à apprendre. Donc construisez un page personnelle. Essayez de vous limiter au XHTML, qui est un langage plus propre que le HTML classique. (Il y a des bons tutoriels pour débutants sur le Web ; en voici un.)
Mais avoir une page personnelle n'est vraiment pas assez pour faire de vous un hacker. Le Web regorge de pages personnelles. La majorité d'entre elles n'ont aucun but et sont de la fange sans contenu — de la très jolie fange, mais de la fange quand même (pour plus sur ce sujet, voyez The HTML Hell Page).
Pour être valable, votre page doit avoir du contenu — il doit être intéressant et/ou utile aux autres hackers. Et ceci m'amène au sujet suivant...
En tant qu'américain, et anglophone moi-même, je rechignais auparavant à suggérer ceci, de peur que ce soit pris pour une sorte d'impérialisme culturel. Mais beaucoup de gens dont la langue maternelle n'est pas l'anglais m'ont signalé que l'anglais est la langue véhiculaire des la culture hacker et de l'Internet, et que vous devez le connaître pour fonctionner dans la communauté hacker.
En 1991 j'ai appris que beaucoup de hackers qui ont l'anglais comme seconde langue l'utilisent dans les discussions techniques même quand ils partagent une langue maternelle ; on m'a dit à l'époque que l'anglais a un vocabulaire technique plus riche que toute autre langue et est de ce fait tout simplement mieux adapté à la tâche. Pour des raisons similaires, les traductions de livres techniques écrits en anglais sont souvent insatisfaisantes (si elles sont faites).
Linus Torvalds, un Finlandais, a commenté son code en anglais (apparemment il ne lui est jamais venu à l'esprit de faire autrement). Son aisance avec l'anglais a été un facteur important dans sa capacité à recruter une communauté mondiale de développeurs pour Linux. C'est un exemple qui mérite d'être suivi.
Etre anglophone de naissance ne garantit pas que vous ayez des compétences linguistiques assez bonnes pour fonctionner comme hacker. Si vos écrits sont semi-littéraires, à la grammaire approximative, et parsemés de fautes d'orthographe, beaucoup de hacker (moi inclus) auront tendance à vous ignorer. Une écriture bancale ne signifie pas forcément une pensée bancale, mais nous avons généralement trouvé la corrélation très forte — et nous n'avons que faire de penseurs bancals. Si vous ne savez pas bien écrire, apprenez à le faire.
Comme la plupart des cultures sans économie monétaire, le monde des hackers fonctionne sur la réputation. Vous essayez de résoudre des problèmes intéressants, mais à quel point ils sont intéressants, et si vos solutions sont vraiment bonnes, ne sont des choses que seuls vos camarades et supérieurs techniques sont équipés à juger.
De ce fait, quand vous jouez le jeu du hacker, vous apprenez à être évalué principalement sur ce que les autres hackers pensent de vos compétences (c'est pourquoi vous n'êtes pas vraiment un hacker avant que d'autres hackers ne vous donnent constamment ce titre). Ce fait est obscurci par l'image du hacking comme travail solitaire ; aussi par un tabou culturel hacker (qui diminue depuis la fin des années 1990 mais est encore fort) qui refuse que l'ego ou la validation externe soient impliqués dans les motivations.
Spécifiquement, le monde hacker est ce que les anthropologues appellent une culture de don. Vous obtenez statut et réputation en son sein non en dominant d'autre gens, ou en étant beau, ou en possédant des choses que les autres désirent, mais plutôt en donnant des choses. Plus particulièrement, vous donnez votre temps, votre créativité, et le résultat de vos compétences.
Il y a cinq sortes de choses que vous pouvez faire pour être respecté des hackers :
La première (et plus centrale et plus traditionnelle) est d'écrire des programmes que les autres hackers trouvent amusants ou utiles, et en donner les sources pour que toute la culture hacker les utilise.
(Nous appelions ces travaux "free software", mais ceci semait le doute sur le sens exact de "free". Beaucoup d'entre nous préfèrent à présent le terme "open-source software"). (NdT : cette discussion n'a de sens qu'en anglais, où "free" signifie "libre" et "gratuit" à la fois, en français la confusion n'existe pas et on parle de "logiciel libre")
Les demi-dieux les plus révérés du monde des hackers sont des gens qui ont écrit des grands programmes performants qui répondaient à un besoin courant et les ont donnés, ainsi à présent tout le monde les utilise.
Il y a une nuance historique ici. Même si les hackers ont toujours vu les développeurs de logiciels libres en leur sein comme noyau le plus dur, avant la moitié des années 1990 la plupart des hackers travaillaient la plupart du temps sur des logiciels fermés. Ceci était encore le cas quand j'ai écrit la première version de ce HOWTO en 1996 ; il a fallu la popularisation du logiciel libre après 1997 pour que ceci change. Aujourd'hui, la "communauté hacker" et les "développeurs libres" sont deux descriptions de ce qui est essentiellement la même culture et population — mais il est bon de se souvenir que cela n'a pas toujours été le cas. (Pour plus d'information à ce sujet, voyez la section "Note historique : Hacking, Open Source, et Free Software".)
Sont aussi utiles ceux qui testent et débuggent des logiciels libres. Dans ce monde imparfait, nous allons inévitablement passer la plupart de notre temps de développement logiciel en phase de débuggage. C'est pourquoi tout auteur libre qui sait penser vous dira que des bons bêta-testeurs (qui savent comment décrire clairement des symptômes, localiser des problèmes, tolérer des bugs dans une version, et acceptent d'appliquer quelques routines de diagnostic) valent leurs poids en rubis. Chacun d'eux peut faire la différence entre une phase de débuggage qui est un cauchemar épuisant et une qui n'est qu'une nuisance salutaire.
Si vous êtes débutant, essayez de trouver un programme en cours de développement qui vous intéresse, et soyez un bon bêta-testeur. Il y a une progression naturelle d'aider à tester des programmes à aider à les débugger et aider à les modifier. Vous apprendrez beaucoup de cette façon, et générerez du bon karma auprès de gens qui vous aideront plus tard.
Une autre bonne chose est de collecter et filtrer des informations utiles et intéressantes en pages web et documents comme des listes de question fréquemment posées (FAQ) et les rendre disponibles.
Les mainteneurs de FAQs techniques majeures sont presque aussi respectés que les auteurs libres.
La culture hacker (et le développement technique de l'Internet, d'ailleurs) fonctionne sur le volontariat. Il y a beaucoup de travail nécessaire mais peu glorieux qui doit être fait pour que cela continue de fonctionner — administrer des mailing-lists, modérer des newsgroups, maintenir des sites d'archives de logiciels, développer des RFCs et d'autres standards techniques.
Les gens qui font bien ce genre de choses sont très respectés, parce que tout le monde sait que ces tâches prennent énormément de temps et ne sont pas aussi amusantes que de jouer avec du code. Le faire montre de la dévotion.
Enfin, vous pouvez servir et propager la culture elle-même (par exemple, en écrivant une introduction précise sur comment devenir un hacker :-)). Ce n'est pas quelque chose que vous serez amené à faire avant d'avoir été en son sein depuis un bout de temps et devenu connu pour l'une des quatre premières choses.
La culture hacker n'a pas de dirigeant, mais elle a des héros et des vénérables, des historiens et des porte-parole. Quand vous avez été assez longtemps dans les tranchées, vous pouvez devenir l'un d'eux. Attention : les hackers se méfient des egos expansifs chez leurs vénérables, donc chercher à atteindre ce genre de gloire est dangereux. Au lieu de chercher à l'atteindre, vous devez vous positionner de façon à ce qu'elle vous tombe dessus naturellement, et ensuite être modeste et gracieux sur ce statut.
Contrairement à un mythe populaire, vous ne devez pas être un nerd pour être un hacker. Ça aide, cependant, et beaucoup de hackers sont en fait des nerd. Être d'une certaine manière un exclu social vous aide à rester concentré sur les choses vraiment importantes, comme penser et hacker.
Pour cette raison, beaucoup de hackers ont adopté l'étiquette "geek" comme badge de fierté — c'est une façon de déclarer leur indépendance des attentes sociales normales (et en même temps leur goût pour d'autres chose comme la science-fiction ou les jeux de stratégie qui vont souvent avec le fait d'être un hacker). Le mot "nerd" était utilisé dans ce sens dans les années 1990, quand "nerd" était un peu péjoratif et "geek" plus agressif ; à un moment après 2000 ils se sont permutés, du moins dans la culture populaire américaine, et il y a à présent une nette culture "geek-pride" chez des gens qui ne sont pas des techniques.
Si vous parvenez à vous concentrer assez sur le hacking pour y être bon et quand même avoir une vie, tant mieux. C'est beaucoup plus simple aujourd'hui que ce l'était quand j'étais débutant dans les années 1970 ; la culture populaire est plus gentille à l'égard des techno-intellos de nos jours. Il y a même un nombre croissant de gens qui réalisent que les hackers sont souvent des amants ou époux de qualité.
Si vous êtes attiré vers le hacking parce que vous n'avez pas de vie, tant mieux aussi — au moins vous n'aurez pas de problème à vous concentrer. Peut-être aurez-vous une vie plus tard.
Encore une fois, pour être un hacker vous devez entrer dans la mentalité du hacker. Il y a certaines choses que vous pouvez faire quand vous n'êtes pas devant un ordinateur qui semblent aider. Ce ne sont pas des substituts au hacking (rien ne l'est) mais beaucoup de hackers les font, et pensent qu'ils sont liés d'une certaine manière avec l'essence du hacking.
Au plus vous avez déjà ces choses, au plus vous êtes sûrement un hacker naturel. Pourquoi ces choses sont importantes n'est pas complètement clair, mais elles sont reliées par un mélange d'activités d'hémisphères gauches et droits qui semble être important ; les hackers doivent savoir à la fois raisonner logiquement et sortir de la logique apparente d'un problème en un instant.
Travaillez aussi intensément que vous jouez et jouez aussi intensément que vous travaillez. Pour les vrais hackers, les limites entre "jeu", "travail", "science" et "art" ont toutes tendance à disparaître, ou à se rejoindre dans un ludisme créatif de haut niveau. Aussi, ne vous contentez pas d'un éventail serré de compétences. Même si beaucoup de hackers se décrivent en tant que programmeurs, ils sont très certainement plus que compétents dans beaucoup de compétences liées — l'administration système, la création web, et le dépannage de matériel informatique en sont des courantes. Un hacker qui est administrateur système, d'un autre coté, est certainement très compétent en scriptage et en création web. Les hackers ne font pas les choses à moitié ; s'ils s'investissent dans une compétence, ils tendent à y devenir très bons.
Enfin, quelques choses à ne pas faire.
La seule réputation que vous obtiendrez en faisant une de ces choses est celle d'un attardé. Les hackers ont bonne mémoire — cela peut prendre des années pour faire pardonner vos erreurs premières suffisamment pour être accepté.
Le problème des pseudonymes mérite développement. Cacher votre identité derrière un pseudonyme est un comportement juvénile et ridicule qui est caractéristique des crackers, warez-d00dz et autres formes de vies inférieures. Les hackers ne font pas cela ; ils sont fiers de ce qu'ils font et veulent que ce soit associé avec leurs vrais noms. Si vous avez un pseudonyme, abandonnez-le. Dans le culture hacker il ne ferait que vous étiqueter comme minable.
Quand j'ai initialement écrit ce guide en 1996, certaines des conditions l'entourant étaient différentes de ce qu'elles semblent aujourd'hui. Quelques mots à propos de ces changements peuvent aider à clarfifier les choses pour ceux qui sont confus au sujet du rapport entre open source, free software, et Linux par-rapport à la communauté hacker. Si vous n'êtes pas curieux à ce sujet, vous pouvez passer outre jusqu'au FAQ.
L'éthique et la communauté telles que je les ai décrites ici prédatent de longtemps l'émergence de Linux après 1990 ; j'ai été pour la première fois impliqué dans cette communauté vers 1976, et ses racines sont aisément traçable jusqu'au début des années 1960. Mais avant Linux, la plupart du hacking était fait soit sur des systèmes d'exploitation propriétaires, soit sur une poignée de systèmes quasi-expérimentaux tels que le ITS du MIT qui n'ont jamais été déployés à l'extérieur de leur niche académique. Même s'il y a eu des tentatives précédentes (avant Linux) de changer cette situation, leur impact était au mieux très marginal et confiné à des communautés de vrais passionnés qui étaient de minuscules minorités au sein de la communauté hacker, encore plus à l'égard du monde du logiciel en général.
Ce qui est à présent appelé "logiciel libre" remonte aussi loin que la communauté hacker, mais jusqu'à 1985 il s'agissait d'une coutume sans nom plutôt qu'un mouvement conscient avec ses théories et manifestes. Cette préhistoire a cessé quand, en 1985, l'arch-hacker Richar Stallman ("RMS") a essayé de lui donner un nom — "free software". Mais son acte de nommage était aussi un acte d'appropriation ; il a lié à l'étiquette "free software" un bagage idéologique que beaucoup de la communauté hacker existante n'a jamais accepté. En conséquence de quoi, l'étiquette "free software" a été vigoureusement rejetée par une substantielle minorité de la communauté hacker (particulièrement ceux associés à BSD Unix), et utilisée avec de sérieuses mais silencieuses réserves par une majorité du reste (moi inclus).
Malgré ces réserves, la prétention de RMS de définir et diriger la communauté hacker sous la bannière "free software" a bien tenu jusqu'à la moitié des années 1990. Elle fut seulement mise à mal par la montée de Linux. Linux a donné au développement libre un habitat naturel. Beaucoup de projets fournis sous des termes que nous appellerions maintenant "open source" ont migré d'Unixes propriétaires vers Linux. La communauté autour de Linux a cru explosivement, devenant bien plus grand et plus hétérogène que la culture hacker pré-Linux. RMS a tenté avec détermination de ramener toute cette activité dans son mouvement "free software" mais a été mis en échec à la fois par la diversité de la communauté Linux et le scepticisme public de son fondateur, Linux Torvalds. Torvalds a continué à utiliser le terme "free software" faute d'alternative, mais rejetait publiquement les idées de RMS. Beaucoup de jeunes hackers l'ont suivi.
En 1996, quand j'ai pour la première fois publié ce guide, la communauté hacker se réorganisait rapidement autour de Linux et d'une poignée d'autres systèmes libres (particulièrement les descendants de BSD Unix). La mémoire collective des décennies passées par la plupart d'entre nous à déveloper des logiciels fermés sur des sysèmes fermés n'avait pas encore commencé à s'estomper, mais ce fait commençait à sembler faire partie d'un passé éteint ; les hackers, de plus en plus, se définissaient comme hackers par leur appartenance à des projets libres tels que Linux ou Apache.
Le terme "open source", cependant, n'était pas encore apparu ; il n'allait pas le faire avant début 1998. Quand ce fut le cas, la plupart de la communauté hacker l'a adopté dans les six mois ; l'exception était une minorité idéologiquement attachée au terme "free software". Depuis 1998, et surtout après 2003, l'identification de "hacking" à "développement open-source (et free software)" est devenue extrêmement nette. Actuellement, ce n'est pas la peine de tenter de distinguer ces catégories, et il semble peu probable que cela le devienne dans le futur.
Il est bon de se souvenir, cependant, que cela n'a pas toujours été le cas.
Paul Graham a écrit un essai intitule Great Hackers, et un autre intitulé Undergraduation, dans lequel il parle avec beaucoup de sagesse.
Il y a un document appelé How To Be A Programmer qui est un excellent complément à celui-ci. Il comporte des conseils valables non seulement à propos du code et des compétences, mais aussi sur la façon de fonctionner en équipe de développement.
J'ai aussi écrit A Brief History of Hackerdom.
J'ai écrit un papier, The Cathedral and the Bazaar, qui explique beaucoup sur la façon dont la culture Linux et la culture open-source fonctionnent. J'ai visé ce sujet encore plus directement dans sa suite Homesteading the Noosphere.
Rick Moen a écrit un excellent document sur comment diriger un Linux User Group.
Rick Moen et moi-même avons collaboré sur un autre document : How To Ask Smart Questions. Ceci vous aidera à chercher de l'aide d'une manière qui vous donnera plus de chances d'en obtenir.
S'il vous faut des instructions sur les bases du fonctionnement des ordinateurs personnels, d'Unix, et de l'Internet, voyez The Unix and Internet Fundamentals HOWTO.
Quand vous publiez des logiciels ou écrivez des patches pour des logiciels, essayez de suivre les directives du Software Release Practice HOWTO.
Si vous avez aimé le poème Zen, vous pourriez aussi aimer Rootless Root: The Unix Koans of Master Foo.
Posez-vous les trois questions suivantes :
Si vous pouvez répondre oui à toutes les trois, vous êtes déjà un hacker. Deux seulement ne suffisent pas.
Le premier test est à propos de la compétence. Vous le passez probablement si vous avez les compétences techniques minimales décrites plus tôt dans ce document. Vous passez largement au travers si vous avez un une quantité substantielle de code acceptée par un projet de développement libre.
Le second test est à propos de l'attitude. Si les cinq principes de la mentalité du hacker vous semblent évidents, plus comme une description de la manière dont vous vivez déjà plutôt que quoi ce soit de nouveau, vous êtes à mi-chemin de le passer. C'est la moitié intérieure ; l'autre moitié, extérieure, est le degré auquel vous vous identifiez aux projets à long terme de la communauté hacker.
Voici une liste incomplète mais indicative de certains de ces projets : Est-ce important pour vous que Linux s'améliore et se diffuse ? Etes-vous passionné sur la question de la liberté logicielle ? Hostile aux monopoles ? Agissez-vous sur l'idée que les ordinateurs peuvent être des instruments de renforcement qui font du monde un endroit plus riche et plus humain ?
Mais une note de prudence est de mise ici. La communauté hacker a quelques intérêts politiques spécifiques, principalement défensifs — deux d'entre eux sont défendre le droit à la libre parole et parer les avides de pouvoirs et leurs "propriété intellectuelle" qui rendraient le logiciel libre illégal. Certains de ces projets à long terme sont des organisations de libertés civiques comme la Electronic Frontier Foundation, et l'attitude extérieure inclus de les soutenir. Mais au-delà de cela, la plupart des hackers voient les tentatives de systématiser l'attitude du hacker en un programme politique explicite avec suspicion ; nous avons appris, à la dure, que ces tentatives sont divisives et distrayantes. Si quelqu'un veut vous recruter pour marcher sur votre capitale au nom de l'attitude du hacker, il se fourvoie. La bonne réponse est probablement "tais-toi et montre-leur le code".
Le troisième test a un élément délicat de récursivité en lui. J'ai observé dans la section "Qu'est-ce qu'un hacker ?" qu'être un hacker est en partie une question d'appartenance à une sous-culture particulière ou un réseau social avec un histoire partagée, un intérieur et un extérieur. Dans un lointain passé, les hackers n'étaient pas le groupe cohérent et conscient de soi qu'ils sont aujourd'hui. Mais l'importance du réseau social a augmenté au cours des trente dernières années alors que l'Internet a rendu les connexions avec le coeur de la culture hacker plus facile à développer et maintenir. Un indice comportemental facile est que, dans ce siècle-ci, nous avons nos propres t-shirts.
Les sociologues, qui étudient les réseaux comme ceux de la culture des hackers sous la rubrique générale de "collèges invisibles", ont noté qu'une des caractéristiques de ce genre de réseaux est qu'ils ont des gardiens, des membres au coeur qui ont l'autorité sociale de cautionner des nouveaux membres au sein du réseau. Parce que le "collège invisible" qu'est la culture hacker est informel, le rôle de gardien est informel aussi. Mais une chose que tout hacker doit comprendre est que tout hacker n'est pas forcément gardien. Les gardiens ont un certain degré d'ancienneté et d'accomplissement avant de pouvoir prétendre au titre. Combien est difficile à quantifier, mais chaque hacker le sait quand il en voit un.
Depuis la première publication de cette page, j'ai eu plusieurs demandes par semaine (parfois plusieurs par jour) "d'apprendre tout sur le hacking" à des gens. Malheureusement, je n'ai ni le temps ni l'énergie de faire cela ; mes propres projets de hacking, et mon travail comme émissaire de l'open-source, prennent 110% de mon temps.
Et même si je l'avais, le hacking est une attitude et une compétence que vous devez apprendre vous-même. Vous découvrirez que même si les vrais hackers voudront vous aider, ils ne vont pas vous respecter si vous leur demandez de vous donner à la cuillère tout ce qu'ils savent.
Apprenez quelques choses d'abord. Montrez que vous essayez, que vous êtes capable d'apprendre par vous-même. Ensuite allez au-devant des hackers que vous rencontrez avec des questions spécifiques.
Si vous écrivez à un hacker en lui demandant conseil, voici deux choses à ne pas perdre de vue. Premièrement, nous avons remarqué que les gens qui sont paresseux ou inattentifs dans leurs écrits sont habituellement trop paresseux et inattentifs dans leurs pensées pour faire de bons hackers — soyez donc attentif à l'orthographe, à la grammaire, et à la ponctuation, sinon vous serez probablement ignoré. Deuxièmement, ne pensez même pas demander qu'on vous réponde sur un autre compte de FAI que celui duquel vous envoyez ; nous avons découvert que les gens qui font cela sont habituellement des voleurs qui utilisent des comptes volés, et nous n'avons aucun intérêt à les récompenser ou à assister le vol.
Le meilleur moyen pour débuter serait certainement d'aller à une réunion d'un LUG (Linux User Group). Vous pouvez trouver ce genre de groupes sur le LDP General Linux Information Page ; il y en a probablement un près de chez vous, sûrement lié à une université. Les membres d'un LUG vont probablement vous donner un Linux si vous demandez, et vont certainement vous aider à en installer un et y débuter.
La prochaine étape (ou la première si vous ne trouvez pas de LUG à proximité) devrait être de trouver un projet open-source qui vous intéresse. Commencez à lire du code et analyser des bugs. Apprenez comment contribuer et faites votre place.
Le seul moyen de faire votre place est de travailler pour améliorer vos compétences. Si vous me demandez personnellement des conseils sur comment débuter je vous dirai exactement al même chose, parce que je ne dispose d'aucun raccourci magique pour vous. Je vais également vous considérer comme un perdant probable — parce que si vous n'avez pas eu l'endurance de lire ces questions et l'intelligence d'en comprendre que le seul moyen de faire votre place est de travailler pour améliorer vos compétences, il n'y a aucun espoir pour vous.
N'importe quel âge auquel vous êtes motivé pour commencer est le bon âge. La plupart des gens semblent s'y intéresser entre 15 et 20 ans, mais je connais des exceptions dans les deux directions.
Cela dépend de votre talent et de votre ardeur au travail. La plupart des gens qui essaient peuvent acquérir un ensemble respectable de compétences en dix-huit mois à deux ans, s'il sont concentrés. Ne pensez pas que tout s'arrête là, cependant ; en hacking (comme dans beaucoup d'autres domaines) il faut de l'ordre de dix ans pour atteindre la maîtrise. Et si vous êtes un vrai hacker, vous allez passer le reste de votre vie à apprendre et à perfectionner votre art.
Si vous posez cette question, cela signifie certainement que vous pensez essayer de hacker sous Microsoft Windows. C'est une mauvaise idée en soi. Quand je comparais essayer d'apprendre à hacker sous Windows à essayer d'apprendre à danser en ayant le corps plâtré, je ne plaisantais pas. N'y allez pas. C'est laid, et ne cesse jamais de s'enlaidir.
Il y a un problème spécifique avec Visual Basic ; principalement qu'il n'est pas portable. Même s'il y a une implémentation libre prototype de Visual Basic, les standards ECMA applicables ne couvrent pas plus qu'un petit ensemble de ses interfaces. Sous Windows la plupart des librairies sont propriétaires d'un seul fournisseur (Microsoft) ; si vous n'êtes pas extrêmement prudent sur l'usage de fonctions — plus prudent qu'un débutant est vraiment capable de l'être — vous allez finir emprisonné dans les seules plateformes que Microsoft choisit. Si vous commencez sur un Unix, de bien meilleurs langages avec de bien meilleures libraires sont disponibles. Python, par exemple.
De plus, comme les autres Basics, Visual Basic est un langage piètrement conçu qui va vous donner de mauvaises habitudes. Non, ne me demandez pas de les décrire en détail ; cette explication remplirait un livre. Apprenez un langage bien conçu plutôt.
L'une de ces mauvaise habitudes est de devenir dépendant des librairies, widgets, et outils de développement d'une seul fournisseur. En général, tout langage qui n'est pas entièrement disponible sous au moins Linux ou un des BSDs, et/ou au moins les systèmes d'exploitation de trois différents fournisseurs, est un mauvais langage avec lequel essayer de hacker.
Non. Quiconque pose encore cette question après avoir lu ce document est trop stupide pour être éduqué même si j'avais le temps pour le faire. Tout requête de ce genre sera ignorée ou aura une réponse extrêmement impolie.
C'est du cracking. Va-t-en, idiot.
C'est du cracking. Dégage, blaireau.
C'est du cracking. Au diable, crétin.
Non. Chaque fois que cette question m'a été posée jusqu'ici, c'était d'un pauvre naïf utilisant Microsoft Windows. Il n'est pas possible de sécuriser Windows contre des attaques ; le code et l'architecture ont trop de défauts, ce qui fait de sécuriser Windows quelque chose comme essayer d'écoper l'eau d'un bateau avec un tamis. La seule prévention fiable commence par un changement vers Linux ou un autre système d'exploitation qui est conçu pour être au moins capable de sécurité.
Oui. Allez à une ligne de commande DOS et tapez format c:
. Tous vos problèmes vont cesser dans quelques minutes.
Le meilleur moyen est de trouver un groupe d'utilisateurs Unix ou Linux près de chez vous et aller à leurs réunions (vous pouvez trouver des liens vers plusieurs listes de ces groupes sur le site LDP).
(Je disais auparavant que vous ne trouverez pas de vrais hackers sur IRC, mais il m'a été donné de comprendre que cela a changé. Apparemment, quelques communautés de vrais hackers, attachés à des choses comme GIMP ou Perl, ont leurs canaux IRC à présent.)
Je maintiens une Linux Reading List que vous pourriez trouver utile. Le Loginataka peut aussi être intéressant.
Pour une introduction à Python, voyez les documentations introductives sur le site de Python.
Non. Le hacking n'utilise que très peu de mathématiques formelles ou d'arithmétique. En particulier, vous n'aurez habituellement pas besoin de trigonométrie, de calcul ou d'analyse (il y a quelques exceptions dans une poignée d'applications spécifiques comme l'imagerie 3D). Connaître un peu de logique formelle ou d'algèbre de Boole est suffisant. Quelques bases en mathématiques discrètes (théorie des ensemble finis, combinatoire, et théorie des graphes) peut aider.
Mais plus important : vous devez être capable de penser logiquement et de suivre des chaînes de raisonnement exact, à la manière des mathématiciens. Même si le contenu de la plupart des mathématiques ne vous aidera pas, vous aurez besoin de discipline et d'intelligence pour saisir les mathématiques. S'il vous manque l'intelligence, il y a peu de chances pour vous comme hacker ; s'il vous manque la disciple, vous feriez mieux de la développer.
Je pense qu'une bonne manière de savoir si vous avez ce qu'il faut est d'obtenir une copie du livre de Raymond Smullyan What Is The Name Of This Book?. Les énigmes logiques amusantes de Smullyan sont fortement dans l'esprit des hackers. Être capable de les résoudre est un bon signe ; aimer les résoudre en est un encore meilleur.
XHTML (le plus récent dialecte d'HTML) si vous ne le connaissez pas déjà. Il y a beaucoup de mauvais livres sur l'HTML, et désespérément peu de bons. Celui que je préfère est HTML: The Definitive Guide.
Mais HTML n'est pas un langage de programmation complet. Quand vous serez prêt à commencer à programmer, je vous recommande de commencer par Python. Vous entendrez beaucoup de gens recommander Perl, mais il est plus difficile à apprendre et (à mon avis) moins bien conçu.
C est vraiment important, mais il est aussi beaucoup plus difficile que Python ou Perl. N'essayez pas de l'apprendre en premier.
Utilisateurs de Windows, ne vous contentez pas de Visual Basic. Il vous donnera des mauvaises habitudes, et il n'est pas portable hors de Windows. A éviter.
Anciennement les ordinateurs personnels étaient plutôt faibles et pauvres en mémoire, assez pour placer des limites artificielles au processus d'apprentissage d'un hacker. Cela a cessé d'être vrai dans les milieu des années 1990 ; toute machine plus performante qu'un Intel 486DX50 est plus qu'assez puissante pour du développement, X, et des communications Internet, et les plus petits disques que vous pouvez acheter aujourd'hui sont d'une capacité amplement suffisante.
Ce qui est important est de choisir une machine dont les composants sont compatibles avec Linux (ou BSD, si vous choisissez cette voie). Encore une fois, ce sera vrai pour presque toutes les machines modernes. Les seuls parties délicates sont les modems et les adaptateurs sans-fil ; certaines machines ont des composants spécifiques à Windows qui ne fonctionneront pas sous Linux.
Il y a un FAQ sur la compatibilité matérielle ; la version la plus récente est ici.
Non, parce que je ne connais pas vos talents et intérêts. Vous devez être motivé ou vous ne tiendrez pas, c'est pourquoi demander à d'autres de choisir votre direction ne marche presque jamais.
Essayez ceci. Regardez les annonces de projets défiler sur Freshmeat pendant quelques jours. Quand vous en voyez un qui vous fait penser "Cool ! J'aimerais travailler là-dessus !", rejoignez-le.
Non, vous ne devez pas. Pas que Microsoft ne soit pas détestable, mais il y avait une culture hacker longtemps avant Microsoft, et il y en aura une longtemps après que Microsoft soit de l'histoire. Toute l'énergie que vous dépenserez à détester Microsoft serait mieux dépensée à aimer votre art. Ecrivez du bon code — cela ridiculisera Microsoft assez bien sans polluer votre karma.
Cela semble improbable — jusqu'ici, l'industrie du logiciel libre semble créer des emplois plutôt que de les faire disparaître. S'il est plus rentable de faire écrire un programme que de ne pas le faire écrire, un programmeur sera payé à le faire que le programme soit ensuite libre ou pas. De plus, peu importe la quantité de logiciels libres qui sont écrits, il semble toujours y avoir plus de demande pour des applications nouvelles et sur-mesure. J'ai écrit plus sur ce sujet dans les pages du site Open Source.
Si vous n'avez pas encore un Unix installé sur votre machine, j'ai inclus ailleurs sur cette page des indications pour trouver le plus commun des Unix libres. Pour être un hacker, vous devez faire preuve de motivation et d'initiative, et de savoir vous éduquer vous-même. Commencez maintenant...