Gestern habe ich an einem Rails 5-API-Projekt gearbeitet, in dem die Bibliothek " Acts as Taggable On" verwendet wird, damit Dinge Tags haben können (z. B. Fragen zu SE). Rails 5 ist derzeit in Alpha-Unterstützung. Derzeit gibt es einen PR, der einen Fehler behebt, der darauf wartet, in den Master integriert zu werden. Der Fehler führte dazu, dass mein Feature-Zweig auf halbem Weg zum Stillstand kam. Ich konnte die Funktionalität der Bibliothek nicht implementieren, da das Laden unterbrochen war.
Als schnelle Lösung habe ich einfach das Repo geklont, das Problem mit demselben Code behoben, den der PR hatte, und meine Gemfile (Dependency Version Control File) auf meine eigene Github-Abspaltung verwiesen, bis der Bugfix endgültig wieder mit dem Master verschmolzen ist.
Ich hatte das Glück, dass die Lösung einfach war ( und dass es bereits jemand getan hatte ), sodass ich das Problem umgehen konnte. Was aber, wenn diese Bibliothek für die Entwicklung meiner Anwendung von entscheidender Bedeutung war? Was ist, wenn der Bugfix, der meine Entwicklung stoppte, für andere kein weit verbreitetes Problem war , so dass sich der Fix nicht so schnell herumgesprochen hat wie diesmal?
Stellen Sie sich vor, dass diese Funktion vor der Entwicklung anderer abhängiger Funktionen abgeschlossen werden musste. Was tun Sie in dieser Situation? Was wäre, wenn Tagging für mich für den nächsten Entwicklungsschritt, bei dem sich alles andere darauf stützte , absolut entscheidend wäre - aber die Tagging-Abhängigkeit ist für meine Konfiguration fehlerhaft? Was macht man, wenn kritische Funktionalität einer Abhängigkeit die Entwicklung von (einem) Merkmal (en) behindert?
Und Schwertkämpfe auf Bürostühlen über Stunden oder Tage sind sicherlich keine Option ...
quelle
Die Lösung für die Entwicklung von Anwendungen, bei denen ein hohes Risiko besteht, dass Ihre Arbeit unterbrochen wird, besteht darin, keine Bibliotheken mit hohem Risiko zu verwenden. Langweilig und lahm, ich weiß ..
Sie sagten, dies sei eine Alpha-Version. Verwenden Sie Alpha-Releases nicht für kritische Projekte. Es ist nicht einmal eine Beta-Version, geschweige denn 1.0, so etwas ist zu erwarten. Der gesamte Punkt dieser Phase in einem Projekt besteht darin, Probleme zu finden und das Projekt zu härten.
Wenn Sie sich in dieser Situation befinden, müssen Sie im Grunde das tun, was Sie getan haben (wir haben genau dasselbe getan). Repariere es und PR das Projekt.
Die Lösung besteht jedoch darin, stabilere Bibliotheken mit verstandenen Funktionen und APIs zu verwenden oder zumindest die Abwärtskompatibilität zu einer stabilen Version aufrechtzuerhalten. Sie sollten vorsichtig sein, wenn Sie zu 100% auf etwas angewiesen sind, über das Sie keine Kontrolle haben und das Sie für den Erfolg benötigen.
quelle
Es wird normalerweise empfohlen, Bibliotheken von Drittanbietern hinter Adaptern oder Wrappern zu verstecken, die Sie selbst geschrieben haben. Dies hat zwei Vorteile:
quelle