Ma première contribution open source était pour une bibliothèque que j'avais déjà utilisée (et que j'aurais beaucoup souffert sans) sur un projet déjà payé. Lors de ma première utilisation, j'avais détecté un bogue dans le code. J'ai donc créé un correctif, rejoint le projet et l'ai soumis pour examen.
Environ 8 mois plus tard, alors que j'avais du temps libre, j'ai décidé de rendre (et de développer mes compétences en développement) en contribuant davantage au projet. J'ai donc cloné le référentiel et commencé à me familiariser avec le code base. Après quelques semaines de soumission de correctifs mineurs à la base de code et de surveillance des demandes de fonctionnalités, j'ai sélectionné une demande de fonctionnalité pour ajouter un module assez substantiel au projet.
Comme la génération de nombreux correctifs individuels est assez fastidieuse pour tout développement important, j'ai cloné le référentiel dans une branche de git hub et commencé à extraire du code. Quelques semaines et plusieurs milliers de lignes de code plus tard, le chef de projet et moi-même avons ensuite intégré et testé mes correctifs dans la bibliothèque de manière cohérente avec le reste de la base de code.
C'est un processus inestimable dont j'ai beaucoup appris:
- Quand j'ai commencé, je ne savais pas comment utiliser Git. À la fin, je pouvais créer de manière compétente des branches de suivi distantes et les fusionner ou les replanter dans la branche principale sans casser la sueur.
- J'ai commencé avec VS 2008 et j'ai migré vers Linux et Monodevelop pour pouvoir écrire du code (car VS est retardé unicode et les fins de ligne sont très pénibles). Il s’avère qu’il n’ya pas grand-chose que vous ne puissiez pas faire en * nix, mais que vous puissiez faire en * dows.
- Je n'avais jamais vraiment fait de tests unitaires auparavant, Nunit est un jeu d'enfant à utiliser et écrire des tests unitaires est une tâche plutôt élémentaire.
- J'ai dû apprendre à avaler ma langue, à écouter et à faire preuve de patience. Il ne sert à rien de défendre fermement votre position sur un projet open source car toutes les personnes impliquées sont bien informées (probablement plus que vous-même) et capables d'accepter / de rejeter vos idées sur la base d'une substance non livrée. C'est extrêmement humiliant et enrichissant en même temps.
- Le simple fait d’avoir les yeux d’un autre développeur qualifié sur une large base de mon code a mis en évidence des défauts de mon style que je n’avais jamais pris en compte auparavant (ainsi que des défauts de son code). Pour moi, j'ai appris qu'il est plus facile / préférable de définir des constantes que d'utiliser un ensemble de nombres magiques avec des commentaires détaillés.
Ce projet particulier était basé sur la génération et le décodage de paquets réseau à tous les niveaux de protocoles réseau. Je suis personnellement intéressé par les réseaux de niveau inférieur. Il était donc formidable de discuter avec un autre développeur partageant les mêmes intérêts et connaissances dans le domaine.
Si vous voulez juste vous mouiller les pieds: trouvez un projet que vous utilisez déjà; cloner le référentiel; et commencez à voir si vous pouvez résoudre certains bugs et / ou ajouter des tests unitaires. Il peut sembler intimidant de regarder le code de quelqu'un d'autre d'un œil neuf, mais c'est une compétence extrêmement précieuse à apprendre. Soumettez des correctifs. Vous pouvez vous attendre à ce que votre code soit examiné de près au début. Ne vous inquiétez pas, c'est une partie normale du processus de gagner la confiance des administrateurs du projet.
Après avoir établi une base de mérite avec les projets, les administrateurs commencent à rechercher plus de responsabilités, telles que proposer de nouvelles fonctionnalités ou demander à être affectés à la mise en œuvre des demandes de fonctionnalités.
Si vous ne trouvez pas un projet déjà existant sur l'un des principaux réseaux de référentiels open source (github, sourceforge, code Google), pensez à une application que vous aimeriez vraiment utiliser qui n'existe pas encore et démarrez le vôtre.
Préparez-vous à être humilié et attendez-vous à ce que le travail soit rejeté au profit de nouvelles révisions. Le mythe selon lequel n'importe qui peut ajouter du code à un projet open source est complètement faux. Il y a toujours un portier entre vous et l'accès Push. Plus votre code est bon, moins il sera scruté à la longue à mesure que vous gagnerez la confiance des administrateurs du projet. Si c'est votre projet, vous serez ce gardien.
Mise à jour:
J'y ai juste réfléchi et je me suis rendu compte que je n'avais pas pris la peine de mentionner le projet auquel ma réponse faisait souvent référence. Pour ceux qui veulent savoir, c'est SharpPcap . Le développeur principal, Chris Morgan, est très professionnel et sur le point. Il fait un sacré travail en gérant le projet et m'a beaucoup appris sur ce qu'il faut pour mûrir un projet de logiciel libre.
En raison de contraintes de temps personnelles, je n'ai pas été en mesure de contribuer au code depuis plus d'un an, mais j'essaie toujours de donner en revenant sur Stack Overflow et en répondant à des questions sur SharpPcap de temps en temps.