Comment puis-je trouver un bon projet open source à rejoindre? [fermé]


152

Je viens de commencer à travailler il y a un an et je souhaite rejoindre un projet open source pour les mêmes raisons que quiconque: m'aider à créer quelque chose d'utile et à développer davantage mes compétences.

Mon problème est que je ne sais pas comment trouver un projet dans lequel je m'intégrerai.

Comment trouver un projet convivial pour les débutants? Quels attributs devrais-je rechercher? Quels sont les signes avant-coureurs qu'un projet pourrait ne pas convenir? Existe-t-il des outils permettant de mettre en correspondance des personnes avec des projets open source?

Il y a une question similaire ici , mais cette question concerne l'emploi et se limite à PHP / Drupal.


9
Cool, je viens de jeter un coup d'œil sur ArsTechnica et j'ai vu cette question présentée dans un article. Voici le lien. arstechnica.com/business/guides/2012/03/…
Evan Plaice

Réponses:


111

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.


pouvez-vous suggérer un site populaire à cet égard?
Aditya P

2
@AdityaGameProgrammer J'insisterais davantage sur la recherche d'un projet spécifique, et non d'un site d'hébergement open source. Les sites d'hébergement ne sont qu'un dépotoir pour les projets open source et certains projets migreront vers d'autres sites si de meilleures fonctionnalités peuvent être trouvées (par exemple, des licences spécifiques prises en charge, un meilleur support du contrôle de version, de meilleurs traqueurs de bogues, etc.). J'ai déjà nommé quelques uns. IMHO, github, google code et sourceforge sont les plus populaires. Launchpad (utilise le contrôle de version bazaar) est l'endroit où vous trouverez la plupart des développements Ububtu / linux en cours.
Evan Plaice

2
@AdityaGameProgrammer (suite) Github, sourceforge et google code sont tous des projets en masse. Parce que sourceforge existe depuis plus longtemps, vous trouverez probablement beaucoup plus de projets morts / orphelins. Il est beaucoup plus facile de trouver un projet auquel adhérer si vous prenez le temps de réfléchir à ce qui vous intéresse en premier. La seule exception est si vous souhaitez héberger votre propre projet. Ensuite, prenez le temps de rechercher les fonctionnalités qui conviennent le mieux à votre flux de travail de développement habituel.
Evan Plaice

Merci. Mes tentatives précédentes pour en trouver un sur sourceforge m'ont conduit à un grand nombre de projets morts / orphelins.
Aditya P

28

Voici ce que je suggère de faire pour trouver votre partenaire idéal:

  1. Si vous utilisez déjà un projet open-source, que vous connaissez et que vous aimez, ce devrait être votre premier candidat à essayer. Penser autrement à ce que vous voulez vous faire en général et la recherche d'un projet dans ce domaine.

  2. Lorsque vous avez trouvé un projet potentiel, ne vous précipitez pas dessus. Essayez de l'utiliser vous-même. Est-ce aussi bon en action qu'il semblait de la description et des critiques? Sinon, ce n'est pas un spectacle complet. c'est peut-être une opportunité pour vous de participer et de vraiment faire la différence. Après tout, personne n’a besoin d’un autre développeur pour obtenir un produit parfait. Mais cela vous donnera une idée importante de votre participation à ce projet, tout en vous permettant d’acquérir une expérience pratique des nouvelles technologies dans un domaine qui vous intéresse.

  3. De même, avant de commencer à investir trop de temps dans le projet et à en apprendre plus sur ses aspects, envisagez de rester dans les listes de diffusion, les forums et même le système de suivi des bogues du projet pendant quelques semaines. Si vous commencez à contribuer régulièrement au projet, vous y passerez beaucoup de temps.

Comprenez-vous: aimez-vous traîner là-bas ou est-ce un problème pour vous? Est-ce que vous avez l'impression que ce projet a une bonne et énergique communauté ou est-ce en train de mourir lentement? Est-ce que les personnes clés ici semblent encourager et encadrer les nouveaux arrivants ou êtes-vous seul?

Suivez ces étapes pour plusieurs projets, potentiellement dans différents domaines, et vous risquez moins de subir la déception qui survient lorsque vous rejoignez une mauvaise équipe. Une telle expérience peut éventuellement vous décourager de le refaire à l'avenir.

Quelques réflexions supplémentaires:

Si le projet qui vous intéresse vraiment est très médiatisé et qu'il compte de nombreux développeurs et activités, vous aurez probablement de la difficulté à y établir une réputation suffisante pour obtenir des droits d'engagement ou un rôle intéressant dans la communauté. Dans ce cas, envisagez de rejoindre un projet dérivé associé avec une visibilité inférieure. Par exemple, au lieu d'essayer de contribuer à jQuery, essayez de trouver le plug-in jQuery qui vous conviendra le mieux. Plus tard, vous pouvez envisager de "monter".

