Wie gehe ich vor, wenn ein Fehler in Open Source-Bibliotheken vermutet wird?


8

Wir verwenden einige Open Source-Bibliotheken in unseren Projekten. Manchmal gibt es einige Probleme in einigen von ihnen (höchstwahrscheinlich Bibliotheksfehler, aber es kann auch eine falsche Verwendung von unserer Seite sein, insbesondere wenn die Dokumentation manchmal nicht genau 100% vollständig ist). Da die Bibliotheken oft recht komplex sind, ist es manchmal ziemlich schwierig, sie zu debuggen, um die Ursache des Problems zu ermitteln. Können Sie mir helfen, zusammenzufassen, welche anderen Optionen es gibt und wie ich genau damit umgehen soll?

Ich habe kürzlich einige seltsame Probleme bei der Verwendung von TCMalloc (Google Scalable Memory Allocator) unter Windows festgestellt. Daher würde ich Antworten, die für diese bestimmte Bibliothek gelten, sehr begrüßen, aber auch allgemeinere Antworten sind gut.

1) Bitten Sie den Betreuer / Eigentümer des Projekts um Unterstützung. Wie kann das gemacht werden?

2) Stellen Sie jemanden ein, der das Problem identifiziert und behebt. Wie macht man das? Wie kann ich jemanden mit genügend Fachwissen in einer bestimmten Bibliothek finden?

... noch andere Möglichkeiten?


1
Ich würde Option (1) wärmstens empfehlen. Jede Open-Source-Projektwebsite bietet Platz für die Einreichung von Fehlern oder versucht, Entwickler über ihre Mailingliste zu kontaktieren. Sie sollten in der Lage sein, die Antwort früher zu erhalten, wenn Sie überlegen, ob das Projekt noch läuft.

1
@NinjaCoder: Die Verwendung eines toten Projekts mit schlechter Dokumentation kann eine schlechte Entscheidung sein. Aktivitäten für das Projekt sollten bei der Auswahl berücksichtigt werden.
Matthieu M.

@ Matthieu - Ich stimme dir vollkommen zu.

Fragen Sie das Projekt, nicht bestimmte Personen im Projekt. IE, machen Sie einen Forum Kommentar oder gleichwertig. Sie müssen sich nicht wirklich um das Debuggen des Codes kümmern (es sei denn, Sie möchten sich an der Entwicklung beteiligen), sondern müssen den Entwicklern lediglich die Möglichkeit geben, die Fehler zu reproduzieren. Entwickler erhalten regelmäßig E-Mail-Updates mit Beiträgen von den Entwicklerseiten. Machen Sie eine gute Arbeit bei der Profilerstellung des Problems und die Entwickler werden Sie finden. Erwarten Sie auch keine sofortige Korrektur, da diese höchstwahrscheinlich in der nächsten Version enthalten sein wird.
Evan Plaice

Antworten:


15

Normalerweise versuche ich Folgendes in der richtigen Reihenfolge:

1) Überprüfen Sie die Mailingliste oder die Foren, um festzustellen, ob mein Fehler neu ist, sich bereits im Tracker befindet oder in einer neueren Version / SVN / was auch immer behoben ist

2) Wenn der Fehler nicht bekannt ist, fragen Sie in der Mailingliste danach. Dies ist, wenn Sie erfahren, dass es sich um eine Funktion handelt, nicht um einen Fehler und / oder RTFM;)

3) Wenn der Fehler tatsächlich ein Fehler ist und neu ist, können Sie entweder warten, bis jemand ihn behebt (Sie können helfen, indem Sie zusätzliche Informationen bereitstellen, testen oder debuggen) oder ihn selbst beheben und einen Patch einreichen

Wenn der Fehler dringend behoben werden muss, führen Sie die Schritte 2 und 3 am besten zusammen aus (melden Sie den Fehler und schlagen Sie einen Patch vor). Andernfalls kann Ihr Fehler möglicherweise rechtzeitig behoben werden oder nicht, je nachdem, ob es sich für eine andere Person lohnt, ihn zu beheben. Ich denke, Sie können die Entwickler oder andere Community-Mitglieder "bestechen", um an Ihrem Fehler zu arbeiten, obwohl ich diesen nie ausprobiert habe.


+1 zum Überprüfen der Mailingliste. Ich habe vergessen, das zu erwähnen.
Matt Ellen

Auch in Schritt 2 kann ein kurzer Testfall wirklich helfen. (Dieser Ansatz gilt gleichermaßen für Nicht-Open-Source-Bibliotheken / Komponenten / ...: Je einfacher Sie den Fehler erkennen, desto einfacher ist es, eine Lösung zu finden.)
Richard

