Mein erster Open-Source-Beitrag war für eine Bibliothek, die ich zuvor bei einem zuvor bezahlten Projekt benutzt hatte (und ohne die ich sehr gelitten hätte). Während meiner ersten Verwendung hatte ich einen Fehler im Code entdeckt, also erstellte ich einen Patch, schloss mich dem Projekt an und reichte ihn zur Überprüfung ein.
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 Featureanforderungen überwacht hatte, nahm ich eine Featureanforderung entgegen, 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 wegzuschreiben. Ein paar Wochen und mehrere tausend Codezeilen später haben der Projektleiter und ich meine Fixes so in die Bibliothek integriert und getestet, dass sie mit dem Rest der Codebasis konsistent waren.
Es war ein unschätzbarer Prozess, von dem ich viel gelernt habe:
- Als ich anfing, wusste ich nicht, wie man Git verwendet, und konnte am Ende effizient Remote-Tracking-Zweige erstellen und diese in den Master-Zweig einbinden oder neu zusammenfassen, ohne ins Schwitzen zu geraten.
- Ich habe in VS 2008 angefangen und bin dann auf Linux und Monodevelop umgestiegen, um Code zu schreiben. Es stellt sich heraus, dass Sie in * nix nicht viel tun können, was Sie in * dows tun können.
- Ich hatte vorher noch nie wirklich Unit-Tests durchgeführt, Nunit ist ein Kinderspiel und das Schreiben von Unit-Tests ist ein ziemlich elementares Zeug.
- Ich musste lernen, meine Zunge zu schlucken und zuzuhören sowie Geduld zu üben. Es hat keinen Sinn, Ihre Position in einem Open-Source-Projekt zu behaupten, da alle Beteiligten über fundierte Kenntnisse verfügen (wahrscheinlich mehr als Sie selbst) und in der Lage sind, Ihre Ideen zu akzeptieren oder abzulehnen, wenn der Stoff nicht geliefert wird. Es ist extrem demütigend und lohnend zugleich.
- Wenn ich nur die Augen eines anderen erfahrenen Entwicklers auf einer großen Basis meines Codes hatte, wurden Fehler in meinem Stil aufgedeckt, die ich noch nie in Betracht gezogen hatte (und ich wies auf Fehler in seinem Code hin). Ich habe gelernt, dass es einfacher / besser ist, Konstanten zu definieren, als eine Reihe magischer Zahlen mit detaillierten Kommentaren zu verwenden.
Dieses spezielle Projekt basierte auf dem Generieren und Dekodieren 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 ein gemeinsames Interesse und Wissen auf diesem Gebiet hat.
Wenn Sie nur Ihre Füße nass machen möchten: Suchen Sie ein Projekt, das Sie bereits verwenden; Klonen Sie das Repository. und sehen Sie nach, ob Sie einige Fehler beheben und / oder einige Komponententests hinzufügen können. Es scheint einschüchternd, die Codebasis eines anderen mit neuen Augen zu betrachten, aber es ist eine äußerst wertvolle Fähigkeit zu lernen. Senden Sie einige Patches. Sie können davon ausgehen, dass Ihr Code zunächst einer genauen Prüfung unterzogen wird. Mach dir keine Sorgen, es ist ein normaler Teil des Prozesses, das Vertrauen der Projektadministratoren zu gewinnen.
Nachdem Sie mit den Projektadministratoren eine Basis für Verdienste aufgebaut haben, suchen Sie nach mehr Verantwortlichkeiten, z.
Wenn Sie in einem der wichtigsten Open-Source-Repository-Netzwerke (Github, SourceForge, Google Code) kein bereits vorhandenes Projekt finden, denken Sie an eine App, die Sie wirklich verwenden möchten und die es noch nicht gibt, und starten Sie Ihre eigene.
Seien Sie bereit, demütig zu sein, und erwarten Sie, dass die Arbeit zugunsten weiterer Überarbeitungen abgelehnt wird. Der Mythos, dass jeder einem Open-Source-Projekt Code hinzufügen kann, ist völlig falsch. Es ist immer ein Gatekeeper zwischen Ihnen und Push-Zugriff. 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, sind Sie der Gatekeeper.
Aktualisieren:
Ich habe nur darüber nachgedacht und festgestellt, dass ich mir nicht die Mühe gemacht habe, zu erwähnen, auf welches Projekt sich ein Großteil meiner Antwort bezieht. Für diejenigen, die es wissen wollen, ist es SharpPcap . Der Hauptentwickler Chris Morgan ist sehr professionell und sachkundig. Er macht eine verdammt gute Arbeit bei der Leitung des Projekts und hat mir viel darüber beigebracht, wie man ein OSS-Projekt ausgereift macht.
Aufgrund persönlicher Zeitbeschränkungen konnte ich seit über einem Jahr keinen Code mehr beisteuern, aber ich versuche trotzdem, etwas zurückzugeben, indem ich mich auf Stack Overflow stütze und gelegentlich Fragen zu SharpPcap beantworte.