Comment devenir un hacker

Auteur: Eric Steven Raymond < Thyrsus Enterprises >

Traducteur: Thomas Gil < thomasgil.com >

Relectrice: Marion Nougueret < NewBornA >

Traduction de la révision 1.49 du 21 novembre 2014 du document original How To Become A Hacker

Copyright © 2001 Eric S. Raymond

Table des matières

Pourquoi ce document? Qu'est-ce qu'un hacker? L'attitude du hacker
  1. Le monde regorge de problèmes fascinants à résoudre.
  2. Aucun problème ne devrait être résolu deux fois.
  3. Le diable est dans l'ennui et la corvée.
  4. Vive la liberté.
  5. L'attitude ne remplace pas la compétence.
Les compétences essentielles du hacker
  1. Apprenez à programmer.
  2. Procurez-vous un Unix open-source et apprenez à vous en servir.
  3. Familiarisez-vous avec le World Wide Web et sachez écrire en HTML.
  4. Travaillez votre anglais véhiculaire.
Le statut dans la culture hacker
  1. Ecrivez des logiciels open-source
  2. Aidez à tester et à déverminer des logiciels open-source
  3. Publiez des informations utiles
  4. Contribuez au bon fonctionnement de l'infrastructure
  5. Soutenez la culture hacker elle-même
Le lien hacker / nerd Eléments de style Note historique: hacking, open source et logiciel libre Autres ressources Questions fréquentes

Pourquoi ce document?

En tant qu'éditeur du dictionnaire du jargon et auteur de quelques autres documents populaires de même nature, d'enthousiastes nouveaux venus sur le Web me demandent souvent par mail "comment pourrais-je devenir un maître hacker?". En 1996, il ne semblait pas exister d'autre document sur le Web ciblant cette question vitale, j'ai donc commencé à rédiger celui-ci. De nombreux hackers le considèrent maintenant comme une référence, j'imagine que cela lui en donne le statut. Toutefois, je ne revendique aucune autorité exclusive dans ce domaine; si vous n'appréciez pas ce que vous lisez ici, écrivez votre propre FAQ.

Si vous avez sous les yeux une copie de ce document, sachez que sa dernière version se trouve ici: http://catb.org/~esr/faqs/hacker-howto.html.

Note: vous trouverez ci-après une liste de questions fréquentes. Assurez-vous de la lire deux fois avant de me solliciter par email à propos de ce document.

De nombreuses traductions de ce document sont disponibles: Arabe Biélorusse Chinois (Simplifié), Tchèque, Danois, Hollandais, Estonien, Allemand, Grec Italien Hébreu, Japonais, Lithuanien, Norvégien, Perse Portugais (Brésilien), Roumain Espagnol, Turc, et Suédois. Comme ce document évolue de temps en temps, ses traductions peuvent être plus ou moins obsolètes.

Le diagramme "cinq points dans neuf cases" qui illustre ce document s'appelle un planeur. C'est un motif simple aux propriétés mathématiques surprenantes dans une simulation mathématique appelée le jeu de la vie qui fascine les hackers depuis de nombreuses années. Je pense qu'il constitue un bon emblème visuel pour représenter ce que sont les hackers: abstraits, apparemment un peu mystérieux de prime abord mais donnant accès à un univers régi par sa propre logique complexe. Lisez ceci pour en savoir plus à propos de l'emblème planeur.

Si vous trouvez ce document utile, n'hésitez pas à me laisser un pourboire sur Gittip. Et envisagez également d'en laisser aux hackers qui ont produit le code que vous utilisez et auquel vous accordez du crédit. De nombreuses petites donations récurrentes deviennent rapidement significatives et peuvent libérer le temps de travail nécessaire aux personnes qui vous ont fait ces cadeaux pour en produire davantage.

Qu'est-ce qu'un hacker?

Le dictionnaire du jargon propose plusieurs définitions du terme "hacker", la plupart étant liées aux aptitudes techniques et à la joie de résoudre des problèmes et de repousser les limites. Ceci dit, si vous souhaitez savoir comment devenir un hacker, seules deux d'entre elles sont vraiment pertinentes.

Il existe une communauté, une culture partagée de développeurs experts et de magiciens du réseau dont l'histoire remonte, il y a plusieurs décennies, aux premiers ordinateurs à temps partagé et aux premières expériences ARPAnet. Les adeptes de cette culture ont donné naissance au terme "hacker". Les hackers ont bâti Internet. Les hackers ont fait du système d'exploitation Unix ce qu'il est aujourd'hui. Les hackers font tourner le réseau mondial, le World Wide Web. Si vous faites partie de cette culture, si vous y avez contribué et que d'autres membres vous connaissent et vous qualifient de hacker, vous êtes un hacker.

L'état d'esprit du hacker ne se limite pas au monde du logiciel. Certains appliquent l'attitude du hacker à d'autres domaines tels que l'électronique ou la musique; en fait, on la retrouve aux plus hauts niveaux de n'importe quelle science ou art. Les hackers logiciels reconnaissent ces âmes soeurs et peuvent elles aussi les qualifier de "hackers"; et certains prétendent que la nature du hacker est complètement indépendante du domaine exercé. Mais dans la suite de ce document, nous nous focaliserons sur les compétences et l'attitude des hackers logiciels et sur les traditions de cette culture partagée qui a accouché du terme "hacker".

D'autres personnes s'auto-proclament hackers, haut et fort, pourtant ils n'en sont rien. Il s'agit essentiellement d'adolescents de sexe masculin qui adorent s'introduire par effraction dans les ordinateurs et pirater les lignes téléphoniques. Les véritables hackers les appellent "crackers" et ne veulent rien avoir affaire avec eux. La plupart des véritables hackers trouvent que les crackers sont fainéants, irresponsables, pas très malins, et objectent que de circonvenir à un système de sécurité ne fait pas plus de vous un hacker que de démarrer une voiture avec les fils électriques ne fait de vous un ingénieur automobile. Malheureusement, de nombreux journalistes et écrivains sont dupes et emploient le mot "hacker" pour décrire les crackers; ce qui irrite les véritables hackers au plus haut point.

La différence essentielle est que les hackers construisent des choses et que les crackers les cassent.

Si vous souhaitez être un hacker, poursuivez votre lecture. Si vous voulez être un cracker, abonnez-vous au groupe de discussion alt.2600 et apprêtez-vous à faire cinq à dix ans de prison après vous être rendu compte que vous n'êtes pas aussi intelligent que vous ne le pensiez. Je n'en dirai pas davantage sur les crackers.

L'attitude du hacker

  1. Le monde regorge de problèmes fascinants à résoudre.
  2. Aucun problème ne devrait être résolu deux fois.
  3. Le diable est dans l'ennui et la corvée.
  4. Vive la liberté.
  5. L'attitude ne remplace pas la compétence.

Les hackers résolvent des problèmes, construisent des choses et croient en la liberté et en l'entraide volontaire. Pour être accepté comme hacker, vous devez adopter ce type d'attitude. Et pour l'adopter, vous devez être absolument convaincu par ses valeurs.

Mais si vous ne songez à cultiver votre attitude hacker que pour être bien accepté, vous vous trompez d'objectif. Croire en ces choses est important pour vous et peut vous aider à apprendre et à rester motivé. Comme pour tous les arts créatifs, le meilleur moyen de devenir un maître est d'imiter l'état d'esprit des maîtres, non seulement intellectuellement mais aussi émotionnellement.