Si vous aimez un projet mais que vous vous sentez intimidé par sa taille, sa complexité ou les exigences de qualité du code, envisagez de commencer par des rôles de support, tels que les tests, la maintenance de la documentation ou la vérification des rapports de bogues. Si vous demandez dans la liste de diffusion du projet le type d’aide dont ils ont le plus besoin en ce moment, ils se feront un plaisir de vous guider. :)

De cette façon, vous apprendrez le projet et vous construirez votre réputation tout en y contribuant davantage que si vous commenciez à soumettre des correctifs non standard qui seraient rejetés plusieurs fois jusqu'à ce qu'ils soient prêts.

Le dernier et le plus important: si vous êtes brûlé à un endroit, passez à autre chose; n'abandonne pas.

J'espère que ça t'as aidé.


2
+1 pour "envisager de partir de rôles secondaires". Écrire des tests est vraiment facile et un examen attentif des tests donne une bonne idée de ce que le code tente d'accomplir. La documentation est un bon moyen de comprendre la situation dans son ensemble, et la vérification des bogues est un bon point d’entrée pour casser la glace avec une barrière minimale. Travailler sur ce que les développeurs négligent généralement montre que votre objectif est d'améliorer le projet et que vos contributions ne sont pas uniquement axées sur l'ego. Les problèmes d'ego peuvent rendre la vie difficile aux responsables de projet, ils doivent donc faire attention à ce genre de chose.
Evan Plaice

9

Je vous recommande fortement de trouver un projet open source qui suscite votre intérêt et que vous utilisez activement .

La raison est simple: cela fait la différence entre une tâche et un passe-temps.

Regardez sur votre ordinateur. Quel logiciel avez-vous mis sur ce qui est Open Source? Une hypothèse serait Chrome ou Firefox, ou peut-être Open Office ou un client Instant Messenger. Sont-ils parfaits ou y a-t-il juste une petite chose que vous voudriez changer si vous le pouviez?

Si tel est le cas, le moment est venu d'agir.


8

Je suggérerais de trouver (ou de démarrer) un projet, comme les gens le font depuis des années, commence à utiliser un logiciel Open Source pour faire des choses. Cela peut vous paraître banal, peut-être même trop simplifié. Cependant, il est vraiment difficile de décrire la satisfaction d'utiliser quelque chose, de trouver un bogue, de saisir la source et de la corriger. Ou peut-être le changer pour qu'il fonctionne comme vous le souhaitez.

Aussi, ne vous contentez pas de bidouiller pour vous impliquer. 95% de mes correctifs pour le noyau Linux ne verront jamais le jour, je sais avec certitude que personne ne les voudra sauf moi, et je serais probablement obligé de subir une évaluation psychiatrique si un autre pirate compétent du noyau les voyait jamais. Mais j'apprécie toujours ma mise en œuvre piglatin_printk()qui a commencé comme un gag du 1er avril il y a plusieurs années :)

Bien que oui, obtenir votre code et votre processus de réflexion devant de nombreuses autres personnes compétentes soit inestimable, vous apprendrez également à communiquer et à collaborer. Un projet solo est un excellent moyen de vous montrer ce qu’il ne faut pas faire. Astuce, il n'y a pas que l'utilisation d'un logiciel de contrôle de version, de listes de diffusion et d'un système de suivi des bogues.

Pour commencer, je vous suggère de creuser autour Ohloh pour trouver des logiciels que vous pourriez être intéressé par l' utilisation , d' abord. Téléchargez-le, construisez-le, jouez avec. Alors va chercher autre chose. Vous finirez par vouloir améliorer quelque chose ou vous vous rendrez compte que vous avez envie de mettre en œuvre quelque chose de complètement différent de ce que vous avez trouvé.

L'autre chose qui aide, c'est de travailler pour une entreprise ouverte et conviviale. Ma société utilise beaucoup Xen, ils n'ont donc aucun problème à ce que je trouve et corrige des bogues intéressants, car nous aurions quand même besoin de le faire. Ils ne voient pas d'inconvénient à ce que les employés participent à des tâches telles que les RFC et les spécifications préliminaires, car nous utiliserons finalement le résultat.


+1 piglatin_printk ()? Cela semble hilarant. J'aimerais voir cela en action. Il n’est pas surprenant que la plupart de vos correctifs de noyau Linux aient été rejetés. Il n’ya pas assez de place pour le plaisir / la créativité dans un projet aussi critique. Heureusement, beaucoup de petits projets ont beaucoup moins de difficultés à accepter du code, même si les contributions nécessitent du travail avant d’être engagées.
Evan Plaice

