it-swarm-eu.dev

Wie finde ich ein gutes Open Source-Projekt, an dem ich teilnehmen kann?

Ich habe gerade vor einem Jahr angefangen zu arbeiten und möchte aus den gleichen Gründen wie alle anderen an einem Open-Source-Projekt teilnehmen: Helfen Sie dabei, etwas Nützliches zu schaffen und meine Fähigkeiten weiterzuentwickeln.

Mein Problem ist, ich weiß nicht, wie ich ein Projekt finden soll, in das ich passen werde.

Wie finde ich ein anfängerfreundliches Projekt? Nach welchen Attributen sollte ich suchen? Was sind Warnsignale dafür, dass ein Projekt möglicherweise nicht richtig passt? Gibt es Tools, mit denen Menschen mit Open Source-Projekten zusammengebracht werden können?

Es gibt eine ähnliche Frage hier , aber diese Frage hat mit Beschäftigung zu tun und ist auf PHP/Drupal beschränkt.

152
Pops

Mein erster Open-Source-Beitrag war für eine Bibliothek, die ich zuvor für ein zuvor bezahltes Projekt verwendet hatte (und ohne die ich stark gelitten hätte). Während meiner ersten Verwendung hatte ich einen Fehler im Code entdeckt, also habe ich einen Patch erstellt, mich dem Projekt angeschlossen und ihn zur Überprüfung eingereicht.

Ungefähr 8 Monate später, als ich etwas Freizeit hatte, beschloss ich, etwas zurückzugeben (und an meinen Entwicklungsfähigkeiten zu arbeiten), indem ich mehr zum Projekt beitrug. Also habe ich das Repository geklont und mich mit der Codebasis vertraut gemacht. Nachdem ich einige Wochen lang kleinere Patch-Korrekturen an die Codebasis gesendet und die Funktionsanforderungen überwacht hatte, nahm ich eine Funktionsanforderung auf, um dem Projekt ein ziemlich umfangreiches Modul hinzuzufügen.

Da das Generieren vieler einzelner Patch-Fixes für jede bedeutende Entwicklung ziemlich mühsam ist, habe ich das Repository in einen Zweig auf dem Git-Hub geklont und angefangen, Code wegzuschlagen. Einige Wochen und mehrere tausend Codezeilen später arbeiteten der Projektleiter und ich daran, meine Korrekturen so in die Bibliothek zu integrieren und zu testen, dass sie mit dem Rest der Codebasis übereinstimmten.

Es war ein unschätzbarer Prozess, von dem ich viel gelernt habe:

  • Als ich anfing, wusste ich nicht, wie man Git benutzt, am Ende konnte ich effizient Remote-Tracking-Zweige erstellen und sie zusammenführen oder in den Master-Zweig umwandeln, ohne ins Schwitzen zu geraten.
  • Ich habe in VS 2008 angefangen und bin schließlich auf Linux und Monodevelop migriert, um am Schreiben von Code zu arbeiten (weil VS Unicode-verzögert ist und Zeilenenden so nervig sind). Es stellt sich heraus, dass es nicht viel gibt, was Sie in * nix nicht tun können, was Sie in * dows tun können.
  • Ich hatte noch nie zuvor Unit-Tests durchgeführt. Nunit ist ein Kinderspiel und das Schreiben von Unit-Tests ist ziemlich elementar.
  • Ich musste lernen, meine Zunge zu schlucken und zuzuhören sowie Geduld zu üben. Es macht keinen Sinn, Ihre Position in einem Open-Source-Projekt fest zu behaupten, da alle Beteiligten über Kenntnisse verfügen (wahrscheinlich mehr als Sie selbst) und in der Lage sind, Ihre Ideen zu akzeptieren/abzulehnen, wenn die Substanz nicht geliefert wird. Es ist extrem demütig und lohnend zugleich.
  • Nur die Augen eines anderen erfahrenen Entwicklers auf einer großen Basis meines Codes zu haben, wies auf Fehler in meinem Stil hin, die ich noch nie zuvor in Betracht gezogen hatte (und ich wies auf Fehler in seinem Code hin). Für mich habe ich gelernt, dass es einfacher/besser ist, Konstanten zu definieren, als eine Reihe magischer Zahlen mit detaillierten Kommentaren zu verwenden.

