Apparence
Qu'est ce qu'un logiciel libre?
Un logiciel libre est un logiciel que les utilisateurs ont la liberté d'exécuter, copier, distribuer, étudier, modifier et améliorer ces logiciels.
Les logiciels libres sont souvent développés de manière collaborative, avec des contributions provenant de développeurs du monde entier. Ils sont généralement distribués sous des licences qui garantissent ces libertés, telles que la licence publique générale GNU (GPL), la licence MIT, ou la licence Apache.
Les quatre libertés essentielles
Quand l'on parle de logiciel libre, on va souvent entendre parler des "quatre libertés essentielles" définies par la Free Software Foundation (FSF) :
Liberté 0 : La liberté d'exécuter le programme, pour tous les usages.
Liberté 1 : La liberté d'étudier le fonctionnement du programme et de l'adapter à ses besoins. L'accès au code source est une condition préalable à cette liberté.
Liberté 2 : La liberté de redistribuer des copies du programme, afin d'aider la communauté.
Liberté 3 : La liberté d'améliorer le programme et de publier ses améliorations, afin que toute la communauté en bénéficie. Là encore, l'accès au code source est une condition préalable.
Si l'une de ces conditions n'est pas remplie, le logiciel n'est pas considéré comme libre.
Est-ce qu'un logiciel libre peut etre commercial ?
Oui, un logiciel libre peut être commercial. Le terme "libre" dans "logiciel libre" fait référence à la liberté d'utilisation, de modification et de distribution du logiciel, et non à son prix. Cela signifie que les développeurs peuvent vendre des logiciels libres, mais ils doivent toujours respecter les libertés définies par la licence sous laquelle le logiciel est distribué.
Par exemple, un développeur peut vendre des copies d'un logiciel libre, offrir des services de support ou de personnalisation, ou même vendre des versions modifiées du logiciel. Cependant, ils doivent toujours fournir le code source et permettre aux utilisateurs de bénéficier des mêmes libertés que celles définies par la licence.
Avantages des logiciels libres
Transparence : Le code source étant accessible, les utilisateurs peuvent examiner le logiciel pour détecter des vulnérabilités ou des comportements malveillants. Cela rend le logiciel plus sécuritaire.
Communauté et collaboration : Les logiciels libres bénéficient souvent d'une communauté active de développeurs et d'utilisateurs qui contribuent à l'amélioration du logiciel, partagent des idées et offrent du support.
Personnalisation : Les utilisateurs peuvent modifier le logiciel pour l'adapter à leurs besoins spécifiques. En tant que programmeur, cela permet de créer des solutions sur mesure à partir de logiciels existants.
Coût : Les logiciels libres sont souvent gratuits, ce qui peut réduire les coûts pour les utilisateurs.
Idéologie et éthique : Utiliser et contribuer aux logiciels libres peut être une manière de soutenir des valeurs telles que la liberté, la collaboration et le partage des connaissances. Également, les logiciels libre ne font pas accepter des EULA(End-user license agrement) restrictives qui peuvent limiter l'utilisation du logiciel et qui peuvent être parfois plus compliquer qu'elle en ont l'air. [1]
Caractéristiques des projets de logiciels libres
Premièrement, il est important de noter que chaque communauté de logiciel libre est différente, certains éléments peuvent différer. Cependant, il y a quelques caractéristiques communes que l'on retrouve souvent dans les projets de logiciels libres :
- Membre ou organisation du projet
- Auteur
- Propriétaire (pas necessairement le même que l'auteur, plus au niveau administratif)
- Responsable/mainteneur : Personne ou groupe de personnes responsables de la gestion du projet.
- Contributeur : Toute personne qui contribue au projet, que ce soit par du code, de la documentation, des tests, etc.
- Membre de la communauté : Utilisateurs et contributeurs réguliers du projet.
- Documentation et references
- Licence[2] : Si le projet n'a pas de licence, il n'est pas considéré comme un logiciel libre.
- Fichier README : C'est le manuel d'instructions.
- Fichier CONTRIBUTING : Instructions pour les contributeurs potentiels sur la manière de contribuer au projet.
- Fichier CODE_OF_CONDUCT : Règles et attentes concernant le comportement des membres de la communauté.
- Tous autres documentations pertinentes.
- Suivit des changements et communication de la communauté
- Système de gestion de version (ex : Git) : Permet de suivre les modifications apportées au code source.
- Système de suivi des problèmes (ex : GitHub Issues) : Permet de signaler et de suivre les bugs, les demandes de fonctionnalités, etc. Via des pull request par exemple.
- Canaux de communication (ex : forums, listes de diffusion, chats) : Permettent aux membres de la communauté de discuter et de collaborer.
Comment contribuer aux logiciels libres ?
Selon le site Open Source Guide[3], un outil très intéressant dans la communauté du logiciel libre, il existe plusieurs manières de contribuer aux projets de logiciels libres. Commencons par répondre à la question "Pourquoi contribuer?".
Pourquoi contribuer ?
Voici quelques raisons qui poussent les gens à contribuer aux projets de logiciels libres :
- Améliorer les compétences existantes : L'univers du logiciel libre est très large et varié. Il y en a pour tous les gouts et tous les niveaux de compétence.
- Rencontrez des gens qui s’intéressent à des choses similaires
- Construire des artefacts publics qui vous aident à acquérir une réputation (et une carrière) : Cela parait toujours bien durant une entrevue d'amener ses realisations et ses contributions.
- Il n'y a pas de petit changement — chaque contribution compte
Est-ce que contribuer signifie coder ?
La réponse simple serait "Oui", mais en réalité, il y a plusieurs façons de contribuer à un projet de logiciel libre sans écrire une seule ligne de code. Voici quelques exemples :
- Documentation : Aider à écrire ou améliorer la documentation du projet.
- Traduction : Traduire le logiciel ou sa documentation dans d'autres langues.
- Tests et rapports de bugs : Tester le logiciel et signaler les bugs ou proposer. Il sera moin le cas dans le cadre du cours mais il s'agit d'une contribution importante.
Il y a bien évidement aussi le code 🔥et plusieurs autres moyen de contribuer!
Marches à suivre pour contribuer
Il est à noter que la plupart des projets open-source sont hébergés sur des plateformes comme GitHub ou GitLab. Cela nous donne la possibilité d'utiliser le principe de "fork" ou de simplement cloner le projet.
Important
Le git clone N'EST PAS une bonne manière de contribuer à un projet car on ne pourra pas effectuer de modification directement au projet original.
Fork
La méthode que l'on va vouloir utiliser est le "fork".
Le fork permet de créer une copie du projet original dans notre propre compte GitHub/GitLab. Cela nous permet de faire des modifications sans affecter le projet original. Ensuite, une fois les modifications effectuées, on peut soumettre une "pull request" (ou "merge request" sur GitLab) au projet original pour proposer nos changements. De cette manière, les mainteneurs du projet peuvent examiner nos modifications et décider de les intégrer ou non dans le projet principal.
Fork - GitHub
Sur GitHub, le bouton de fork se trouve en haut à droite de la page du projet.

Fork - GitLab
Sur GitLab, le bouton fork se trouve également en haut à droite de la page du projet.

Il peut également arriver que vous n'ayez pas accès au bouton de fork. Dans ce cas, vous pouvez le faire directement avec git en ligne de commande.
Lorsque nous avons effectué une modification dans notre fork, nous pouvons soumettre une pull request (ou merge request) au projet original. Il s'agit d'une demande de modification que l'on fait auprès des responsables du projet. Cela va permettre aux mainteneurs du projet d'examiner nos modifications et de décider de les intégrer ou non dans le projet principal.
Si la modification est refusée 😥, il sera possible de modifier votre pull request (ou merge request) en fonction des commentaires reçus et de la soumettre à nouveau.
Si c'est accepter... 🎉🙌
Comment savoir ce que je peux contribuer ?
Ils existent plusieurs raisons qui nous pousseraient à vouloir contribuer à un projet. Premièrement, tout va partir d'un besoin. Par exemple, vous utilisez un logiciel libre et vous remarquez un bug ou une fonctionnalité manquante. Vous pouvez décider de contribuer pour résoudre ce problème.
Cependant, une personne pourrait avoir envie de contribuer afin d'améliorer le logiciel en général, même si elle n'a pas de besoin spécifique. Dans ce cas, il est souvent utile de consulter la liste des "issues" (problèmes) du projet. Beaucoup de projets ont des issues étiquetées comme "good first issue" ou "help wanted", qui sont des tâches adaptées aux nouveaux contributeurs.
Voici un exemple d'issues étiquetées "good first issue" sur le projet Fastify[4].

Il est également possible d'entrer directement en contact avec les mainteneurs du projet via les canaux de communication disponibles (forums, listes de diffusion, chats, etc.) afin d'avoir plus d'informations sur la manière de contribuer et le logiciel en soi
N'oubliez pas de lire le fichier CONTRIBUTING du projet avant de commencer à contribuer. Il contient souvent des informations importantes sur la manière de contribuer au projet.