Ich sprach mit einem Kollegen über ein eher unerwartetes/unerwünschtes Verhalten eines Pakets, das wir verwenden. Obwohl es eine einfache Lösung (oder zumindest einen Workaround) an unserem Ende ohne offensichtlichen Nebeneffekt gibt, hat er dringend empfohlen, den relevanten Code zu erweitern, indem man ihn flickt und den Patch upstream veröffentlicht, hoffentlich irgendwann in der Zukunft akzeptiert zu werden. Tatsächlich pflegen wir Patches für bestimmte Versionen mehrerer Pakete, die bei jedem neuen Build automatisch angewendet werden. Das Hauptargument ist, dass dies das Richtige ist, im Gegensatz zu einem "hässlichen" Workaround oder einem fragilen Affen-Patch. Auf der anderen Seite, bevorzuge ich Praktikabilität gegenüber Reinheit und meine allgemeine Faustregel ist, dass "kein Patch"> "Affe-Patch"> "Hard-Patch", zumindest für etwas anderes als eine (kritische) Bugfix.To (Affe) Patch oder nicht (Affe) Patch, das ist die Frage
Also ich frage mich, ob es einen Konsens gibt, wenn es besser ist, (Hard) Patch, Affe-Patch oder einfach versuchen, um ein Third-Party-Paket zu arbeiten, das nicht genau das tut, was man möchte. Hat es hauptsächlich mit dem Grund für den Patch zu tun (zB einen Fehler beheben, Verhalten ändern, fehlende Funktion hinzufügen), das gegebene Paket (Größe, Komplexität, Laufzeit, Entwicklerreaktion), etwas anderes oder es gibt keine allgemeinen Regeln und eine sollte von Fall zu Fall entscheiden?
Ein weiterer Vorteil des Patch stromaufwärts zu senden ist, dass Sie es Code überprüft erhalten * von den Menschen wer hat die Software * gemacht. Das ist nicht unbedeutend. – Daenyth
Das Einreichen des Patches ist großartig, aber wie hoch ist die Wahrscheinlichkeit, dass Ihr Patch akzeptiert wird? Die Apache-Projekte begannen als eine Reihe von inoffiziellen Patches für NCSA httpd, weil sie aus irgendeinem Grund einfach keine Patches akzeptierten. – Gabe