Dieses spezielle Projekt basierte auf der Erzeugung und Dekodierung von Netzwerkpaketen auf allen Ebenen von Netzwerkprotokollen. Ich habe ein persönliches Interesse an Netzwerken auf niedrigerer Ebene, daher war es großartig, Gespräche mit einem anderen Entwickler zu führen, der gemeinsames Interesse und Wissen in diesem Bereich hat.

Wenn Sie nur Ihre Füße nass machen möchten: Suchen Sie ein Projekt, das Sie bereits verwenden. Klonen Sie das Repository. und beginnen Sie zu prüfen, ob Sie einige Fehler beheben und/oder einige Komponententests hinzufügen können. Es scheint einschüchternd, die Codebasis eines anderen mit frischen Augen zu betrachten, aber es ist eine äußerst wertvolle Fähigkeit zu lernen. Reichen Sie einige Patches ein. Sie können davon ausgehen, dass Ihr Code zunächst genau unter die Lupe genommen wird. Machen Sie sich keine Sorgen, es ist ein normaler Teil des Prozesses, das Vertrauen der Projektadministratoren zu gewinnen.

Nachdem Sie mit den Projekten eine Leistungsbasis eingerichtet haben, suchen die Administratoren nach mehr Verantwortlichkeiten, z. B. indem sie neue Funktionen vorschlagen oder darum bitten, mit der Implementierung von Funktionsanforderungen beauftragt zu werden.

Wenn Sie ein bereits vorhandenes Projekt in einem der wichtigsten Open Source-Repository-Netzwerke (Github, SourceForge, Google Code) nicht finden können, denken Sie an eine App, die Sie wirklich verwenden möchten und die noch nicht vorhanden ist, und starten Sie eine eigene.

Seien Sie bereit, demütig zu sein, und erwarten Sie, dass Arbeiten zugunsten weiterer Überarbeitungen abgelehnt werden. Der Mythos, dass jeder einem Open Source-Projekt Code hinzufügen kann, ist völlig falsch. Es gibt immer einen Gatekeeper zwischen Ihnen und Push Access. Je besser Ihr Code ist, desto weniger wird er auf lange Sicht überprüft, wenn Sie das Vertrauen der Projektadministratoren gewinnen. Wenn es Ihr Projekt ist, werden Sie dieser Gatekeeper sein.

Update:

Ich habe nur darüber nachgedacht und festgestellt, dass ich nicht erwähnt habe, auf welches Projekt sich viele meiner Antworten beziehen. Für diejenigen, die es wissen wollen, ist es SharpPcap . Der Hauptentwickler Chris Morgan ist sehr professionell und auf den Punkt. Er macht eine verdammt gute Arbeit bei der Verwaltung des Projekts und hat mir viel darüber beigebracht, was es braucht, um ein OSS-Projekt zu reifen.

Aus Zeitgründen konnte ich seit über einem Jahr keinen Code mehr beitragen, aber ich versuche immer noch, etwas zurückzugeben, indem ich auf Stack Overflow lauere und gelegentlich Fragen zu SharpPcap beantworte.

111
Evan Plaice

