SUR LE CHEMIN DU HACKING ! Kali Academy, trois mois d’initiation 👺
Tags: webdev, javascript, beginners, programming
Published: 2024-06-14 22:20:06

Et oui 🙂 vous ne rêvez pas ! Je dis dis bien hacking ! Avant tout, mettons-nous d'accord sur la terminologie “Hacking”. Les médias nous ont menti sur le hacking, ils confondent le hacking au cracking. Richard Stallman, un fervent défenseur du logiciel libre et fondateur du mouvement du logiciel libre, définit un hacker comme quelqu'un qui aime jouer avec des systèmes, comprendre leur fonctionnement interne et les améliorer. Le hacking, dans ce contexte, est un acte de créativité, d'innovation et de résolution de problèmes, souvent associé à la programmation informatique. C’est une part de vérité, le hacking est bien plus que cette définition, il est en soi un état d’esprit, une manière de penser… Je vous conseille de lire cet ouvrage pour en savoir plus sur cette littérature : “Hackers and Painters: Big Ideas from the Computer Age” de Paul Graham.

## Introduction

Dans cet article, je vais vous parler du parcours que propose Kali Academy aux jeunes développeurs pour les initier au Hacking. Kali Academy est une académie qui vise à promouvoir les valeurs de l'open source dans les régions les moins représentées notamment en Afrique, voir [le site de Kali Academy](https://kaliacademy.org/). J’ai personnellement été parmi les 10 stagiaires retenus pour la cohorte 2024 et c’est fut une énorme opportunité pour ma carrière de développeur, je me sens dans l’obligation de partager avec cette expérience assez passionnante. Avant d’entrer dans le vif du sujet, je tiens a préciser que je ne me considère pas hacker, et je ne me considérerai jamais hacker, c’est la pertinence de mon travail qui pourra me procurer ce titre.

Le parcours de stage chez Kali Academy est subdivisé en 3 parties : 

1. les fondamentaux
2. la spécialisation Wikimédia et
3. le projet de fin de stage.

Mais avant de décortiquer ce programme apparemment, commençons par nous poser les bonnes questions en guise de fondamentaux 🙂. Qui construit et entretient l'infrastructure numérique sur laquelle nous nous appuyons au quotidien ? Quels sont les défis et les obstacles rencontrés par ceux qui travaillent à la construction et à la maintenance de cette infrastructure ? Quelles sont les implications sociales, politiques et économiques de la manière dont l'infrastructure numérique est construite et gérée ? Comment les décisions prises en matière d'infrastructure numérique affectent-elles la vie quotidienne des gens ? Quels sont les modèles de financement et de gouvernance de l'infrastructure numérique, et comment peuvent-ils être améliorés ? Comment pouvons-nous garantir que l'infrastructure numérique reste ouverte, accessible et équitable pour tous ? Ces questions semblent peut-être basiques, mais elles poussent à une très grande réflexion si on y consacre un peu d'attention.

## Sur quoi est basé notre infrastructure numérique ?

Selon Nadia Eghba, dans son livre (essaie)  "Roads and Bridges: The Unseen Labor Behind Our Digital Infrastructure", il nous rappelle que toute notre infrastructure numérique est basée sur l’open source. Personnellement, lorsque j’ai lu ce passage, la première question je me suis demandé qui est derrière les projets open source, comment gagne-t-il sa vie…. C’est à ce moment que j'ai compris l’importance d’une contribution, même aussi petite soit-elle. Nous posons des questions sur des forums tels que stack overflow, mais est-ce qu’on se demande qui nous répond, ni même pourquoi il nous répond ? Nous lisons des articles sur ce site, et nous savons que leurs auteurs ne perçoivent rien comme droit d’auteur mais nous écrivent quand-même. C’est avec ces genres des questions qu’on devient hacker. Etes-vous toujours prêt à le devenir ? Si oui, demandes-toi quelle est ta part dans tout ça, combien de fois as-tu contribué dans un projet open source ou même partager publiquement et gratuitement tes connaissances ? L’open source ce n’est pas seulement dans l’informatique, la liberté d'être bien informé ne peut être garantie que si l’information est open source (souvenez-vous de l’affaire Wikileaks ayant conduit à l’arrestation de Julian Assange et Chelsea Manning), la connaissance ne peut-être universelle que si elle a été partagée (les brevets publiques) ! Voyons notre part dans tout ça, bien que minime soit-elle mais elle est là. C’est de cette manière que Kali Academy m’a amené à voir les choses, consacrer un peu de mon temps à faire découvrir aux autres ce que nous avons appris dans le but de faire évoluer la connaissance et de la démocratiser 🗽.

## GNU/Linux, l'OS des Hackers