@ Matt: Danke. Um fair zu sein, hat nicht jedes Projekt eine aktive Mailingliste oder ein aktives Forum. Glücklicherweise sind die Projekte, die ich am meisten gehackt habe (was nicht zu viel ist), SDL und Ogre, die sehr aktive Communities haben.
Ggambett

5
Sie haben vergessen ... Wenn Sie möchten, dass jemand anderes den Fehler untersucht, geben Sie die Bedingungen an, die erforderlich sind, um den Fehler genau zu reproduzieren. Benutzer, die sich einschalten und sagen, dass Ihr Code kaputt ist, werden ignoriert, während ein verantwortungsbewusster Benutzer, der ein gutes Profil der Auslöser des Fehlers liefert, in der Regel am schnellsten Hilfe erhält (sofern aktive Betreuer vorhanden sind). Das Beheben eines Fehlers, der einen Benutzer direkt betrifft, hat normalerweise höchste Priorität. Diskontieren Sie einfach nicht, dass die Entwicklungszeit wertvoll ist (und sie möglicherweise bereits mit ihrer eigenen Entwicklung für das Projekt verbraucht sind).
Evan Plaice

5

Das Tolle an OSS ist, dass Sie den Quellcode haben!

Sie können das Problem also selbst beheben oder jemanden damit beauftragen.

Das Wichtigste ist, der Community etwas zurückzugeben und Ihren Fix einzuchecken!


4

Der sinnvollste Weg, den ich gefunden habe, wenn Sie ein Problem mit einer Bibliothek haben und nicht über die Fähigkeiten verfügen, das Problem selbst zu finden, besteht darin, sich an die Betreuer zu wenden. Sie kennen den Code und sind dankbar, wenn sie sich über Fehler informieren, wenn dies der Fall ist, oder zeigen Ihnen, wie Sie die Bibliothek richtig verwenden können.

Zum Beispiel hatte ich ein Problem, das ich nicht lösen konnte, als ich eine Site entwickelte, die SVG Web verwendete . Ich habe keine Fähigkeiten zum Erstellen von Aktionsskripten, daher habe ich einen Thread gestartet, in dem nach dem Problem gefragt wurde, und mir wurde gesagt, dass ich einen Fehler mit einem minimalen Testfall protokollieren soll. Es stellte sich heraus, dass das Problem im Browser lag, sodass ich meinen Code leicht tweeken musste.

Wenn Sie klug genug sind, das Problem selbst zu beheben, vergessen Sie nicht, das Gelernte zurückzugeben.


2

Wenn Sie eine gute Idee haben, wie der Fehler reproduziert werden kann, ist das Schreiben eines Komponententests, der den Fehler aufdeckt, ein guter Ausgangspunkt. (Open Source-Projekte verfügen häufig bereits über große Testsuiten.)

Der fehlgeschlagene Komponententest ist eine gute Möglichkeit, dem Projektbetreuer den "Fehler" mitzuteilen. Wenn es sich nicht um einen Fehler handelt, sondern nur um Sie, die ihn falsch verwenden, weist der Betreuer darauf hin, dass dies beabsichtigt ist und meistens einen Grund dafür hat.


1
Leider erfordert der einzige Repro, den ich bisher habe, mehrere GB Daten, unsere Anwendung und mehrere Stunden, um ausgeführt zu werden. Ich werde versuchen, dies als meinen ersten Schritt irgendwie zu reduzieren, da ich verstehe, dass der Repro sowohl für die Betreuer als auch für jeden externen Mitarbeiter, der sich mit dem Problem befasst, von entscheidender Bedeutung sein wird.
Suma

1

Schreiben Sie einen sauberen Testfall und senden Sie ihn an die Mailingliste.

IME finden Sie beim Schreiben des Testfalls häufig einen Fehler in Ihrem eigenen Code.


1

Lesen Sie " How To Ask Questions The Smart Way ", nur weil es noch nicht erwähnt wurde . Es gibt viele wertvolle Ratschläge, wie man Fragen stellt und eine Entwicklungsgemeinschaft um Hilfe bittet. Vieles läuft darauf hinaus, die Funktionsweise der Community zu verstehen und sicherzustellen, dass Sie die Regeln einhalten. Wenn Sie respektvoll sind und eine intelligente Frage stellen, indem Sie alle erforderlichen Details (und das Reproduktionsrezept, falls es sich um einen möglichen Fehler handelt) angeben, erhalten Sie wahrscheinlich eine angemessene Antwort.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.