Hier ist, was ich vorschlage, um Ihre perfekte Übereinstimmung zu finden:

  1. Wenn Sie ein Open-Source-Projekt haben, das Sie bereits verwenden, kennen und interessieren, sollte es Ihr erster Kandidat sein, der es versucht. Überlegen Sie andernfalls, was Sie im Allgemeinen tun möchten, und suchen Sie nach einem Projekt in diesem Bereich.

  2. Wenn Sie ein potenzielles Projekt gefunden haben, stürzen Sie sich nicht darauf. Versuchen Sie es selbst zu benutzen. Ist es so gut in Aktion, wie es aus der Beschreibung und den Bewertungen hervorgeht? Wenn nicht, ist es kein vollständiger Show-Stopper. Vielleicht ist es eine Gelegenheit für Sie, einzuspringen und wirklich etwas zu bewirken. Schließlich braucht niemand einen anderen Entwickler für ein perfektes Produkt. Sie erhalten jedoch einen wichtigen Einblick, ob Sie Teil dieses Projekts sein möchten, während Sie in einem Bereich, an dem Sie interessiert sind, Erfahrungen aus erster Hand mit neuen Technologien sammeln.

  3. Bevor Sie anfangen, zu viel Zeit in das Projekt zu investieren und seine Vor- und Nachteile zu lernen, sollten Sie ein paar Wochen in den Projekt-Mailinglisten, Foren und sogar im Bug-Tracking-System herumhängen. Wenn Sie regelmäßig Beiträge zum Projekt leisten, werden Sie dort viel Zeit verbringen.

Finde heraus: Magst du es dort rumzuhängen oder ist es eine Belastung für dich? Fühlt es sich so an, als hätte dieses Projekt eine gute und energiegeladene Gemeinschaft oder stirbt es langsam? Scheinen Kernleute dort Neulinge zu ermutigen und zu betreuen, oder sind Sie allein?

Wenn Sie diese Schritte für mehrere Projekte ausführen, möglicherweise in verschiedenen Bereichen, ist es weniger wahrscheinlich, dass Sie enttäuscht werden, wenn Sie einem falschen Team beitreten. Eine solche Erfahrung kann Sie möglicherweise davon abhalten, sie in Zukunft erneut durchzuführen.

Noch ein paar Gedanken:

Wenn das Projekt, an dem Sie wirklich interessiert sind, ein hochkarätiges Projekt mit vielen Entwicklern und Aktivitäten ist, wird es Ihnen wahrscheinlich schwer fallen, dort einen ausreichenden Ruf aufzubauen, um beispielsweise Rechte oder eine interessante Rolle in der Community zu übernehmen. In diesem Fall sollten Sie sich einem verwandten Spin-off-Projekt mit geringerer Sichtbarkeit anschließen. Versuchen Sie beispielsweise, anstatt zu versuchen, einen Beitrag zu jQuery zu leisten, ein jQuery-Plugin zu finden, das zu Ihnen passt. Später können Sie überlegen, ob Sie nach oben gehen möchten.

Wenn Ihnen ein Projekt gefällt, Sie sich jedoch von seiner Größe, Komplexität oder den Anforderungen an die Codequalität eingeschüchtert fühlen, sollten Sie von unterstützenden Rollen wie Tests, Dokumentationswartung oder Überprüfung von Fehlerberichten ausgehen. Wenn Sie in der Projekt-Mailingliste fragen, welche Art von Hilfe sie im Moment am dringendsten benötigen, werden sie Sie gerne dorthin führen. :) :)

Auf diese Weise lernen Sie das Projekt kennen und bauen dort Ihren Ruf auf, während Sie viel mehr dazu beitragen, als wenn Sie anfangen würden, Patches unter dem Standard einzureichen, die mehrmals abgelehnt würden, bis sie fertig wären.

Das Letzte und Wichtigste: Wenn Sie sich an einer Stelle verbrennen, fahren Sie fort; geben Sie nicht auf.

Ich hoffe, das hilft.

28
kdubinets

Ich würde Ihnen dringend empfehlen, ein Open-Source-Projekt zu finden, das Ihr aufrichtiges Interesse hat und das Sie aktiv verwenden.

Der Grund ist einfach: Es macht den Unterschied zwischen einer Arbeit und einem Hobby.

Schauen Sie sich Ihren Computer an. Welche Software haben Sie darauf installiert, die Open Source ist? Eine Vermutung wäre Chrome oder Firefox oder vielleicht Open Office oder ein Instant Messenger-Client. Sind sie perfekt oder gibt es nur eine winzige Sache, die Sie ändern möchten, wenn Sie könnten?