Maintenant que nous avons découvert que toute notre infrastructure numérique est grandement basée sur de l’open source, rentrons dans le technique. GNU/Linux, savez-vous de quel animal s’agit-il ? 😂 On a souvent tendance à ne dire que Linux et laisser GNU, pourtant Linux n’est que le noyau. GNU est un projet de logiciel libre lancé par Richard Stallman en 1983. Le nom "GNU" est un acronyme récursif qui signifie "GNU's Not Unix", ce qui souligne que bien que GNU soit compatible avec Unix, il n'est pas dérivé de celui-ci. Le projet GNU a pour objectif de fournir un système d'exploitation libre, complet et cohérent composé entièrement de logiciels libres. GNU/Linux est le résultat de l'effort combiné de deux projets : le projet GNU, qui a fourni les outils et les utilitaires, et le noyau Linux, développé par Linus Torvalds. Cette collaboration a produit un système d'exploitation puissant, flexible et libre, qui a eu un impact significatif sur l'industrie informatique et la culture technologique mondiale. Dans mon parcours à Kali Academy, j’ai découvert qu’il est important pour un hackeur d’avoir une idée sur l'architecture d’un système d’exploitation, surtout GNU/Linux car il est open source, on peut se challenger à toucher dans son code et produire notre propre distribution, ce qui est du hacking au sens pur 🙂, ensuite il faut savoir l’installer sans assistance, manipuler bien la ligne de commande, construire des petits scripts bash, automatiser certaines tâches, manipuler l’environnement bureau…

## Git, la collaboration facilitée

Ensuite, il faut savoir très bien manipuler git, car c’est la base de la collaboration dans une équipe de développeurs, j’ai récemment commencé à publier une série d’article à sujet je vous invite à aller y jeter un coup d'œil. La plupart des plateformes collaboratives sont basées sur git. Git a pas mal évolué mais il reste intuitif de l’utiliser en CLI.

## les licences opens sources, le droit en ingénierie

Lorsque vous installez un logiciel open ou non, vous devez d'abord avoir accepter les termes de la licence. C’est un cas que vous avez déjà rencontré au moins une fois, mais si on n’est pas suffisamment informé, on néglige cette partie, ce qui nous amène à violer les licences. Pour moi, la plus grande victime c’est Microsoft, en tout cas dans le contexte de ma région, sur 1000 personnes que je connais, 900 utilisent Windows, et seulement 100 ont une licence, 50 l’ont payé et les autres ont des craques 😂. C'est triste, mais c’est ça la réalité, pourtant il y a un GNU/Linux gratuit et open source, le seul motif qu’on c’est que Linux est complexe, c’est qui une pure invention de ses concurrents. Cette situation a conduit Kali Academy à nous initier à la lecture des licences open source. Cette lecture nous a mis dans un grande confusion: un logiciel peut être open source mais pas libre, gratuit mais pas libre, libre mais avec une version payante, gratuit mais pas open source 😴. C’est embêtant non ! Mais ce qu’il faut retenir, c’est qu’une licence d'un logiciel est un contrat entre l'éditeur du logiciel et l'utilisateur qui définit les conditions d'utilisation du logiciel. Cette licence précise notamment si l'utilisateur est autorisé à installer le logiciel sur un ou plusieurs appareils, s'il peut le partager avec d'autres personnes, s'il peut le modifier, etc. En échange du respect de ces conditions, l'utilisateur est autorisé à utiliser le logiciel de manière légale.

Voyons maintenant la différence entre un logiciel Open source et un logiciel libre.
Les critères d'un logiciel libre, selon la Free Software Foundation (FSF, initiée par Richard Stallman) , sont les quatre libertés :
1. Liberté d'exécution :
     Exemple de Licence : GNU General Public License (GPL)
     La GPL permet aux utilisateurs d'exécuter le programme pour 
     n'importe quel usage.
2. Liberté d'étude :
     Exemple de Licence : GNU General Public License (GPL)
     La GPL garantit l'accès au code source, permettant aux utilisateurs 
     d'étudier et de modifier le programme.
3. Liberté de redistribution :
     Exemple de Licence : GNU General Public License (GPL)
     La GPL permet aux utilisateurs de redistribuer des copies du 
     programme, que ce soit en version originale ou modifiée.
4. Liberté de distribution des versions modifiées :
     Exemple de Licence : GNU General Public License (GPL)
     La GPL permet aux utilisateurs de distribuer des copies de leurs 
     versions modifiées, tout en conservant les mêmes libertés pour les 
     autres utilisateurs.
Les critères d'un logiciel open source, selon l'Open Source Initiative (OSI), incluent les éléments suivants :
1. Libre redistribution :
     Exemple de Licence : MIT License
     La MIT License permet la distribution du logiciel sans restriction.
2. Code source :
     Exemple de Licence : Apache License 2.0
     La licence Apache 2.0 exige que le code source soit disponible.
3. Travaux dérivés :
     Exemple de Licence : BSD License
     La BSD License permet la modification et la distribution de travaux 
     dérivés sous les mêmes conditions.
4. Intégrité du code source de l'auteur :
     Exemple de Licence : Mozilla Public License 2.0
     La MPL 2.0 permet les modifications tout en exigeant que les 
     fichiers modifiés soient redistribués sous la même licence.
5. Pas de discrimination contre des personnes ou des groupes :
     Exemple de Licence : MIT License
     La MIT License ne discrimine personne.
