Rapport de Stage chez Kali Academy
Tags: github, opensource, react, wikipedia
Published: 2024-06-14 17:36:32

**Remerciements**

Je tiens à remercier monsieur Abel Mbula CEO de Kali Academy madame Patience Kavira pour l'opportunité de participer à ce stage, ainsi que les formateurs monsieur Delord Wayire et les collegues de la cohort Mars 2024 de Kali Academy spétialement mon binome Firmin Finva et mes coéquipiers du projet Wikidata Query AI, Landry Bitege, Patrice Kalwira et Espoir Birusha pour leur collaboration, leur soutien et leur partage de connaissances.

**Introduction**

Ce rapport présente mon expérience de stage chez Kali Academy à Goma, en République Démocratique du Congo. Le stage s'est déroulé du 11 mars au 14 Juin 2024 et a été l'occasion de découvrir l'univers du développement open-source et de la culture hacker.

**Première leçon : L'attitude hacker**

Le premier mois du stage a été consacré à la présentation du concept de hacker, en s'appuyant sur le texte "What is the Hacker & Hacker Attitude" d'Eric Steven Raymond. Ce texte a permis de comprendre la distinction fondamentale entre les hackers et les crackers. Les hackers sont des passionnés de technologie qui construisent et partagent des outils et des ressources, tandis que les crackers sont des individus motivés par des intentions malveillantes.

L'attitude hacker est basée sur cinq principes clés :

* **Le monde regorge de problèmes fascinants qui attendent d'être résolus.**
* **Aucun problème ne devrait jamais devoir être résolu deux fois.**
* **L'ennui et la corvée sont mauvais.**
* **La liberté est une bonne chose.**
* **L'attitude ne remplace pas la compétence.**

En adoptant ces principes, les hackers développent une approche proactive et créative pour résoudre des problèmes et contribuer à l'avancement technologique.

**Learn In Public**

Le deuxième mois du stage a été consacré au concept de "Learn In Public". Ce concept encourage à partager ses connaissances et à apprendre en permanence en créant du contenu éducatif et en participant à des événements. L'objectif est de ne pas se focaliser sur la reconnaissance extérieure, mais plutôt sur l'amélioration personnelle et l'aide aux autres.

**Contribuer sur un issue sur GitHub**

Le dernier mois du stage a été consacré à l'apprentissage des étapes à suivre pour contribuer à un problème (issue) sur GitHub. Les étapes clés sont les suivantes :

1. **S'assurer que l'issue est toujours ouverte**
2. **Lire les instructions**
3. **Fork le dépôt**
4. **Cloner le dépôt en local**
5. **Créer une branche locale**
6. **Effectuer les modifications nécessaires**
7. **Commit et push**
8. **Créer une Pull Request (PR)**
9. **Suivre les commentaires et effectuer les modifications nécessaires**
10. **Attendre la validation et fusion**

En suivant ces étapes, les contributeurs peuvent apporter des modifications aux projets open-source et participer à leur développement.


Ce stage chez Kali Academy a été une expérience enrichissante qui m'a permis de découvrir la culture hacker et les principes du développement open-source. J'ai également appris à partager mes connaissances et à contribuer à des projets collaboratifs. Je suis reconnaissant envers les formateurs et les membres de la communauté Kali Academy pour leur accueil et leur partage de connaissances.

**Prochaines étapes**

Je compte mettre en pratique les connaissances acquises lors de ce stage en continuant à apprendre sur le développement open-source et en contribuant à des projets qui me passionnent. Je souhaite également partager mes connaissances avec d'autres personnes en créant du contenu éducatif et en participant à des événements.


**Deuxième leçon : Choisir un projet open-source et apprendre les bases de Git**

Le deuxième jour du stage a été consacré à deux thématiques importantes :

**1. Choisir un projet open-source**

La sélection d'un projet open-source sur lequel contribuer est une étape cruciale pour s'impliquer dans la communauté open-source. Pour faire un choix éclairé, il est recommandé de prendre en compte les points suivants :

* **Intérêts personnels:** Orienter le choix vers un projet en adéquation avec ses centres d'intérêt, qu'il s'agisse d'un domaine technologique spécifique, d'un langage de programmation apprécié ou d'une cause qui tient à cœur.
* **Niveau de compétence:** Sélectionner un projet correspondant à son niveau de compétences. Certains projets s'adressent davantage aux débutants, tandis que d'autres exigent des compétences plus avancées.
* **Taille du projet:** Considérer la taille du projet et de sa communauté. Les projets plus petits peuvent offrir une expérience plus collaborative, tandis que les projets plus importants peuvent présenter des opportunités d'apprentissage et de contribution à plus grande échelle.
* **Problèmes ouverts:** Explorer la liste des problèmes ouverts (issues) sur GitHub pour identifier des tâches à réaliser. Certains projets signalent les problèmes adaptés aux nouveaux contributeurs, ce qui peut constituer un bon point de départ.

**Ressources pour trouver des projets open-source:**