Ou, comme le formule un poème Zen moderne:

Pour suivre le chemin:
regarde le maître,
suis le maître,
marche avec le maître,
vois par le maître,
deviens le maître.

Donc si vous voulez être un hacker, répétez les mantras suivants jusqu'à en être convaincu:

1. Le monde regorge de problèmes fascinants à résoudre.

Etre un hacker est très amusant, mais c'est un type de divertissement qui nécessite beaucoup d'effort. L'effort requiert de la motivation. Les athlètes tirent leur motivation d'une sorte de joie physique qu'ils éprouvent en poussant leur corps à accomplir des prouesses et en se dépassant au-delà de leurs limites physiques. De même, pour être un hacker, vous devez tirer une excitation essentielle du fait de résoudre des problèmes, d'aiguiser vos compétences et d'exercer votre intelligence.

Ressentir naturellement les choses comme cela est essentiel. Sans cela, vous verrez votre énergie de hacking sappée par des distractions telles que le sexe, l'argent et l'approbation sociale.

(Vous aurez également à bâtir une certaine foi en votre propre capacité d'apprentissage, une croyance dans le fait que même si vous ne savez pas tout ce dont vous avez besoin pour résoudre un problème, en vous attaquant un aspect et en apprenant ce qui lui est nécessaire, vous pourrez atteindre l'aspect suivant, etc... jusqu'à la résolution complète du problème.)

2. Aucun problème ne devrait être résolu deux fois.

Les cerveaux créatifs constituent une ressource précieuse et limitée. Ils ne devraient pas être gâchés à ré-inventer la roue alors que tant de nouveaux problèmes fascinants les attendent.

Pour vous comporter comme un hacker, vous devez considérer que le temps de réflexion des autres hackers est précieux. Si précieux que vous devriez vous faire un devoir quasi-moral de partager l'information, de résoudre les problèmes et d'en révéler les solutions de telle sorte que d'autres hackers puissent résoudre de nouveaux problèmes au lieu d'avoir à régler les anciens encore et encore.

Notez néanmoins que "Aucun problème ne devrait être résolu deux fois" n'implique pas que vous deviez considérer toutes les solutions existantes comme étant sacrées ou qu'il n'existe qu'une seule bonne solution à un problème donné. Bien souvent, nous pouvons en apprendre beaucoup sur un problème en commençant par en étudier une solution. Il est acceptable et souvent nécessaire de croire que nous pouvons faire mieux. Sont moins acceptables les barrières artificielles techniques, légales ou institutionnelles (telle que le code propriétaire) qui empêchent la réutilisation d'une bonne solution et qui forcent les gens à réinventer la roue.

(Ne vous sentez pas obligé d'offrir toute votre production, même si les hackers qui le font sont ceux qui suscitent le plus grand respect de leurs pairs. En vendre assez pour payer votre nourriture, votre logement et vos ordinateurs est en accord avec les valeurs des hackers. Monnayer vos compétences de hacker pour subvenir aux besoins de votre famille ou même vous enrichir ne pose aucun problème tant que cela ne nuit pas à votre loyauté envers votre art et vos comparses hackers.

3. Le diable est dans l'ennui et la corvée.

Les hackers (comme toute autre personne créative) ne devraient jamais s'ennuyer ou perdre leur temps à trimer sur des travaux stupides et répétitifs. En effet, lorsque cela leur arrive, ils ne sont plus en train de faire ce qu'eux seuls peuvent faire: résoudre de nouveaux problèmes. Ce gâchis affecte tout le monde. L'ennui et les corvées sont de ce fait bien plus que de simples désagréments, ils constituent de véritables maux.

Vous comporter comme un hacker implique que cette conviction doit être assez grande pour vous pousser à automatiser au maximum tous les aspects rébarbatifs, pour vous-même comme pour les autres (en particulier pour les autres hackers).

(A première vue, ceci semble souffrir une exception: les hackers font parfois des choses qui pourraient sembler répétitives ou ennuyeuses à un observateur extérieur. Ils le font dans le but de clarifier leur esprit, d'acquérir une compétence ou d'expérimenter quelque chose auquel il n'y a pas d'autre moyen d'accès. Mais c'est un choix; aucun être pensant ne devrait subir une situation qui l'ennuie.)

4. Vive la liberté.

Les hackers sont naturellement anti-autoritaristes. Une personne qui vous donne des ordres peut vous empêcher de résoudre un problème qui vous fascine; et vu le fonctionnement d'un esprit autoritaire, cette personne trouvera généralement une raison complètement stupide d'agir ainsi. Il faut donc combattre l'attitude autoritaire systématiquement pour éviter toute répression envers vous ou d'autres hackers.

(Cela ne veut pas dire qu'il faille combattre toute autorité. Les enfants ont besoin d'être guidés et les criminels contraints. Il se peut qu'un hacker accepte une certaine forme d'autorité pour atteindre un objectif qu'il juge plus important que le temps qu'il perd à suivre les ordres. Mais il s'agit là d'un compromis limité et conscient, bien loin de la reddition personnelle souhaitée par les autoritaristes.)

Les personnes autoritaires s'épanouissent dans la censure et le secret. Ils se méfient de la coopération volontaire et du partage d'information: la seule "coopération" qu'ils apprécient est celle qu'ils contrôlent. Pour vous comporter comme un hacker, vous développerez donc une hostilité instinctive envers la censure, le secret, l'utilisation de la force ou de la tromperie visant à soumettre des adultes responsables. Et vous sentirez prêt à vous battre pour cette conviction.

5. L'attitude ne remplace pas la compétence.

Pour être un hacker, vous développerez certaines facettes de cette attitude. Mais copier une attitude ne fera pas plus de vous un hacker qu'un athlète ou une star du rock. Devenir un hacker vous demandera de l'intelligence, de la pratique et de l'ardeur au travail.

Ainsi, vous vous méfierez de la seule attitude et respecterez les compétences réelles. Les hackers ne perdent pas leur temps avec les prétentieux. Mais ils vénèrent la compétence, en particulier si elle touche au hacking, même s'ils accordent de la valeur à tout type de compétence. Il est bon d'être compétent dans un domaine exigeant que peu maîtrisent, et si ce domaine implique acuité cérébrale, habileté et concentration, c'est encore mieux.

Révérer la compétence vous poussera à développer la vôtre; l'ardeur au travail se transcendera en un plaisir intense plutôt qu'en une corvée. Cette attitude est vitale pour devenir un hacker.

Les compétences essentielles du hacker

  1. Apprenez à programmer.
  2. Procurez-vous un Unix open-source et apprenez à vous en servir.
  3. Familiarisez-vous avec le World Wide Web et sachez écrire en HTML.
  4. Travaillez votre anglais véhiculaire.

L'attitude du hacker est vitale, mais les compétences le sont encore davantage. L'attitude ne remplace pas les compétences et vous devrez en posséder certaines avant qu'on puisse vous qualifier de hacker.

L'ensemble des compétences requises évolue avec la technologie. Il fut un temps où la programmation en assembleur en faisait partie alors qu'HTML n'y a fait son apparition que récemment. Mais aujourd'hui, cela implique les choses suivantes:

1. Apprenez à programmer.

La compétence du hacking par excellence. Si vous ne connaissez aucun langage de programmation, je vous conseille de commencer par Python. Sa conception est claire, il est bien documenté et relativement simple pour les débutants. Excellent comme premier langage, Python est aussi puissant, souple et adapté aux gros projets. J'ai rédigé une évaluation plus détaillée de Python. De bons tutoriels sont disponibles sur le site officiel de Python; vous en trouverez aussi un excellent sur les cercles de l'informatique, sur Guru99 [NDT: ainsi que sur jobtensor et sur pcwdld].

J'avais l'habitude de conseiller Java comme langage à apprendre assez tôt mais cette critique m'a fait changer d'avis (cherchez-y "les pièges de Java comme premier langage de programmation"). Un hacker ne peut pas aborder la recherche de solutions comme un plombier dans un magasin de bricolage; il doit parfaitement comprendre ce que font les composants. De ce fait, je pense qu'il vaut probablement mieux apprendre C et Lisp, puis Java.

Plus généralement, lorsqu'un langage en fait trop, il peut être à la fois adapté aux applications opérationnelles mais inadapté à l'apprentissage. Ce problème ne se limite pas aux langages; les socles techniques web tels que RubyOnRails, CakePHP ou Django permettent d'atteindre très facilement un niveau de compréhension superficielle qui s'avère complètement insuffisant dès que l'on s'attaque à un problème ardu ou tout simplement que l'on souhaite déverminer la solution d'un problème simple.

Pour aborder sérieusement la programmation, vous apprendrez le C, le langage phare d'Unix. C++ est très lié au C; si vous en connaissez un, apprendre l'autre ne posera pas de problème. Mais aucun des deux n'est un bon langage à apprendre en premier. Par ailleurs, plus vous éviterez de programmer en C, plus vous serez productif.

C est très efficace et peu gourmand en ressources système. Malheureusement, cette efficacité du C exige de votre part une gestion manuelle des ressources de bas niveau (telle que la mémoire). Tout ce code de bas niveau est complexe, propice aux erreurs et vous coûtera de longues heures de déverminage. Vue la puissance des machines d'aujourd'hui, il est plus judicieux d'utiliser un langage qui exploite moins bien le temps de la machine mais bien mieux le vôtre. D'où Python.

D'autres langages ont une importance particulière aux yeux des hackers comme Perl et LISP. Cela vaut la peine d'apprendre Perl pour des raisons pratiques; il est très utilisé pour la génération de pages web et pour l'administration système, donc même si vous n'écrivez jamais de Perl vous-même, vous devriez l'apprendre pour être capable de le lire. Nombreux sont ceux qui utilisent Perl pour les mêmes raisons qui me poussent à vous conseiller Python: pour éviter de programmer en C lorsque son niveau de performance n'est pas indispensable. Et vous devrez comprendre leur code.

LISP vaut le détour pour l'illumination profonde que vous ressentirez lorsque vous aurez compris sa philosophie. Cette expérience fera de vous un meilleur développeur pour le reste de votre vie même si vous n'utilisez pas souvent LISP lui-même. (Vous pouvez vous faire une bonne première expérience de LISP en écrivant ou en modifiant des modes d'édition de l'éditeur de texte Emacs ou des plugins Script-Fu pour GIMP.)

Le mieux, en fait, est d'apprendre les cinq: Python, C/C++, Java, Perl, et LISP. En plus d'être les principaux langages du hacking, ils représentent des approches très différentes de la programmation qui auront chacune un effet bénéfique sur votre apprentissage.

Mais accumuler des langages ne vous fera pas atteindre le niveau de compétence d'un hacker ni même d'un développeur; vous devrez appréhender les problèmes de programmation de manière plus globale, indépendamment de tout langage. Pour être un véritable hacker, vous devez en arriver au point où vous pourrez apprendre un nouveau langage en quelques jours en croisant sa documentation avec vos connaissances. Vous devez donc apprendre quelques langages très différents les uns des autres.

Je ne détaillerai pas ici la façon d'apprendre à programmer: c'est un domaine complexe. Mais je peux vous dire que vous n'apprendrez pas dans les livres ou en suivant des cours: parmi les meilleurs hackers, certains, voire même la plupart, sont autodidactes. Les livres transmettent des éléments de connaissance tels que les fonctionnalités d'un langage, mais l'état d'esprit qui fait de ces connaissances une compétence active ne peut s'acquérir que par la pratique et l'apprentissage. Voici ce qui fonctionne: (a) lire du code et (b) écrire du code.

Peter Norvig, hacker de haut niveau chez Google et co-auteur du livre le plus populaire en IA, a écrit un excellent essai intitulé apprenez à programmer par vous-même en dix ans. Quelle est sa "recette"?

L'apprentissage de la programmation s'apparente à celui de l'écriture d'un langage naturel. Le mieux est encore de lire des textes d'auteurs reconnus, d'écrire un peu soi-même, de lire beaucoup, d'écrire un peu, de lire beaucoup, d'écrire un peu plus... jusqu'à ce que vos écrits commencent à refléter l'intensité et la concision de vos modèles.

Je détaille ce processus d'apprentissage dans Comment Apprendre Le Hacking qui propose une progression simple mais pas nécessairement facile.

Il fut un temps où trouver du code de qualité à lire n'était pas chose facile car rares étaient les gros programmes dont le code source était disponible; les hackers novices ne pouvaient pas donc pas le lire ni bricoler avec. La situation a complètement changé: les logiciels open-source, les outils de développement et les systèmes d'exploitation (construits par des hackers) sont maintenant accessibles à tous. Ce qui m'offre une transition toute trouvée pour le sujet suivant...

2. Procurez-vous un Unix open-source et apprenez à vous en servir.

Je pars du principe que vous disposez d'un ordinateur ou que vous pouvez en emprunter un. (Prenez un instant pour mesurer la portée de cette assertion. La culture hacker est née à une époque où les ordinateurs coûtaient si cher qu'un particulier ne pouvait pas s'en offrir un.) La première étape la plus importante pour un débutant est de se procurer une distribution Linux ou BSD, de l'installer et de la faire fonctionner.

Oui, il existe des systèmes d'exploitations alternatifs aux Unix. Mais ils sont distribués sous forme exécutable: vous ne pouvez ni lire ni modifier leur code. Apprendre à hacker sur une machine Microsoft Windows ou sur tout autre système propriétaire revient à apprendre à danser les jambes dans le plâtre.

Sous Mac OS X, c'est possible, mais seule une partie du système est open source; vous rencontrerez probablement de nombreux obstacles et il vous faudra éviter de prendre la mauvaise habitude de dépendre du code propriétaire d'Apple. Si vous vous focalisez sur l'Unix caché sous le capot, vous pourrez apprendre quelques petites choses utiles.

Unix est le système d'exploitation d'Internet. Bien que vous puissiez apprendre à utiliser Internet sans connaître Unix, vous ne pourrez pas hacker Internet sans comprendre Unix. C'est la raison pour laquelle la culture hacker est aujourd'hui plutôt centrée sur Unix. (Cela n'a pas toujours été le cas et certains hackers de la première heure ne s'en réjouissent pas, mais la symbiose entre Unix et Internet est devenue telle que même la puissance de Microsoft ne semble pas pouvoir l'ébranler.)

Donc prenez un Unix; pour ma part, j'aime bien Linux mais il en existe d'autres (et oui, on peut faire tourner Linux et Microsoft Windows sur la même machine ). Apprenez à vous en servir. Faites-le tourner. Bricolez avec. Connectez-vous à Internet avec. Lisez son code. Modifiez son code. Vous aurez de bien meilleurs outils de programmation (dont C, LISP, Python, et Perl) que sous Microsoft Windows, vous prendrez du plaisir et vous acquerrez inconsciemment de nombreuses connaissances jusqu'à devenir un maître hacker.

Pour en savoir plus sur Unix, lisez le loginataka. Vous pouvez également jeter un oeil à l'art de programmer sous Unix.

Pour vous procurer Linux, allez sur son site officiel: vous pourrez le télécharger, ou (meilleure idée) trouver un groupe d'utilisateurs de Linux qui vous aidera à l'installer.

Au cours des dix premières années de la vie de ce document, je trouvais toutes les distributions Linux équivalentes du point de vue d'un nouvel utilisateur. Mais en 2006-2007, l'une d'entre elles a surpassé les autres: Ubuntu. Si d'autres distros (= distribution) ont chacune leur domaine de prédilection, Ubuntu est de loin la plus facile d'accès pour les débutants sous Linux. Attention toutefois à l'interface "Unity", horrible et quasi-inutilisable, qu'Ubuntu a proposé en standard quelques années plus tard; préférez les variantes Xubuntu ou Kubuntu.

Vous trouverez aide et ressources concernant les Unix BSD sur www.bsd.org.

Une bonne manière de prendre la température est de booter (= démarrer votre ordinateur) sur ce que les passionnés de Linux appellent un live CD, une distribution qui travaille à partir du CD sans avoir à modifier votre disque dur. C'est lent parce que les lecteurs CD sont lents mais c'est un moyen simple et sans engagement d'évaluer les possibilités.

J'ai écrit une introduction sur les bases d'Unix et d'Internet.

Par le passé, j'ai déconseillé aux débutants d'installer Linux ou BSD eux-mêmes. Aujourd'hui, les installeurs automatiques rendent cette tâche possible, même pour un débutant. Pour autant, je renouvelle mon conseil d'entrer en contact avec un groupe local d'utilisateurs de Linux et de de demander de l'aide. Cela ne peut pas faire de mal; au contraire, cela pourrait vous aider au démarrage.

3. Familiarisez-vous avec le World Wide Web et sachez écrire en HTML.

Pour la plupart, les produits de la culture hacker fonctionnent de manière imperceptible pour le grand public: ils contribuent au bon fonctionnement des usines, des bureaux et des universités sans avoir d'impact évident sur le mode de vie des non-hackers. Le Web est une exception notable, ce bon gros jouet de hacker dont même les politiciens admettent qu'il a changé le monde. Ne serait-ce que pour cette simple raison, vous apprendrez comment fonctionne le Web.

Cela ne veut pas dire apprendre à utiliser un navigateur (tout le monde peut le faire) mais apprendre à écrire en HTML, le langage de balises du Web. Si vous ne savez pas programmer, écrire en HTML vous donnera quelques habitudes qui vous y aideront. Donc, construisez une page d'accueil. Essayez de respecter le XHTML, un langage plus rigoureux que le HTML classique. (Vous trouverez de bons tutoriels pour débuter sur le Web. En voici un premier, et un autre.)

Mais avoir une page d'accueil est loin de faire de vous un hacker. Le Web est plein de pages d'accueil. La plupart sont vides et sans intérêt, mais tentent de le cacher derrière une apparence très soignée (j'approfondis ce point sur l'enfer du HTML).

Pour en valoir la peine, votre page doit offrir du contenu; elle doit être intéressante et/ou utile aux autres hackers. Ce qui nous amène au sujet suivant...

4. Travaillez votre anglais véhiculaire.

En tant qu'Américain et de langue maternelle anglaise moi-même, j'étais plutôt réticent à suggérer cela, craignant d'être taxé d'un certain impérialisme culturel. Mais plusieurs locuteurs natifs d'autres langues m'ont vivement conseillé de souligner le fait que l'anglais est le langage de base de la culture hacker et d'Internet, et que vous en aurez besoin pour faire partie de la communauté des hackers.

En 1991, j'ai appris que de nombreux hackers pour qui l'anglais était une langue seconde l'utilisaient dans leurs discussions techniques bien qu'ils eussent la même langue maternelle; on m'a dit à l'époque que l'anglais avait un vocabulaire technique plus riche que les autres langues et qu'il était donc un bon outil pour ce type d'échange. Pour des raisons similaires, les traductions de livres techniques écrits en anglais sont rarement satisfaisantes (lorsqu'elles existent).

Linus Torvalds, un Finlandais, commente son code en anglais (il ne lui est apparemment jamais venu à l'esprit de faire autrement). Sa maîtrise de l'anglais a joué un rôle important dans sa capacité à recruter une communauté mondiale de développeurs pour Linux. Un exemple à suivre.

Avoir l'anglais comme langue maternelle ne garantit pas que vos compétences linguistiques soient suffisantes pour agir en qualité de hacker. Si vos écrits sont truffés de fautes d'orthographe ou de grammaire, de nombreux hackers (moi inclus) auront tendance à vous ignorer. Une écriture peu soignée n'implique pas systématiquement une réflexion désordonnée mais nous avons souvent constaté que la corrélation était plutôt grande et nous n'avons que faire de cerveaux désordonnés. Si vous ne savez pas écrire de manière satisfaisante, développez cette compétence.

Le statut dans la culture hacker

  1. Ecrivez des logiciels open-source
  2. Aidez à tester et à déverminer des logiciels open-source
  3. Publiez des informations utiles
  4. Contribuez au bon fonctionnement de l'infrastructure
  5. Soutenez la culture hacker elle-même

Comme la plupart des cultures où la notion d'argent est absente, la culture hacker est basée sur la réputation. Vous résolvez des problèmes intéressants, mais à quel point le sont-ils? Les seuls qui soient aptes à en juger sont ceux parmi vos pairs qui ont au moins votre niveau de compétence.

De même, ce que pensent les autres hackers de vos compétences sera votre principal critère d'évaluation (ce qui explique que vous ne soyez pas vraiment un hacker tant que d'autres hackers ne vous reconnaissent pas systématiquement comme tel). Ceci est estompé par l'image qu'a le hacking d'un travail solitaire et par un tabou (en recul constant depuis la fin des années 1990 mais toujours présent) qui voudrait que l'égo ou la validation externe n'entrent pas en ligne de compte dans la motivation des hackers.

Plus précisément, les hackers ont ce que les anthropologues appellent une culture du don. Vous gagnez en statut et en réputation non pas en dominant d'autres personnes, ni en étant beau, ou en possédant ce que veulent les autres, mais bien en faisant des dons. En particulier en donnant de votre temps, de votre créativité, et en donnant les produits de vos savoirs-faire.

Pour être respecté par les hackers, vous pouvez faire l'une des cinq choses suivantes:

1. Ecrivez des logiciels open-source

La première (la plus importante et la plus coutumière) est d'écrire des programmes que d'autres hackers trouvent amusants ou utiles, et de faire don des sources afin que d'autres puissent s'en servir.

(Nous avions l'habitude d'appeler ces travaux des "logiciels libres", en anglais "free software", mais le mot "free" était trop ambigu [NDT: en effet, "free software" peut signifier "logiciel libre" ou "logiciel gratuit"]. La plupart d'entre nous préfèrent aujourd'hui le terme "logiciel open-source").

Les demi-dieux les plus vénérés par les hackers sont des gens qui ont écrit de gros programmes efficaces qui répondaient à un besoin répandu et qui en ont fait don pour que tout le monde puisse s'en servir.

Faisons un peu d'histoire: les hackers ont toujours admiré les développeurs open-source qui forment le noyau dur de leur communauté. Pourtant, avant le milieu des années 1990, la plupart des hackers travaillaient essentiellement sur des logiciels propriétaires. C'était toujours vrai quand j'ai rédigé la première version de ce document en 1996. Il a fallu attendre que les logiciels open source se généralisent après 1997 pour changer cet état de choses. Aujourd'hui, la "communauté des hackers" et les "développeurs open-source" sont deux expressions décrivant essentiellement la même culture et la même population, mais il est bon de se souvenir qu'il n'en a pas toujours été ainsi. (Pour approfondir ce point, voyez la section intitulée "Note historique: hacking, open source et logiciel libre".)

2. Aidez à tester et à déverminer des logiciels open-source

La contribution de ceux qui maintiennent et déverminent les logiciels open-source est également très utile. Dans ce monde imparfait, nous passons inévitablement l'essentiel de notre temps de développement logiciel en phase de déverminage. C'est pourquoi tout auteur censé de logiciels open-source vous dira que les beta-testeurs (qui savent décrire les symptômes clairement et localiser l'origine des problèmes, qui tolèrent les erreurs d'un premier jet et qui consentent à suivre certaines procédures de diagnostic) valent leur pesant d'or. Un seul beta-testeur peut suffire à transformer une phase cauchemardesque, interminable et épuisante en une simple nuisance salutaire.

Si vous êtes débutant, trouvez un programme en cours de développement qui vous intéresse et soyez un bon beta-testeur. Tester des programmes vous amènera à les déverminer puis à les modifier. C'est un excellent moyen d'apprendre et d'établir un bon karma avec des gens qui vous aideront en retour.

3. Publiez des informations utiles

Il est également très utile de synthétiser des informations importantes et de les publier sous la forme de pages web ou de documents (questions fréquentes...).

On gagne quasiment autant de respect en maintenant une FAQ technique de première classe qu'en développant des logiciels open-source.

4. Contribuez au bon fonctionnement de l'infrastructure

La culture hacker (tout comme la conception et le développement d'Internet) repose sur le volontariat. De nombreuses tâches ingrates sont nécessaires pour l'entretenir: administrer les listes de diffusion, modérer les forums, maintenir les gros sites d'archivage et de téléchargement de logiciels, développer les RFCs et autres standards techniques.

Ces travaux forcent le respect car chacun sait qu'ils sont chronophages et moins amusants que de toucher au code. Les mener à bien prouve votre dévouement.

5. Soutenez la culture hacker elle-même

Enfin, vous pouvez soutenir et contribuer au développement de la culture elle-même (en écrivant par exemple un manuel d'introduction expliquant comment devenir un hacker :-)). Vous devrez pour cela avoir un peu d'ancienneté et être connu pour l'un des quatre premiers types de contributions.

La culture hacker n'a pas vraiment de dirigeants mais elle a ses héros, ses vieux sages, ses historiens et ses porte-paroles. Quand vous aurez passé assez de temps les mains dans le cambouis, vous en ferez peut-être partie. Attention, les hackers se méfient du poids de l'égo chez leurs vieux sages, ce type de célébrité est donc à double tranchant. Mieux vaut la laisser venir à soi que de la rechercher à tout prix; et si cela vous arrive restez modeste et digne de votre statut.

Le lien hacker / nerd

Contrairement à la croyance populaire, tous les hackers ne sont pas des polars technophiles [NDT: pas facile de traduire "nerd"]. Ca aide bien sûr et de nombreux hackers le sont. Etre asocial permet de rester concentré sur les choses importantes telles que la réflexion et le hacking.

Nombreux sont les hackers qui se présentent plutôt comme des "geeks", se défaussant ainsi d'être asociaux (et d'adorer la science fiction et les jeux de stratégie, des goûts partagés par de nombreux hackers). Le terme "nerd" avait ce sens dans les années 1990: il était un tantinet péjoratif mais "geek" l'était bien davantage. Peu après l'an 2000, ils ont été inter-changés, du moins dans la culture populaire nord-américaine, et l'on sent aujourd'hui une certaine fierté à se dire "geek" même chez les non-technophiles.

Si vous parvenez à vous consacrer suffisamment au hacking pour y exceller tout en menant une vie sociale normale, bravo. C'est plus facile aujourd'hui que lorsque j'ai débuté dans les années 1970: la culture de masse est devenue bienveillante envers les polars technophiles. Et un nombre croissant de personnes se rendent même compte que les hackers sont souvent de bons amants et de bons conjoints.

Si le hacking vous attire parce qu'il n'y a rien d'autre dans votre vie, aucun problème; au moins, vous ne vous disperserez pas. Vous aurez peut-être une vie sociale plus tard.

Eléments de style

A nouveau, pour être un hacker, vous devez en adopter l'état d'esprit. Certaines activités s'effectuent loin du clavier et peuvent vous y aider. Rien ne remplace le hacking, mais de nombreux hackers les pratiquent en se sentant en résonance avec l'essence du hacking.

Si vous êtes en résonnance avec ce qui précède, vous avez de bonnes bases pour devenir un hacker. Pourquoi choisir ces activités-là, ce n'est pas très clair mais elles semblent liées par un dosage de compétences "cerveau gauche/cerveau droit" qui aurait son importance. Les hackers ont besoin de passer instantanément d'un mode de raisonnement logique à un autre où ils font abstraction de la logique apparente d'un problème.

Travaillez aussi intensément que vous jouez et jouez aussi intensément que vous travaillez. Pour les véritables hackers, les frontières entre "jouer" et "travailler", "la science" et "l'art" ont tendance à disparaître ou à fusionner en une allégresse créative intense. Ne vous contentez pas non plus d'un champ restreint de compétences. Bien que la plupart des hackers se qualifient de développeurs, ils sont souvent plus que compétents dans des domaines connexes tels que l'administration système, la conception web et la réparation matérielle de PC. De même, un hacker administrateur système sera certainement compétent en programmation de scripts et en conception web. Les hackers ne font pas les choses à moitié: quand ils s'investissent dans un domaine, ils finissent par y exceller.

Enfin, quelques petites choses à ne pas faire.

Déroger à ces règles vous donnerait mauvaise réputation. Les hackers ont une mémoire à long terme; ils pourraient mettre des années à pardonner vos erreurs de jeunesse et à vous accepter.

Le problème des pseudonymes mérite qu'on le souligne. Dissimuler votre identité derrière un pseudo est une attitude juvénile et stupide, caractéristique des crackers, des utilisateurs de warez et d'autres formes de vie encore moins évoluée. Les hackers ne se comportent pas comme cela; ils sont fiers de ce qu'ils font et souhaitent l'associer à leur véritable nom. Abandonnez votre pseudo si vous en avez un: dans la culture hacker il ferait de vous un tocard.

Note historique: hacking, open source et logiciel libre

Les conditions qui m'ont amené à rédiger la première version de ce document fin 1996 ont énormément évolué depuis. Revenir brièvement sur ces changements clarifiera peut-être la relation qu'entretiennent l'open source, le logiciel libre et Linux d'une part et la communauté hacker d'autre part. Si cela n'attise pas votre curiosité, passez directement aux questions fréquentes et à la bibliographie.

La philosophie et la communauté hacker telles que je les décris sont bien antérieures à l'émergence de Linux après 1990; je m'y suis impliqué pour la première fois aux alentours de 1976 et l'on peut suivre leurs traces jusqu'au début des années 1960. Mais avant Linux, on pratiquait le hacking soit sur des systèmes d'exploitation propriétaires, soit sur des systèmes faits-maison et quasi-expérimentaux (comme l'ITS du MIT) qui n'ont jamais été déployés en dehors de leurs berceaux académiques. Certes, il y a eu quelques tentatives avant Linux pour faire évoluer cette situation mais leur impact a été plus que marginal et elles n'ont pas quitté le cercle des passionnés purs et durs, minoritaires même parmi les hackers.

Ce que nous appelons aujourd'hui "open source" remonte aussi loin que la communauté des hackers mais cette pratique populaire n'est devenue un mouvement conscient, théorisé et documenté qu'en 1985. La préhistoire s'est terminée lorsqu'en 1985, un éminent hacker appelé Richard Stallman ("RMS") a donné un nom à ce mouvement: "le logiciel libre". Mais plus que de le nommer, il revendiquait ce mouvement; il a donné une connotation idéologique au "logiciel libre" qui n'a pas su séduire les masses. Le label "logiciel libre" a donc été rejeté haut et fort par une minorité substantielle de hackers (principalement ceux d'Unix BSD) et utilisé avec de sérieuses réserves (mais non exprimées) par la plupart des autres (moi inclus).

Malgré ces réserves, la revendication par RMS de définir et de guider la communauté des hackers sous la bannière "logiciel libre" a globalement tenu le choc jusqu'au milieu des années 1990. C'est l'avènement de Linux qui l'a sérieusement remise en cause. Linux a donné un environnement naturel au développement open-source. De nombreux projets que l'on qualifierait aujourd'hui d'open-source ont migré des Unixes propriétaires vers Linux. La communauté Linux s'est développée exponentiellement, devenant bien plus importante et hétérogène que ne l'était la culture hacker avant Linux. RMS essaya de coopter toute cette activité dans le mouvement du "logiciel libre" mais sa détermination s'avéra insuffisante face à l'extraordinaire diversité de la communauté Linux et au scepticisme affiché de son fondateur, Linus Torvalds. Torvalds continua à utiliser le terme "logiciel libre" faute de mieux mais il rejeta l'idéologie que RMS lui avait associé. De nombreux jeunes hackers en firent autant.

En 1996, lors de la publication de la première version de ce document, la communauté des hackers se réorganisait autour de Linux et de quelques autres systèmes d'exploitation open source inspirés d'Unix BSD. Le souvenir des décennies passées à développer des logiciels propriétaires sur des systèmes d'exploitation propriétaires était encore très prégnant mais cette époque semblait définitivement révolue. Les hackers étaient de plus en plus attachés aux projets open-source tels que Linux ou Apache.

Toutefois, le terme "open source" n'émergea qu'en début 1998. Six mois après que je l'eus proposé, la majorité de la communauté des hackers l'avaient adopté. Les réticences minoritaires venaient de ceux qui restaient attachés à l'idéologie liée au terme "logiciel libre". Depuis 1998, et particulièrement après 2003, les notions de "hacking" et de "développement logiciel open-source (et libre)" ont pratiquement fusionné. Il est aujourd'hui très difficile de les distinguer et cet état de fait semble durable.

Mais il est bon de se rappeler qu'il n'en a pas toujours été ainsi.

Autres ressources

Paul Graham a écrit un essai intitulé Les grands hackers, et un autre sur les étudiants, tous deux empreints de sagesse.

Comment devenir un développeur est un excellent complément. Il donne de bons conseils sur le codage et les compétences, mais aussi sur l'esprit d'équipe.

J'ai également écrit une brève histoire du monde des hackers.

J'ai écrit un papier, La cathédrale et le bazar, qui explique en détail le fonctionnement des cultures Linux et open-source. Sujet que j'ai repris dans le document qui l'a suivi à la conquète de la noosphère.

Rick Moen a rédigé un excellent document sur la manière d'animer un groupe d'utilisateurs de Linux.

Rick Moen et moi avons co-rédigé un autre document expliquant comment poser des questions intelligentes. Cela vous aidera à solliciter de l'aide en augmentant vos chances de l'obtenir.

S'il vous souhaitez comprendre le fonctionnement de base des ordinateurs personnels, d'Unix et d'Internet, lisez le guide pratique des fondamentaux d'Unix et d'Internet.

Quand vous publiez des logiciels ou des correctifs, essayez de suivre les recommandations du guide pratique de la publication de logiciels.

Si le poème zen vous a plu, vous pourriez également apprécier L'administrateur non-administré: les koans Unix de maître Foo.

Questions fréquentes

Q: Comment savoir si je suis déjà un hacker? Q: Pourriez-vous m'apprendre à hacker? Q: Dans ce cas, par où commencer? Q: Quand faut-il commencer? Suis-je trop âgé pour apprendre? Q: Combien de temps va durer mon apprentissage du hacking? Q: Visual Basic est-il un bon langage pour faire ses premiers pas? Q: M'aideriez-vous à craquer un système ou m'apprendriez-vous à craquer? Q: Comment récupérer le mot de passe du compte de quelqu'un d'autre? Q: Comment puis-je avoir accès, lire et surveiller les mails de quelqu'un d'autre? Q: Comment puis-je m'arroger les privilèges système d'un canal IRC? Q: Je me suis fait craquer. M'aiderez-vous à me protéger contre d'autres attaques? Q: Je rencontre des problèmes avec Windows. Pouvez-vous m'aider? Q: Où puis-je rencontrer de véritables hackers avec qui discuter? Q: Pourriez-vous suggérer quelques livres utiles sur les sujets liés au hacking? Q: Dois-je être bon en maths pour devenir un hacker? Q: Quel langage devrais-je apprendre en premier? Q: De quel type de matériel ai-je besoin? Q: J'aimerais contribuer. Pourriez-vous m'aider à choisir un problème sur lequel travailler? Q: Dois-je haïr et fustiger Microsoft? Q: Mais ces logiciels open-source ne vont-ils pas empêcher les développeurs de vivre de leur art? Q: Où puis-je me procurer un Unix libre?

Q: Comment savoir si je suis déjà un hacker?

A: Posez-vous les questions suivantes:

Si vous pouvez répondre oui à ces trois questions, vous êtez déjà un hacker. Deux ne suffisent pas.

Le premier test concerne vos compétences. Vous le passerez probablement avec succès si vous avez les compétences techniques minimales décrites ci-avant. Vous le passez haut la main si vous avez déjà produit un certain volume de code accepté par un projet de développement open-source.

Le deuxième test concerne votre attitude. Si les cinq principes du hacker vous paraissent évidents, qu'ils ressemblent plus à une description de votre mode de vie qu'à quelque chose de nouveau, vous êtes déjà à moitié qualifié. L'être complètement dépend de votre degré d'identification aux projets à long terme de la communauté des hackers.

Voici une liste non exhaustive mais assez indicative de certains de ces projets. Cela vous tient-il à coeur que Linux s'améliore et se propage? La liberté des logiciels vous passionne-t-elle? Etes-vous hostile aux monopoles? Etes-vous animé par la conviction que les ordinateurs peuvent être les instruments d'une responsabilisation qui rendra le monde plus riche et plus humain?

Une certaine prudence s'impose ici. La communauté des hackers a des intérêts politiques spécifiques, essentiellement défensifs, comme de défendre la liberté d'expression et de repousser toute prise de pouvoir sur la "propriété intellectuelle" qui viserait à rendre l'open-source illégal. Certains de ces projets de long terme prennent la forme d'organisations de protection des libertés civiques comme l'Electronic Frontier Foundation, qu'il est d'usage de soutenir. Mais à part cela, la plupart des hackers considèrent avec soupçons les tentatives de systématiser leur attitude en un programme politique; nous avons appris, dans la douleur, que ces tentatives sont clivantes et perturbatrices. Si quelqu'un essaie de vous recruter pour renverser votre gouvernement au nom de l'attitude des hackers, c'est qu'il n'a rien compris. La bonne réponse serait probablement: "ferme-la et montre leur ton code".

Le troisième test renferme un problème de fermeture transitive. Je remarquais dans la section appelée "Qu'est-ce qu'un hacker?" que le fait d'être un hacker consistait en partie à appartenir à une sous-culture particulière ou à un réseau social ayant une histoire commune, un dedans et un dehors. Par le passé, il y avait beaucoup moins de cohésion et de conscience de soi qu'aujourd'hui chez les hackers. Mais l'aspect réseau social a pris de l'importance ces trente dernières années grâce à Internet qui a permis de tisser et de maintenir des relations avec le coeur de la sous-culture des hackers. Un indice comportemental évident de ce changement est que, dans ce siècle, nous avons nos propres T-shirts.

Les sociologues, qui étudient les réseaux du type de celui de la culture hacker sous l'intitulé "universités invisibles", ont noté que l'une des caractéristiques de ces réseaux était d'avoir des gardiens: des membres centraux ayant l'autorité sociale d'affilier de nouveaux membres au réseau. Comme la culture hacker est une "université invisible" informelle, le rôle de gardien l'est aussi. Mais s'il y a une chose que tous les hackers comprennent naturellement, c'est que tout hacker n'est pas un gardien. Les gardiens doivent avoir un certain degré d'expérience et de réussite avant d'être anoblis. Ce degré est difficile à quantifier, mais tous les hackers le détectent naturellement lorsqu'ils le rencontrent.

Q: Pourriez-vous m'apprendre à hacker?

A: Depuis la première publication de cette page, je reçois plusieurs demandes par semaine (souvent plusieurs par jour) pour "enseigner tout sur le hacking". Malheureusement, je n'ai ni le temps ni l'énergie de le faire; mes propres projets de hacking et mon travail de défenseur de l'open-source me prennent 110% de mon temps.

Même si le faisais, le hacking est une attitude et un ensemble de compétences que vous devez vraiment acquérir par vous-même. Vous vous rendrez compte que même si les véritables hackers acceptent de vous aider, ils ne vous respecteront pas si vous les implorez de vous nourir de leurs connaissances à la petite cuillère.

Commencez par apprendre quelques petites choses. Montrez que vous essayez, que vous êtes capable d'apprendre par vous-même. Vous pourrez alors poser aux hackers des questions précises.

Si vous demandez conseil à un hacker par email, sachez deux choses. La première: les gens qui sont trop paresseux ou négligents par écrit ont généralement un mental trop paresseux et négligent pour faire de bons hackers; donc prenez garde à orthographier correctement, soignez votre grammaire et votre ponctuation, sans quoi vous serez probablement ignoré. Deuxièmement, n'imaginez même pas demander que l'on vous réponde à une adresse différente de votre adresse d'expédition; ceux qui font cela utilisent généralement des comptes volés et nous n'avons aucun intérêt à récompenser ou à aider les voleurs.

Q: Dans ce cas, par où commencer?

A: Le meilleur point de départ est certainement d'assister à une réunion d'un LUG (Linux User Group). Vous trouverez ces groupes sur la page d'information générale du LDP; il y en a probablement un près de chez vous, peut-être associé à une université ou une école d'ingénieur. Les membres des LUG vous donneront probablement une distribution Linux si vous le leur demandez et ils vous aideront certainement à en installer une et à faire vos premiers pas.

Prochaine étape (première étape si vous ne pouvez pas trouver de LUG près de chez vous): trouvez un projet open-source qui vous intéresse. Commencez à en lire le code et prenez connaissance des problèmes techniques non résolus. Apprenez à contribuer et rejoignez le projet.

Le seul moyen est de travailler à améliorer vos compétences. Si vous me redemandez en privé comment débuter, je vous répèterai exactement la même chose car je ne connais aucun raccourci magique. Et si vous manquez d'endurance pour lire cette foire aux questions jusqu'au bout et comprendre que le seul moyen de devenir un hacker est de développer vos compétences, vous êtes sans espoir.

Une autre possibilité intéressante est de vous rendre à un club de hackers. Un nombre florissant de personnes créent des lieux physiques où ils peuvent se rencontrer pour travailler sur des projets matériels et logiciels, ou encore travailler en solo dans une atmosphère agréable. Les clubs de hackers mettent souvent en commun des outils et des équipements spécialisés qu'il serait trop coûteux d'acheter ou de stocker en tant que particulier. Les clubs de hackers sont faciles à trouver sur Internet; il y en a peut-être un près de chez vous.

Q: Quand faut-il commencer? Suis-je trop âgé pour apprendre?

A: L'âge n'a aucune importance tant que vous êtes motivé. Le hacking semble susciter un intérêt chez la plupart de ses adeptes entre 15 et 20 ans, mais je connais des exceptions au-delà et en-deçà.

Q: Combien de temps va durer mon apprentissage du hacking?

A: Tout dépend de votre talent et des efforts que vous y consacrerez. La plupart des gens qui s'y mettent sérieusement acquièrent des compétences solides en un an et demi à deux ans. Mais dans le hacking comme dans de nombreux autres domaines, il faut compter environ dix ans pour atteindre un certain niveau d'expertise. Et si vous êtes un véritable hacker, vous consacrerez le reste de votre vie à l'apprentissage et au perfectionnement de votre art.

Q: Visual Basic est-il un bon langage pour faire ses premiers pas?

A: Si vous posez cette question, c'est probablement que vous songez à essayer de hacker sous Microsoft Windows. C'est une mauvaise idée en soi. Je ne plaisantais pas lorsque je comparais l'apprentissage du hacking sous Windows avec celui de la danse en ayant les jambes dans le plâtre. N'essayez pas, c'est atroce et cela n'est pas près de s'arranger.

Visual Basic, en particulier, souffre du problème de non-portabilité. Bien qu'il existe des implémentations open-source de Visual Basic, les standards ECMA ne couvrent qu'une portion congrue de ses interfaces. Sous Windows, l'essentiel de sa plateforme est propriétaire, dépendant d'un éditeur unique: Microsoft. A moins d'être extrêmement prudent quant aux fonctionnalités utilisées (plus qu'un débutant n'est capable de l'être), vous vous rendrez captif des seules plateformes supportées par Microsoft. Si vous débutez sous Unix, de meilleurs langages et bibliothèques sont disponibles. Python par exemple.

Par ailleurs, comme les autres Basics, Visual Basic est un langage mal conçu qui vous donnera de mauvaises habitudes. Non, ne me demandez pas de les décrire de manière exhaustive: cela prendrait un livre entier. Apprenez plutôt un langage bien conçu.

L'une de ces mauvaises habitudes est de dépendre d'un éditeur unique de bibliothèques, de composants et d'outils de développement. De manière générale, tout langage qui n'est pas complètement supporté au moins sous Linux, l'un des BSDs et/ou sous trois systèmes d'exploitation d'éditeurs différents est un mauvais langage pour apprendre à hacker.

Q: M'aideriez-vous à craquer un système ou m'apprendriez-vous à craquer?

A: Non. Même si j'avais le temps pour faire du tutorat, un lecteur de cette FAQ encore capable de poser cette question serait trop stupide pour être éduqué. Tout email allant dans ce sens et m'étant adressé sera ignoré ou suscitera une réponse plus qu'impolie.

Q: Comment récupérer le mot de passe du compte de quelqu'un d'autre?

A: Ca, c'est du cracking. Allez-vous en, idiot.

Q: Comment puis-je avoir accès, lire et surveiller les mails de quelqu'un d'autre?

A: Ca, c'est du cracking. Allez vous faire voir, imbécile.

Q: Comment puis-je m'arroger les privilèges système d'un canal IRC?

A: Ca, c'est du cracking. Hors d'ici, crétin.

Q: Je me suis fait craquer. M'aiderez-vous à me protéger contre d'autres attaques?

A: Non. Jusqu'à présent, tous ceux qui m'on posé cette question étaient des idiots qui faisaient tourner Windows. Il est impossible de vraiment sécuriser Windows contre les attaques système; le code et l'architecture ont trop de défauts de conception, ce qui rend la sécurisation de Windows aussi difficile que d'écoper un bateau avec une passoire. La seule prévention est de basculer sous Linux ou un autre système d'exploitation conçu un tant soit peu pour la sécurité.

Q: Je rencontre des problèmes avec Windows. Pouvez-vous m'aider?

A: Oui. Ouvrez une invite de commandes DOS et tapez "format c:". Quel que soit le problème rencontré, il sera résolu en quelques minutes.

Q: Où puis-je rencontrer de véritables hackers avec qui discuter?

A: Le meilleur moyen est de trouver un groupe local d'utilisateurs d'Unix ou de Linux et de vous rendre à leurs réunions (vous trouverez des liens vers plusieurs listes de groupes d'utilisateurs sur le LDP).

(J'avais pour habitude de dire qu'on ne trouvait aucun véritable hacker sur IRC mais il me semble que la situation évolue. Apparemment, certaines communautés de véritables hackers, attachés aux logiciels comme GIMP ou Perl, ont maintenant des canaux IRC.)

Q: Pourriez-vous suggérer quelques livres utiles sur les sujets liés au hacking?

A: Je maintiens une liste de lecture Linux que vous pourriez trouver utile. Le Loginataka pourrait également vous intéresser.

Pour commencer en Python, lisez le tutoriel sur le site officiel Python.

Q: Dois-je être bon en maths pour devenir un hacker?

A: Non. Le hacking utilise très peu de mathématiques formelles ou d'arithmétique. En particulier, vous n'aurez généralement pas besoin de trigonométrie ni d'analyse (sauf dans certains domaines tel que le graphisme en 3 dimensions). Il est bon d'avoir quelques connaissances en logique formelle et en algèbre booléenne. Quelques bases en théorie des ensembles peuvent s'avérer utiles (états finis, combinatoire et graphes).

Beaucoup plus important: vous devez être capable de penser logiquement et de suivre un raisonnement précis comme le font les mathématiciens. Si le corps des mathématiques ne vous aidera pas, la rigueur et l'intelligence nécessaires à cette discipline seront indispensables. S'il vous manque l'intelligence, il y a peu d'espoir pour vous en tant que hacker; si vous manquez de rigueur, tâchez de progresser dans ce domaine.

Un bon moyen de savoir si vous avez les bases nécessaires est de vous procurer un exemplaire du livre de Raymond Smullyan Quel est le nom de ce livre?. Les énigmes logiques et ludiques de Smullyan reflètent bien l'esprit hacker. Etre capable de les résoudre est bon signe; y prendre du plaisir en est un encore meilleur.

Q: Quel langage devrais-je apprendre en premier?

A: XHTML (le dernier dialecte d'HTML) si vous ne le connaissez pas déjà. Vous trouverez de nombreux mauvais livres certes bien léchés sur HTML, mais malheureusement peu de bons. Celui que je préfère est HTML: The Definitive Guide.

Mais HTML n'est pas un langage de programmation. Si vous êtes prêt à débuter la programmation, je vous suggère de commencer par Python. D'autres conseilleront Perl mais ce dernier est plus difficile à apprendre et (à mon avis) moins bien conçu.

Le langage C est très important mais il est aussi beaucoup plus difficile que Python ou Perl. N'essayez pas de l'apprendre en premier.

Aux utilisateurs de Windows: ne vous contentez pas de Visual Basic. Il vous donnerait de mauvaises habitudes et il n'est pas portable en-dehors de Windows. Evitez-le.

Q: De quel type de matériel ai-je besoin?

A: Il fut un temps où les ordinateurs personnels étaient plutôt faibles en puissance de calcul et en mémoire vive, ce qui limitait artificiellement le processus d'apprentissage des hackers. Tout a changé au milieu des années 90: une machine dotée d'un Intel 486DX50 ou plus est bien assez puissante pour les travaux de développement, pour faire fonctionner une interface graphique et accéder au réseau Internet, et les plus petits disques du commerce sont aujourd'hui bien assez gros.

Le plus important pour une machine sur laquelle vous allez apprendre, c'est qu'elle soit compatible avec Linux (ou avec un BSD, selon vos choix). Ce qui est vrai pour la quasi totalité des machines modernes. Les seules parties vraiment récalcitrantes sont les modems et les cartes réseau sans fil pour lesquels certaines machines ont des équipements spécifiquement développés pour Windows et qui ne fonctionnent pas sous Linux.

Il y a une foire aux questions concernant la compatibilité matérielle dont la dernière version se trouve ici.

Q: J'aimerais contribuer. Pourriez-vous m'aider à choisir un problème sur lequel travailler?

A: Non car je ne connais ni vos talents ni vos centres d'intérêt. Sans auto-détermination, vous ne tiendrez pas le cap, ce qui explique que se laisser guider par d'autres personnes ne fonctionne quasiment jamais.

Q: Dois-je haïr et fustiger Microsoft?

A: Non. Non que Microsoft ne soit pas détestable, mais une culture hacker existait bien avant Microsoft et continuera d'exister bien après que Microsoft sera devenu de l'histoire ancienne. Employez votre énergie à aimer votre métier plutôt qu'à haïr Microsoft. Produisez un code de qualité, cela fustigera Microsoft bien assez sans pour autant polluer votre karma.

Q: Mais ces logiciels open-source ne vont-ils pas empêcher les développeurs de vivre de leur art?

A: Cela semble peu probable: jusqu'à présent, l'industrie du logiciel open-source semble créer plus d'emplois qu'elle n'en détruit. Si nous considérons que de développer un logiciel a économiquement plus de valeur que de ne pas l'écrire, un développeur sera rétribué que ce logiciel devienne open-source ou non après son développement. Et il semblerait que peu importe le nombre de logiciels libres écrits, la demande de nouvelles applications sur mesure continue à croître. J'ai approfondi ce sujet sur ces pages concernant l'Open Source.

Q: Où puis-je me procurer un Unix libre?

A: Si un Unix n'est pas déjà installé sur votre machine, j'ai inclus dans cette page des liens qui vous mèneront aux principaux Unix libres. Pour être un hacker, vous avez besoin de motivation, d'initiative et de la faculté d'auto-apprentissage. A vous de jouer...