6. Pas de discrimination contre des domaines d'application :
     Exemple de Licence : Apache License 2.0
     La licence Apache 2.0 ne limite pas l'utilisation du logiciel à 
     certains domaines.
7. Distribution de la licence :
     Exemple de Licence : GNU General Public License (GPL)
     La GPL assure que les droits sont transférés à tous les 
     destinataires du programme.
8. Licence non spécifique à un produit :
     Exemple de Licence : BSD License
     La BSD License n'exige pas que le programme soit partie intégrante 
     d'un produit spécifique.
9. Licence non restrictive pour d'autres logiciels :
     Exemple de Licence : Apache License 2.0
     La licence Apache 2.0 ne pose pas de restrictions sur les logiciels 
     distribués avec le programme.
10. Licence technologiquement neutre :
     Exemple de Licence : MIT License
     La MIT License ne fait pas référence à une technologie spécifique.

Mais ce qu’il faut retenir c’est que tout logiciel libre est open source mais tout logiciel open source n’est pas libre, il y a aussi des gratuiciels (logiciel gratuit mais pas open source). Je vous recommande de mettre, en commentaire, des exemples d'applications ayant telle ou telle autre licence précitée.

## Wikimédia, écosystème open source par excellence

C’est dans cela que nous avons passé la majeure partie du premier mois, on avait autant d’ouvrages à consulter, des documentations à parcourir et des ateliers à suivre et parfois partager quand bien même on n’a pas bien assimilé la leçon, bref c'était très intense. Ces connaissances acquises ne pouvaient nous aider en rien si on n’avait pas une bonne communauté où les expérimenter. Il est bien d’avoir une houe, mais il encore mieux de l’essayer au champ 🙂, c’est pourquoi dans le deuxième moi de mon stage chez Kali Academy, nous nous sommes maintenant intéressés aux projets open source, nous avons d’abord cherché de nous même, je me souviens j’avais forké un repo de “awesome” où j’ai eu trop de mal à contribuer et mon PR n’avait même pas été validé, mais mon coach m’a consolé en disant “le plus important c’est que tu as réussi à cloner le projet, à runer le projet et à résoudre l’issue, peut importe que ton PR soit mergé ou pas”, et c'est une des leçons que je garde à cœur. Ensuite, Kali nous a proposé d’approcher l’écosystème Wikimédia qui est de nos jours un des plus grands projets open sources avec son MediaWiki qui est le moteur qui propulse Wikipédia et son projet frères ainsi que d’autres wiki. C’était comme une forte immersion arrivée soudainement. Nous avions d’abord participé à un événement de code que Wikimédia a choisi de nommer “Wishathon”, au cours duquel il fallait corriger quelques bogues et résoudre certains issues dans les projets ciblés dans l’écosystème, c’était très intenses pour nous étant donné que c’était une première fois de nous retrouver dans ces genres d’événement, encore que c’était un événement mondial, je m'étais retrouvé en train de travailler avec un turc aussi débutant que moi en Anglais 😂, mais c’était wow. Ensuite, pour comprendre un peu comment faire mes premières contributions sur Wikipédia, Wikidata, wiki Common …. j’ai postulé à une bourse de la fondation Moleskine laquelle m’a permis de suivre tout cela en seulement 5 séances intenses. J’ai appris à installer MediaWiki de différentes façons, à créer des thèmes, des extensions …. C’était vraiment chouette cette aventure. Ouf ! 😣J’ai oublié de vous révéler une petite confidence, au cours du Wishathon j’ai reçu un gift venu expressément des USA, c’était un moment très émouvant !

## Initier un projet open source

Normalement l’initiation à l’open source devrait s’achever là, mais Kali Academy a souhaité que nous puissions initier aussi des projets open source sur lesquels d’autres personnes vont aussi contribuer. Dans ce cadre, j’ai été mis dans une équipe où on était à trois, moi, mon ami que j’appelle toujours beau frère Firmin NGANDULI et le petit Christian BIREGO, un très bon geek. Ensemble, on a travaillé sur une application nommée LeaderBoard qui compare les contributions des bénévoles sur les projets Wikimédia et les classes en fonction du nombre des contributions. Voici le lien de l’application déployée [ici](https://wikileaderboard.netlify.app/) et de la documentation [ici](https://meta.wikimedia.org/wiki/Documentation_LeaderBoard)… Si vous êtes intéressé par ce projet, dites-le moi aussi en commentaire.

En bref, c’est à ça qu'à ressemblé mon parcours de stage chez Kali Academy, c'était une expérience extrêmement passionnante, j’ai goûté un peu au code professionnel, à l’expertise des grands développeurs open source de Wikimédia… Je remercie Kali Academy pour m’avoir offert cette opportunité, malgré mon niveau et mes faiblesses, je remercie également tous mes collègues avec lesquels on a fait ce parcours ainsi que vous tous qui avez lu cet article jusqu’ici, je vous prie de me faire des corrections en privé s’il en y a 🙂. Ainsi commence mon parcours d’apprenti hacker, à nous revoir dans le future 🙂, étant déjà hackeur 😂