Wenn ja, dann ist jetzt die Zeit, etwas dagegen zu unternehmen.

9
user1249

Ich würde vorschlagen, ein Projekt zu finden (oder zu starten), so wie es die Leute seit Jahren tun, und Open Source-Software zu verwenden, um Dinge zu tun. Das mag Ihnen trivial erscheinen, vielleicht sogar zu stark vereinfacht. Es ist jedoch sehr schwer zu beschreiben, wie zufrieden es ist, etwas zu verwenden, einen Fehler zu finden, die Quelle zu finden und zu beheben. Oder ändern Sie es so, dass es so funktioniert, wie Sie es möchten.

Hacken Sie auch nicht nur, um sich zu engagieren. 95% meiner Patches für den Linux-Kernel werden niemals das Licht der Welt erblicken. Ich weiß für sicher , dass niemand sie außer mir wollen würde, und ich würde wahrscheinlich gezwungen sein, mich zu unterziehen Psychiatrische Untersuchung, ob ein anderer kompetenter Kernel-Hacker sie jemals gesehen hat. Aber ich genieße immer noch meine Implementierung von piglatin_printk(), die vor einigen Jahren als Gag am 1. April begann :)

Ja, es ist von unschätzbarem Wert, Ihren Code und Ihren Denkprozess vor viele andere kompetente Leute zu stellen, ebenso wie das Erlernen der Kommunikation und Zusammenarbeit. Ein Solo-Projekt ist eine großartige Möglichkeit, Ihnen zu zeigen, was Sie nicht tun sollten. Hinweis: Es geht um mehr als nur um die Verwendung von Versionskontrollsoftware, Mailinglisten und einem Bug-Tracker.

Um loszulegen, schlage ich vor, Ohloh zu durchsuchen, um zuerst Software zu finden, an der Sie interessiert sein könnten using . Laden Sie es herunter, bauen Sie es, spielen Sie damit. Dann schnapp dir etwas anderes. Irgendwann werden Sie etwas verbessern wollen oder feststellen, dass Sie den Drang haben, etwas völlig anders zu implementieren als das, was Sie gefunden haben.

Das andere, was hilft, ist die Arbeit für ein offenes, freundliches Unternehmen. Meine Firma verwendet Xen ausgiebig, daher haben sie kein Problem damit, interessante Fehler zu finden und zu beheben, da wir das sowieso tun müssten. Sie haben auch nichts dagegen, dass Mitarbeiter an Dingen wie RFCs und Entwurf von Spezifikationen teilnehmen, da wir letztendlich das Ergebnis verwenden werden.

8
Tim Post

OpenHatch wurde speziell dafür erstellt.

Zitieren:

OpenHatch ist eine gemeinnützige Organisation, die sich zum Ziel gesetzt hat, potenzielle Mitwirkende an freier Software mit Communities, Tools und Schulungen zusammenzubringen.

Sie können Projekte nach Typ, Technologie, erforderlichem Kenntnisstand usw. durchsuchen und herausfinden, was Ihrem Niveau entspricht.

7
phw

Eine Sache, die mir wiederholt aufgefallen ist, wenn es um Leute geht, die mit Open Source-Entwicklung beginnen möchten, ist, dass sie von der Komplexität und Größe großer Projekte überwältigt sind. Ich hatte vor ein paar Jahren das gleiche Problem, und meiner Erfahrung nach ist es am besten, sich die größeren Projekte nicht sofort anzuschauen.

Nachdem ich einige Zeit damit verbracht hatte, mir Projekte anzusehen, die mir gefallen könnten, stellte ich fest, dass sie immer noch nicht in meiner Reichweite waren, und begann dann, selbst an sehr kleinen Projekten zu arbeiten. Ich lege Wert darauf, den Code nur auf Github zu veröffentlichen, unabhängig davon, ob er wirklich relevant ist oder ob andere Leute ihn verwenden werden. Irgendwann könnten sich die Leute für das interessieren, was Sie tun. Auch sonst gewinnen Sie Vertrauen und technische Fähigkeit, langsam zu größeren und populäreren Projekten überzugehen.

