Contribuer à l'open source en C++

Nous allons parler d'un topic de contribution à l'open source en C++. C'est à dire une fois que vous avez appris le C++? Quoi faire?

Petit rappel des meilleurs sources pour apprendre le C++ sur le web:

C'est à dire on est sérieux, et on veut véritablement ce lancer en C++, et devenir une référence. Bien sur on peut faire des petits projets soit même pour débuter, tel que coder:

  • Space Invaders
  • Game of Life

Mais ce n'est pas suffisant, pour acquérir de l'expérience et particulier dans l'utilisation de Git et la collaboration logicielle et tous le process. Il y a un petit guide: Comment contribuer à l'Open Source pour débutants et vétérans.

Sur quels projets? Voici une liste.

1. LibreOffice

  • Description : LibreOffice est une suite bureautique libre et open source, alternative à Microsoft Office. C'est un projet mature avec une grande base de code écrite en C++.
  • Pourquoi le choisir ? : C'est un bon projet pour se familiariser avec une base de code de grande taille et complexe. Les développeurs sont accueillants et proposent des bugs de complexité variée, ce qui est idéal pour débuter.
  • Lien : https://www.libreoffice.org/
  • Contribuer : Le projet a une section pour les nouveaux contributeurs appelée "EasyHacks" qui te permet de trouver des tâches adaptées à ton niveau.

2. CMake

  • Description : CMake est un outil de génération de builds, essentiel pour de nombreux projets C++ sur Linux. Il aide à gérer la compilation multiplateforme.
  • Pourquoi le choisir ? : C'est une excellente opportunité pour comprendre la gestion de projets en C++ et pour contribuer à un outil qui est utilisé par presque tous les développeurs C++.
  • Lien : https://cmake.org/
  • Contribuer : Les tickets GitLab du projet CMake ont souvent des discussions sur les bugs et les nouvelles fonctionnalités, ce qui peut être une bonne porte d’entrée pour se familiariser avec le code.

3. KDE (K Desktop Environment)

  • Description : KDE est l'un des environnements de bureau les plus populaires sous Linux, construit autour de bibliothèques C++ avec Qt. Il regroupe un ensemble d'applications (éditeur de texte, gestionnaires de fichiers, etc.) et l'environnement de bureau en lui-même.
  • Pourquoi le choisir ? : KDE offre une grande diversité de projets et de composants, ce qui permet de contribuer à des applications simples comme à des éléments plus complexes de l’environnement de bureau.
  • Lien : https://kde.org/
  • Contribuer : KDE possède un guide pour les nouveaux contributeurs, et tu peux choisir des projets en fonction de ta maîtrise des bibliothèques Qt et de tes intérêts.

4. Godot Engine

  • Description : Godot est un moteur de jeu open source qui permet de créer des jeux en 2D et en 3D. Le cœur du moteur est écrit en C++.
  • Pourquoi le choisir ? : Si tu es intéressé par le développement de jeux, Godot est une excellente porte d’entrée pour comprendre les systèmes physiques, le rendu graphique, et l’optimisation de la performance en C++.
  • Lien : https://godotengine.org/
  • Contribuer : Godot a une communauté active et des tags pour les "Good First Issues" sur leur dépôt GitHub pour aider les nouveaux contributeurs.

5. OpenCV

  • Description : OpenCV est une bibliothèque populaire pour le traitement d'images et la vision par ordinateur. Écrite principalement en C++, elle est utilisée dans de nombreux projets liés à la reconnaissance d'images, la robotique, etc.
  • Pourquoi le choisir ? : Contribuer à OpenCV te permet de te plonger dans des algorithmes complexes de traitement d’image et de vision par ordinateur, et d’apprendre comment les optimiser.
  • Lien : https://opencv.org/
  • Contribuer : Le dépôt GitHub d'OpenCV regroupe de nombreuses issues ouvertes, et il est possible de proposer de nouveaux algorithmes ou d’améliorer ceux qui existent déjà.

6. QEMU

  • Description : QEMU est un émulateur et un hyperviseur open source qui permet de virtualiser des systèmes d'exploitation. Il est principalement écrit en C et C++, et il est largement utilisé pour tester des systèmes d'exploitation et des logiciels sur des environnements virtuels.
  • Pourquoi le choisir ? : C’est un projet complexe mais très instructif pour ceux qui veulent comprendre le fonctionnement bas niveau des systèmes d’exploitation et de la virtualisation.
  • Lien : https://www.qemu.org/
  • Contribuer : Le projet a une communauté active et des sections pour les nouveaux contributeurs. C’est un excellent choix si tu es intéressé par l’architecture des systèmes.