* **GitHub Explore:** Explorer la section "Explore" sur GitHub pour découvrir des projets populaires et en vogue dans divers domaines.
* **GitHub Topics:** Utiliser la fonction "Topics" sur GitHub pour rechercher des projets par catégorie, langage de programmation ou technologie.
* **Hacktoberfest:** Participer à des événements comme Hacktoberfest qui encouragent la contribution à des projets open-source pendant le mois d'octobre.
* **Sites Web dédiés:** Consulter des sites web comme Open Source Friday, Up For Grabs, CodeTriage ou First Timers Only qui répertorient des projets open-source accueillant les nouveaux contributeurs.
* **Réseaux sociaux et forums:** Suivre des comptes et des communautés liés à l'open-source sur les réseaux sociaux, et participer à des forums comme Reddit r/opensource pour découvrir des projets intéressants.

**2. Apprendre les bases de Git**

Git est un système de contrôle de version essentiel pour le développement open-source. Il permet de suivre les modifications apportées aux fichiers, de collaborer avec d'autres contributeurs et de gérer différentes versions du code. Le stage a permis d'acquérir les connaissances fondamentales pour utiliser Git, notamment :

* **Création d'un branch:** `git checkout -b nom_de_la_branche`
* **Navigation dans les fichiers et répertoires:** `cd`, `ls`, `pwd`
* **Création, copie, déplacement et suppression de fichiers et répertoires:** `touch`, `mkdir`, `cp`, `mv`, `rm`
* **Affichage du contenu des fichiers:** `cat`, `more`, `less`
* **Recherche de fichiers:** `find`
* **Changement des permissions des fichiers:** `chmod`
* **Commandes utiles:** `grep`, `wc`, `head`, `tail`
* **Utilisation de l'éditeur Nano:** `nano`
* **Utilisation de l'éditeur Vim:** `vim`

**Ressources pour apprendre Git:**

* [https://www.freecodecamp.org/news/git-and-github-for-beginners/](https://www.freecodecamp.org/news/git-and-github-for-beginners/)
* [https://docs.gitlab.com/ee/ci/migration/github_actions.html](https://docs.gitlab.com/ee/ci/migration/github_actions.html)
* [https://support.atlassian.com/jira-cloud-administration/docs/link-github-workflows-and-deployments-to-jira-issues/](https://support.atlassian.com/jira-cloud-administration/docs/link-github-workflows-and-deployments-to-jira-issues/)
* [https://www.atlassian.com/git/tutorials/comparing-workflows](https://www.atlassian.com/git/tutorials/comparing-workflows)
* [https://youtu.be/RGOj5yH7evk](https://youtu.be/RGOj5yH7evk)


Les deux premiers mois du stage ont permis de découvrir les principes fondamentaux du développement open-source, l'importance de la contribution à des projets existants et les outils essentiels pour s'impliquer dans la communauté. Le choix d'un projet adapté et l'apprentissage des bases de Git constituent des étapes préalables importantes pour débuter en tant que contributeur open-source.



**Troisième mois : Contribution à un projet open-source et apprentissage de Wikidata**

Le troisième mois du stage ont été consacrés à la mise en pratique des connaissances acquises. Les stagiaires ont eu l'opportunité de :

**1. Contribuer à un projet open-source**

En se basant sur les notions apprises les deux premiers jours, les stagiaires ont choisi un projet open-source auquel ils souhaitaient contribuer. Ils ont suivi les étapes suivantes :

* **Forker le projet:** Ils ont créé une copie du projet sur leur propre compte GitHub.
* **Cloner le projet en local:** Ils ont téléchargé le projet sur leur ordinateur.
* **Effectuer les modifications:** Ils ont apporté des modifications au code du projet en suivant les directives et les besoins du projet.
* **Tester les modifications:** Ils ont testé leurs modifications pour s'assurer qu'elles ne causaient pas de problèmes.
* **Pusher les modifications:** Ils ont envoyé leurs modifications vers leur fork sur GitHub.
* **Créer une Pull Request:** Ils ont soumis une demande de fusion pour que leurs modifications soient intégrées au projet original.

**2. Apprendre les bases de Wikidata**

Wikidata est une base de données collaborative permettant de stocker et d'interroger des informations structurées. Les stagiaires ont découvert :

* **La structure de Wikidata:** Ils ont compris comment les données sont organisées en triplets sujet-prédicat-objet.
* **Le langage SPARQL:** Ils ont appris à utiliser SPARQL pour interroger les données de Wikidata.
* **Des exemples de requêtes SPARQL:** Ils ont pratiqué la formulation de requêtes pour récupérer des informations spécifiques de Wikidata.

**Ressources pour apprendre Wikidata:**

* [https://query.wikidata.org/](https://query.wikidata.org/)
* [https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial](https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial)
* [https://www.wikidata.org/wiki/Q31386861](https://www.wikidata.org/wiki/Q31386861)

**Conclusion**

Le stage chez Kali Academy a permis aux participants d'acquérir des connaissances fondamentales sur le développement open-source et l'utilisation de Wikidata. Ils ont pu mettre en pratique leurs acquis en contribuant à un projet open-source et en explorant les requêtes SPARQL. Ce stage a constitué une expérience enrichissante et motivante pour les stagiaires, les encourageant à s'impliquer davantage dans la communauté open-source et à poursuivre leur apprentissage dans ce domaine.


Gérard Cubaka Bisimwa
https://ger-cub.github.io/portfoliogerard/