4
Checksum

Als ich anfing, suchte ich online nach Optionen und es erwies sich als schwierig, etwas zu finden, in das man sich als Anfänger hineinversetzen kann.

Es ist schwierig, zu einigen Projekten beizutragen, nicht weil sie zu weit fortgeschritten sind, sondern weil die Community sie nicht begrüßt. Lassen Sie sich also nicht entmutigen, wenn Sie gegen eine Wand stoßen.

Während der Suche habe ich beschlossen, eine Liste von 10 Open-Source-Projekten zusammenzustellen, die Anfänger ohne viel stressige Prozesse unterstützen können. Hier ist der zu verwendende Link:

Zehn Projekte, die Anfänger unterstützen und von denen sie lernen können

Ich hoffe, Sie finden es hilfreich und Sie können immer mehr hinzufügen, wenn Sie coole finden!

3
Eenvincible

Ich empfehle zu lesen: http://open-advice.org/ .

Es zielt darauf ab, denen zu helfen, die Gemeinschaften schaffen und pflegen, und denen, die nicht sicher sind, welcher sie beitreten möchten oder wie sie dies tun sollen.

Wenn dies nicht gelingt, finden Sie ein Projekt mit einer Mission, die mit Ihnen in Resonanz steht, oder geben Sie einen Beitrag zu einem Projekt, das für Sie bereits nützlich ist.

Viel Glück.

3
user549213

Speziell dafür gibt es eine neue Website namens Code 52 , die neue Entwickler dazu ermutigt, sich auf Open Source einzulassen, indem sie jede Woche ein neues OSS-Projekt starten.

Die Idee ist, dass es für Leute, die noch nie zuvor an Open Source beteiligt waren, viel weniger entmutigend erscheint und hoffentlich eher dazu neigt, sich auch an anderen OSS-Projekten zu beteiligen.

3
Marcus Swope

Ich schlage vor, ein eigenes Projekt zu einem Thema zu starten, an dem Sie interessiert sind.

Durch die Arbeit an einem Projekt im Allgemeinen kann viel gelernt werden. Es ist nicht erforderlich zu sehen, wie jemand anderes codiert, um zu lernen, wie man besser codiert. Und manchmal werden Sie tatsächlich sehen, was Sie nicht tun sollten, da die anderen Menschen oft nicht erfahrener sind als Sie.

Normalerweise ist es hilfreich, den Code anderer zu sehen, aber Sie werden den Code anderer Personen in Ihrem eigenen Projekt nur über die von Ihnen verwendeten Bibliotheken und Komponenten finden.

Die Erfahrung wird Ihnen zeigen, was gute und schlechte Praxis ist.

2
Brian R. Bondy

Ich bin ein Projektbesitzer bei Google Code und suche nach Mitwirkenden. (Dennoch werde ich nicht diese Antwort für Werbung missbrauchen.) Daher könnte meine Meinung für Sie interessant sein.

Sie müssen zuerst herausfinden, woran Sie interessiert sind. Entwickeln Sie dann Fachwissen in einigen Bereichen, die mit Ihren Interessen zusammenhängen. Dann finden Sie ein Projekt, in dem Ihr Fachwissen gefordert und benötigt wird.

Je kleiner das Projekt ist, desto weniger Mitwirkende sind bereits vorhanden, desto größer ist die Wahrscheinlichkeit, dass Mitwirkende gesucht werden, und Sie können sich direkt an die Autoren/Projektbesitzer wenden. Sagen Sie ihnen a) was Ihr Fachwissen ist b) wo Sie sehen, dass es im Projekt angewendet werden könnte c) was Sie zu erreichen glauben.

Denken Sie daran: Nur eine oder zwei gängige Programmiersprachen zu kennen, ist nicht Fachwissen.

2
Ingo