7. wxWidgets

  • Description : wxWidgets est une bibliothèque C++ pour la création d'interfaces graphiques (GUI) multiplateforme. C’est une alternative à Qt, utilisée pour développer des applications sur Linux, Windows et macOS.
  • Pourquoi le choisir ? : Contribuer à une bibliothèque de GUI permet de mieux comprendre la création et la gestion des interfaces utilisateurs, ainsi que les défis du développement multiplateforme.
  • Lien : https://www.wxwidgets.org/
  • Contribuer : Le dépôt GitHub propose des bugs de différents niveaux de difficulté, et les discussions autour des nouvelles fonctionnalités sont ouvertes aux contributions.

8. Boost Libraries

  • Description : Boost est une collection de bibliothèques C++ qui étendent les fonctionnalités de la bibliothèque standard. Beaucoup de ces bibliothèques sont finalement intégrées dans la norme C++.
  • Pourquoi le choisir ? : Contribuer à Boost est une excellente manière de se familiariser avec les meilleures pratiques et les standards C++ modernes.
  • Lien : https://www.boost.org/
  • Contribuer : C’est un projet technique, mais qui offre des opportunités pour travailler sur des algorithmes, des structures de données, et l’optimisation de la performance.

9. Ardour

  • Description : Ardour est une station de travail audio-numérique (DAW) open source, permettant l'enregistrement, le montage, et le mixage de son. Le projet est majoritairement écrit en C++.
  • Pourquoi le choisir ? : Si tu as un intérêt pour le son, la musique, et l’audio, Ardour est un excellent projet pour comprendre les traitements en temps réel et la gestion de l’audio.
  • Lien : https://ardour.org/
  • Contribuer : Le projet dispose d'une communauté active, et le code source est disponible sur GitHub avec des instructions pour les nouveaux contributeurs.

10. VLC Media Player

  • Description : VLC est un lecteur multimédia open source très populaire, capable de lire presque tous les formats audio et vidéo. Son backend utilise beaucoup de C et de C++ pour le traitement de flux audio et vidéo.
  • Pourquoi le choisir ? : Contribuer à VLC permet de travailler sur des problèmes liés aux codecs, au streaming, et au traitement multimédia, ce qui est très enrichissant pour les développeurs intéressés par ces sujets.
  • Lien : https://www.videolan.org/vlc/
  • Contribuer : Le dépôt GitLab du projet est accessible, et il est possible de commencer par corriger de petits bugs pour se familiariser avec la base de code.

11. LLVM (Low-Level Virtual Machine)

  • Description : LLVM est un projet de compilation modulaire conçu pour fournir un ensemble de bibliothèques de compilation de hautes performances. Il comprend un compilateur, un ensemble d'outils pour la génération de code, l'optimisation, le débogage, et l'exécution de programmes. LLVM est la base de nombreux compilateurs, y compris Clang, qui est un compilateur C/C++.
  • Pourquoi le choisir ? :
    • Approfondir les connaissances sur les compilateurs : Travailler sur LLVM te permet de mieux comprendre comment les compilateurs et les optimisations de code fonctionnent en profondeur. C’est particulièrement intéressant si tu veux apprendre à générer et à optimiser du code machine.
    • Travail à bas niveau : LLVM est parfait pour ceux qui veulent explorer les aspects bas niveau du C++, comme la génération de code intermédiaire (IR), les optimisations spécifiques à l’architecture, et la manipulation du code binaire.
    • Communauté active : La communauté de LLVM est grande et ouverte aux contributions, et il y a souvent des tâches adaptées aux nouveaux contributeurs.
  • Lien : https://llvm.org/
  • Contribuer : LLVM a une documentation détaillée pour les contributeurs et propose des "beginner bugs" qui sont plus accessibles pour les développeurs souhaitant se familiariser avec la base de code.
  • Exemples de contributions possibles :
    • Travailler sur des passes d'optimisation pour le compilateur.
    • Contribuer à Clang, qui est le front-end C/C++/Objective-C de LLVM.
    • Améliorer la génération de code pour une architecture particulière.
    • Ajouter de nouveaux diagnostics ou warnings pour Clang.

Conseils pour débuter sur ces projets :

  • Lire la documentation de contribution : La plupart de ces projets ont une section dédiée aux nouveaux contributeurs pour expliquer comment cloner le dépôt, compiler le code, et soumettre des pull requests.
  • Commencer par des issues marquées comme "Good First Issue" : Ces tickets sont souvent spécialement sélectionnés pour les débutants.
  • Interagir avec la communauté : Ne pas hésiter à poser des questions sur les forums de discussion ou les serveurs IRC/Discord des projets pour demander des conseils ou de l’aide.