2009-02-07 8 views
5

Eine Sache, die ich immer frustrierend gefunden habe, ist, wenn eine Bibliothek, die ich verwende, nicht mehr gepflegt wird. Selbst wenn ich mir die Update-Historie und die Community vorher angesehen habe, bin ich auf die Situation gestoßen, in der ich später nachschaue, dass die Version, die ich verwende, die letzte Version ist.Was tun Sie, wenn eine von Ihnen verwendete Bibliothek nicht mehr gepflegt wird?

Im Allgemeinen geht so unbemerkt, bis ein paar Monate vergangen sind, oder einige Fehler/Einschränkung gefunden wurde. Ich stoße ziemlich oft darauf, wenn ich in Python kodiere, weil mein Wunsch, auf eine neue Version des Interpreters zu aktualisieren, Probleme in Bibliotheken verursachen kann, die vorher gut funktionierten. Meine Frage ist: Was ist die beste Antwort auf diese Situation?

  • Werden Sie der Betreuer der alten Bibliothek? Selbst wenn Sie nur die Fehler beheben, die Ihnen wichtig sind, ist dies immer noch eine Menge Arbeit. Vor allem, wenn die Bibliothek groß, komplex und weniger als gut dokumentierter Code ist (der Fall häufiger als nicht).

  • Haben Sie in eine andere Bibliothek wechseln (falls vorhanden)? Dies ist auch ein bedeutendes Unterfangen, mit dem Potenzial, neue Fehler einzuführen, insbesondere wenn die einzigen Alternativen das Problem aus einem anderen Blickwinkel betrachten. Dies kann auch dann der Fall sein, wenn Sie vorausschauend eine Abstraktionsschicht für die Funktionalität der alten Bibliothek schreiben wollten.

  • Rollen Sie Ihre eigenen? Es endet wahrscheinlich weniger Code als die alte Bibliothek, da Sie nur die Teile schreiben, die Ihnen wichtig sind. Es ist daher einfacher in der Zukunft zu halten. Aber jetzt haben Sie Tage/Wochen/Monate verschwendet, um etwas zu produzieren, das wahrscheinlich weniger funktional ist und garantiert viele neue Bugs enthält.

Ich weiß, die Antwort auf den speziellen Fall hängt: die Größe der Bibliothek, ob Quelle zur Verfügung steht, wie wartbar ist, wie viel davon Ihr Code verwendet, wie tief Ihr Code stützt sich auf sie, etc Ich suche nach Antworten für eine Reihe von Fällen. Was sind deine Erfahrungen mit diesem Problem?

Antwort

10

Nun, haben Sie ein Argument gefunden, die Anzahl der externen Abhängigkeiten zu verringern ...

Ich habe über diese kommen in mehreren Java Projekte, die ich geprüft habe; Es scheint, dass Leute die Tendenz haben, in ein Glas zu fallen, das irgendwo im Web für die kleinste mögliche Wiederverwendung gefunden wurde. Das Ergebnis ist ein Durcheinander von Abhängigkeiten, die die Code-Basis untergraben. Ich bevorzuge es, externe Komponenten sparsam zu verwenden.

Es ist wahrscheinlich am nützlichsten zu fragen, was Sie tun können vor. Achten Sie darauf, die zukünftige Lebensdauer einer externen Komponente zu bewerten, bevor Sie sie verwenden. Recherchieren Sie, wie groß die Entwickler-Community und die Benutzer-Community sind. Außerdem bevorzugen Sie eine Komponente, die eine oder zwei "kleinere" Alternativen hat, die Sie auch verwenden können.

Wenn Sie versucht sind, etwas zu verwenden, aber nur ein oder zwei Personen daran arbeiten und nicht viel über ihr eigenes Projekt hinaus verwendet werden, dann sollten Sie wahrscheinlich selbst rollen - oder sich mit den Betreuern zusammenschließen der Komponente.

1

Wenn der Java EE Framework mein Arbeitgeber ging Bauch wählte auf, wir gingen aus und fand eine neuere, bessere. Glücklicherweise war Frühling verfügbar.

1

Wenn die Quelle vorhanden ist, die Lizenz ist offen und die Bibliothek macht die Arbeit wirklich gut, haben Sie die Möglichkeit, die Bibliothek gabeln. Auf diese Weise können Sie auch neue Funktionen hinzufügen. Wenn die Bibliothek viele Dinge zu beheben hat und der Code ein Chaos ist, ist es besser, etwas anderes zu finden, mit dem man arbeiten kann.

2

Ich denke, Ihre wirkliche Antwort ist in wie wählen Sie Bibliotheken von Drittanbietern in Ihren Code einbeziehen.

Wenn Sie passieren immer wieder gern Ihren Code auf die neueste Version der Sprache aktualisieren dann standardmäßig können Sie nur Bibliotheken verwenden, die hinter ihnen aktiven Gemeinden haben

In der Tat würde ich gehen so weit zu sagen, dass die einzige Zeit, die Sie eine Open-Source-Bibliothek von Drittanbietern verwenden möchten, ist, wenn die Community dahinter groß ist (sagen Sie mindestens 40 Benutzer) und es hat ein paar Releases durchlaufen.

Für eine kommerzielle Bibliothek gilt das gleiche wie lange wird das Unternehmen herum sein und wie viele andere Kunden es verwenden.

Wenn Sie an dieser Position keine Bibliothek finden können, stellen Sie sicher, dass Sie die Drittanbieterbibliothek aus Ihrem Code abstrahieren, damit der Austausch in Zukunft nicht schwierig wird.

1

Aus diesem Grund ziehen wir es vor, unsere eigenen zu rollen. Am Ende haben wir die volle Kontrolle darüber, wir wissen genau, wie es funktioniert, und wir können es beliebig ändern. Wenn unser Arsch auf der Linie steht, wenn das Schuldspiel gespielt wird, ziehen wir es vor, das Risiko zu reduzieren und es selbst zu machen.

Wir hatten einmal eine Situation, in der wir eine externe Bibliothek benutzten, und sie wurde vom Autor neu geschrieben und wiederverwendet und tat nicht mehr, was wir erwartet hatten. Wir rollten darüber hinweg, schrieben unsere eigene Version und fuhren sicher weiter.

Die Quintessenz ist Sicherheit und Minimierung des Risikos.

Verwandte Themen