1
@EvanPlaice Ils n'ont pas été rejetés, ils n'ont jamais été soumis;)
Tim Post

7

OpenHatch a été créé spécifiquement pour cela.

Citer:

OpenHatch est une organisation à but non lucratif dédiée à la mise en correspondance de contributeurs potentiels de logiciels libres avec des communautés, des outils et une éducation.

Vous pouvez parcourir les projets par type, technologie, niveau de compétence requis, etc. et trouver celui qui correspond à votre niveau.


Super petit site :) On peut aussi consulter freecode.com
nha

4

Une chose que j'ai souvent remarquée quand il s'agit de ceux qui cherchent à se lancer dans le développement open source, c'est qu'ils sont submergés par la complexité et l'ampleur des grands projets. J'ai rencontré le même problème il y a quelques années et, d'après mon expérience, il est préférable de ne pas se pencher immédiatement sur les projets les plus importants.

Après avoir passé quelque temps à regarder des projets que je pourrais aimer, je me suis rendu compte qu'ils étaient toujours hors de ma portée et j'ai ensuite commencé à travailler sur de très petits projets par moi-même. Je me fais un devoir de publier le code sur Github, qu'il soit vraiment pertinent ou que d'autres personnes commencent à l'utiliser. Éventuellement, les gens pourraient commencer à s'intéresser à ce que vous faites. Même dans le cas contraire, vous gagnerez en confiance et en capacité technique pour vous déplacer lentement vers des projets plus grands et plus populaires.


3

Il existe un nouveau site Web spécialement conçu pour ce code 52, qui encourage les nouveaux développeurs à s’impliquer dans l’open source en lançant un nouveau projet de logiciel libre chaque semaine.

L'idée est que cela semblera beaucoup moins intimidant pour les personnes qui n'ont jamais été impliquées dans l'open source auparavant et qui, espérons-le, se sentiront plus enclines à s'impliquer également dans d'autres projets de logiciel libre.


1
J'ai étudié la question et j'ai quelques notes à ajouter. Code52 est dirigé par 3 développeurs de la société Readify qui affirme avoir remporté le titre de «partenaire de l'année 2012 de Microsoft». Bien que les projets soient hébergés sur GitHub, ils sont tous écrits dans WinJS (c’est-à-dire cible Win8) et portent la licence publique Microsoft. De prime abord, MPL est copié-gauche mais comporte certaines restrictions imposant aux dérivés d’hériter d’une licence identique ou similaire. Cela ressemble plus à une licence GPL qu'à une licence beaucoup moins restrictive du MIT.
Evan Plaice

Le projet semble très attrayant, mais je ne peux pas m'empêcher de penser qu'il s'agit du programme de création de sharkropping numérique Open Source Developer créé par Microsoft pour peupler le nouvel écosystème Windows 8 sans dépenser un sou. Cela ne ressemble pas à un bonnet en papier d'aluminium, mais MS n'a pas exactement la meilleure réputation en matière d'intégration avec Open Source.
Evan Plaice

1
-1 Apparemment, ce site est mort (pas plus de mises à jour) il y a plus d'un an
Michael Durrant

3

Je recommande de lire: http://open-advice.org/ .

Il vise à aider ceux qui créent et maintiennent des communautés et ceux qui ne savent pas trop à quelle communauté ils souhaitent adhérer ou comment le faire.

Sinon, trouvez un projet qui a une mission en résonance avec vous ou créez-en une et contribuez-en à une qui vous est déjà utile.

Bonne chance.


3

Lorsque j'ai commencé, j'ai cherché en ligne des options et il s'est avéré difficile de trouver quelque chose que vous pouvez mordre à pleines dents en tant que débutant.

Il est difficile de contribuer à certains projets, non pas parce qu’ils sont trop avancés, mais parce que la communauté n’est pas accueillante. Alors, ne vous découragez pas lorsque vous heurtez un mur.

Au cours de la recherche, j'ai décidé de dresser une liste de 10 projets open source que les débutants peuvent commencer à soutenir sans trop de processus stressants. Voici le lien à utiliser:

Dix projets pour les débutants à soutenir et à apprendre

J'espère que vous le trouverez utile et que vous pourrez toujours en ajouter d'autres si vous en trouvez de bons!


cela vous dérangerait-il d'expliquer davantage ce qu'il fait et pourquoi le recommandez-vous comme réponse à la question posée? « Réponses Link-only » ne sont pas tout à fait les bienvenus à Stack Echange
moucheron

