Wie fange ich an, Fehler in Open Source-Software zu beheben?

8

Ich bin ein Student mit guten Kenntnissen in C-Programmierung und möchte jedes Open-Source-Projekt beitragen, das in C entwickelt wurde. Ich habe SourceForge durchsucht und 7-Zip ausgewählt, weil es weit verbreitet ist und mit C entwickelt wurde.

Ich dachte daran, zuerst Fehler zu beheben (was von vielen Leuten auf ihren Websites vorgeschlagen wurde) und einige Fehler durchzugehen, konnte aber nicht verstehen, wie ich auf sie reagieren und wie ich anfangen soll, sie zu beheben. Ich habe nichts verstanden

Könnten Sie bitte erklären, wie Sie dies angehen sollen? Ich habe sogar einige Dateien im Quellcode durchgesehen, die ich heruntergeladen habe, aber nichts verstanden habe.

suryak
quelle
2
Sie sollten an den Betreuer von 7-zip schreiben und ihn fragen ...
Federico klez Culloca
+1: Sie haben sich einer hervorragenden Herausforderung gestellt. Außerhalb der Schule besteht ein Großteil der Programmierung darin, in Code zu arbeiten, den andere geschrieben haben, um Funktionen hinzuzufügen oder Fehler zu beheben. Sie können auch viel lernen, indem Sie sehen, wie andere Programmierer Dinge getan haben.
Bob Murphy
@suryak: Im 7-Zip-Quellcode sind nur die Kernkomprimierungsalgorithmen in C geschrieben. Alles andere ist in C ++ geschrieben.
Rwong

Antworten:

9

Hier ist ein Vorschlag:
Funktionsanforderungen: Verwenden Sie "Verschieben" anstelle von "Kopieren" aus dem temporären Ordner - ID: 1615140

Können Sie das Verhalten von 7-zip so ändern, dass "move" anstelle von "copy" verwendet wird, wenn 7-zip die Dateien entpackt? Das Problem ist, dass einzelne Festplatten und große Dateien die Dinge erheblich beschleunigen. WinRAR macht es jetzt.

Und ich werde erklären, warum ich diesen Fehler als Beispiel auswähle.

Bevor Sie sich für dieses Projekt entscheiden ...

  • Sind Sie mit dem Quellcode dieses Projekts vertraut?
    • Können Sie sowohl den C-Code (hauptsächlich die Kernkomprimierungsalgorithmen) verstehen?
    • Und auch der C ++ - Code (die meisten "Anwendungen", GUI und Befehlszeile sowie alle Interaktionen mit den Betriebssystemen)?
    • Und auch der Codierungsstil (typisch für die Win32-Programmierung; ohne MFC / ATL)?
  • Werden Sie Ihre Zeit und Mühe in dieses Betriebssystem investieren?

Erster Schritt: Können Sie den Fehler reproduzieren?

  • Um einen Fehler auszuwählen, an dem gearbeitet werden soll, muss das Problem in einer ähnlichen Computerumgebung reproduziert werden können.
    • Für diesen Fehler müssen Sie auf einem Computer testen, auf welchem ​​(1) dem tempOrdner wenig freier Speicherplatz (1-2 GB) vorhanden ist, (2) sich das Extraktionsziel auf demselben Laufwerk wie der tempOrdner befindet.
  • Wie viel Zeit wird benötigt, um die Umgebung für die Reproduktion "einzurichten"?
    • Wählen Sie Fehler, die leicht zu reproduzieren und zu beheben sind.
  • Ist der Fehler wirklich ein Fehler?
    • Versuchen Sie immer, es selbst zu reproduzieren. Verlassen Sie sich nicht nur auf die Worte anderer.
    • Prüfen Sie als Softwareentwickler / Programmierer, ob Sie das Verhalten des Fehlers im Hinblick auf Ihr Verständnis erklären können. Manchmal haben Benutzer unrealistische Erwartungen an die Funktionsweise von Software- / Hardwaresystemen und stellen unmögliche Funktionsanforderungen.
  • Wie bestätige ich mein Verständnis? Woher weiß ich, ob die Datei kopiert oder verschoben wird?
    • Sie benötigen Diagnosetools wie Process Monitor . Sie können auch das Setup Ihres Testgeräts optimieren, um verschiedene Szenarien zu testen.

Zweiter Schritt: Können Sie den Code finden, der für dieses Verhalten verantwortlich ist?

  • Laut Larry Colemans Antwort ist ein grobes Gesamtverständnis des Projekts erforderlich .
  • Es ist am besten, wenn Sie über Visual Studio (eine integrierte Entwicklungsumgebung und einen integrierten Debugger) verfügen, damit Sie Haltepunkte festlegen und den Programmablauf verstehen können.

Dritter Schritt: Nehmen Sie Änderungen vor und sehen Sie, wie sich dies auf das Verhalten des Programms auswirkt.

Vierter Schritt: Präsentieren Sie Ihre Änderungen Ihren Mitarbeitern / Peer-Entwicklern und erhalten Sie Feedback.

rwong
quelle
3

Das Beheben von Fehlern ist möglicherweise nicht die einfachste Sache. Es ist natürlich einfacher als neue Funktionen hinzuzufügen. Noch einfacher ist es jedoch, die Dokumentation zu aktualisieren oder eine neue Version zu testen. In beiden Fällen werden Sie mit dem Code vertraut, sodass Sie genug wissen, um einen Fehler zu beheben. Es gibt auch dem Lernen über den Code einen Sinn, der anderen hilft.

Jeanne Boyarsky
quelle
3

Meiner Meinung nach ist die Kommunikation mit den anderen Entwicklern des Open-Source-Projekts eine sehr wichtige Sache, die viele Menschen übersehen, die Ambitionen haben, zu Open-Source-Menschen beizutragen .

Wenn Sie zu einem Open Source-Projekt beitragen möchten, sollten Sie zunächst verfolgen, was im Projekt geschieht. Wenn es eine Mailingliste, ein Forum, eine Google Group oder eine andere Art der Kommunikation der Entwickler gibt, treten Sie dort bei. Finden Sie heraus, welche Beiträge am dringendsten benötigt werden. Stellen Sie Fragen zur Funktionsweise der Software usw.

Wenn Sie nur den Quellcode herunterladen und versuchen, alles selbst zu verstehen, kostet Sie dies viel mehr Zeit. Wenn Sie etwas reparieren oder eine neue Funktion hinzufügen und diese dann plötzlich präsentieren, ist es weniger wahrscheinlich, dass sie akzeptiert wird.

Sprechen Sie also mit den anderen Entwicklern, finden Sie heraus, welche Fehler oder fehlenden Funktionen mit der höchsten Priorität usw. vorliegen.

Jesper
quelle
2

Ich habe sogar einige Dateien im Quellcode durchgesehen, die ich heruntergeladen habe, aber nichts verstanden habe.

Dies ist der erste Fehler, den Sie beheben sollten. Sie müssen die Codebasis verstehen, bevor Sie mit der Behebung von Fehlern beginnen. Woher wissen Sie sonst, ob Ihre Korrekturen irgendetwas anderes beschädigen?

Es gibt verschiedene Methoden, um sich mit dem Code in einem Projekt vertraut zu machen, an dem Sie teilnehmen. Meine Lieblingsmethode ist es, den gesamten Code einmal durchzulesen und dann die Abschnitte genauer zu betrachten.

Larry Coleman
quelle