2

Je suggère de démarrer un projet par vous-même sur un sujet qui vous intéresse.

On peut apprendre beaucoup en travaillant sur un projet en général. Il n'est pas nécessaire de voir comment quelqu'un d'autre code pour apprendre à mieux coder. Et parfois, vous verrez réellement ce qu'il ne faut pas faire, car les autres personnes ne sont souvent pas plus expérimentées que vous.

Il est généralement utile de voir le code d'un autre utilisateur, mais vous rencontrerez le code d'autres personnes dans votre propre projet via les bibliothèques et les composants que vous utilisez.

L'expérience vous apprendra quelles sont les bonnes et les mauvaises pratiques.


1
Bien que je pense que c'est une bonne idée, le faire en tant que projet débutant peut être intimidant. Surtout quand vous n'avez pas de critiques de code ou d'autres personnes pouvant ajouter des entrées. Mes propres projets ont fait l'objet de nombreuses réécritures et de milliers de lignes de code car personne ne m'a dit que X était meilleur, un problème que j'ai toujours. Rejoindre un projet établi accélérera beaucoup mieux l'apprentissage
TheLQ

@TheLQ: Cela dépend de votre niveau d'expérience, je suppose, faire quelque chose de vous-même vous apprendra beaucoup de leçons et de choses que vous n'apprendriez pas en rejoignant une équipe qui a déjà beaucoup à faire. Selon moi, il y a des biens et des inconvénients dans votre projet ou dans celui de quelqu'un d'autre.
Brian R. Bondy

@TheLQ je suis complètement d'accord. Rejoindre un projet existant est une expérience très précieuse car elle vous donne une idée de la gestion des projets open source et de la structure de l’organisation. Après avoir travaillé sur le projet réussi de quelqu'un d'autre, faire le saut pour créer l'un des miens était une promenade dans le parc.
Evan Plaice

2

Je suis propriétaire de projet sur google code et je recherche des contributeurs. (Pourtant, je ne vais pas abuser de cette réponse pour la publicité.) Mon avis pourrait donc vous intéresser.

Vous devrez d’abord déterminer ce qui vous intéresse. Ensuite, développez une expertise dans certains domaines en rapport avec vos intérêts. Trouvez ensuite un projet où votre expertise est demandée et nécessaire.

Plus le projet est petit, moins les contributeurs sont déjà présents, plus les chances de trouver des contributeurs sont grandes et vous pouvez contacter directement les auteurs / responsables du projet. Dites-leur a) quelle est votre expertise b) où vous pensez que cela pourrait être appliqué dans le projet c) ce que vous pensez pouvoir réaliser.

N'oubliez pas: le simple fait de connaître un ou deux langages de programmation traditionnels ne constitue pas une expertise.


Comment conseilleriez-vous à quelqu'un de déterminer ce qui l'intéresse ou de développer une expertise dans ces domaines?
Adam Lear

2
@Anna Je ne suis pas sûre de comprendre votre question. Je veux dire, il y a des centaines de sujets - des sujets de bas niveau tels que les protocoles réseau ou le fonctionnement interne d'un GPU aux sujets très abstraits et presque mathématiques (analyse syntaxique, systèmes de types, théorie des catégories, etc.). Le plus grand génie ne les maîtrisera pas tous et sera heureux d'avoir quelqu'un qui est expert dans un domaine où lui, le génie, ne l'est pas. Mais quels sont vos intérêts véritables, qui peut le dire si ce n'est vous?
Ingo

1
Ouais, découvrir les intérêts est peut-être assez personnel (ou le conseil revient à "essayer différentes choses et voir ce que vous aimez"), mais qu'en est-il d'acquérir une expertise? Vous dites que ce n'est pas seulement connaître quelques langues. Alors, dans un nouveau sujet, que feriez-vous pour acquérir cette expertise? Pour moi, la participation à un projet OSS ferait partie de ce processus, mais si je vous lis bien, vous suggérez que l’on devrait être un expert avant de rejoindre un projet.
Adam Lear

Qu'est ce que je ferais? Lire des livres. Lire des PDF. Discutez avec quelqu'un que vous connaissez ou dans le réseau. Essayez quelque chose. Entraine toi. Répondez à toutes les questions sur les SO qui se posent à ce sujet. Puis un jour, remarquez que peu de gens savent mieux que vous. - Ne me prenez pas trop littéralement au sujet de "l'expert", mais souvenez-vous que dans les projets open source, comme c'est volontaire, il n'y a aucun moyen de forcer quelqu'un à faire un travail - d'où des gens qui savent ce qu'ils font et qui veulent faire ce qui est le bienvenu.
Ingo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.