Daran ist wirklich nichts auszusetzen, solange alle Kosten, Nutzen und Risiken tragen können.
... das Update scheint einfach genug zu sein ... um den Code selbst zu patchen
Wenn Sie einen Job zu erledigen haben, ist das Perfekte (eine Bibliothek von Drittanbietern, die genau das ist, was Sie wollen) der Feind des Guten (das Patchen selbst), und manchmal müssen Sie solche Dinge tun. Ich habe eine Reihe von Projekten durchgeführt, in denen wir Quelllizenzen für kommerzielle Bibliotheken gekauft haben, damit wir Probleme beheben können, bevor der Anbieter dazu kam.
... Kritiker argumentieren, dass dies fast immer eine schlechte Idee ist, da es riskant ist und eine lästige Komplexität mit sich bringt.
Es ist eine schlechte Idee, wenn Sie nicht die nötigen Mittel haben, um den Code eines anderen zu zerlegen, ein Problem zu identifizieren und eine Lösung zu finden. Dies gilt unabhängig davon, ob der Code intern oder von Dritten stammt. Der einzige Unterschied ist, ob es über eine Kabine oder eine Gebäudewand geworfen wurde, bevor es in Ihrem Schoß landete.
Wenn Ihre Kritiker die Idee einfach beiseite schieben, ohne die Kosten dafür abzuwägen, dass sie diesen Patch nicht machen, machen sie ihre Hausaufgaben nicht. Wenn Sie eine Menge internen Code haben, der von dem Fehler betroffen ist, den Ihr Patch beheben würde, müssen Sie ihn durchgehen und ändern, um ihn zu umgehen und alles erneut zu testen, um sicherzustellen, dass er ordnungsgemäß funktioniert. Sollten Sie dann jemals ein Upgrade des Pakets auf eine Version mit Fehlerbehebung durchführen, müssen Sie möglicherweise Ihre Problemumgehungen finden, entfernen und erneut testen. Dies birgt auch Risiken, wie das Fehlen eines geänderten Falls oder unzureichende Tests. Persönlich, wenn ich die Gelegenheit habe, einen Fehler an der Quelle zu beheben, würde ich es lieber dort tun, als den Rest des Codes mit einer Fliegenklatsche zu durchforsten und hoffe, ich bekomme alles.
... die Codeänderung wurde von uns vorgenommen ... sie muss Teil unserer Codebasis sein ... wir müssen sie als neues Projekt einführen und ihre automatisierte Erstellung in unseren Erstellungsprozess integrieren.
Wenn Sie einen Patch ausführen, ist der Patch Teil Ihres eigenen Codes, was bedeutet, dass Sie ihn Teil Ihres Prozesses machen müssen. Dies ist nichts anderes als das Hinzufügen von etwas, das zu 100% Ihrem Code entspricht. Behandeln Sie die Distribution eines Drittanbieters als unantastbar und fügen Sie sie wie Quellcode in ein Modul ein. Alle von Ihnen geschriebenen Patches werden in separaten Dateien gespeichert und im Rahmen des Erstellungsprozesses angewendet. Auf diese Weise wechseln Sie immer von einer sauberen Quelle zu einer gepatchten Quelle zu einem erstellten Produkt und können genau zeigen, was los ist. (Einige Leute entpacken, patchen, packen und lagern das in der Versionskontrolle. Das ist schlecht.)
... wir würden ihren Code aus ihrem Quellcodeverwaltungs-Repository in unser Repository ziehen und die Historie hinter jeglichen Codeänderungen verlieren ...
Wenn Sie die Bibliothek eines Drittanbieters als Abhängigkeit eines Drittanbieters behandeln, haben Sie diese Historie zunächst nicht und verlieren nichts. Wenn Sie weiterhin Zugriff auf das Repository des Drittanbieters haben, können Sie dies bei Bedarf nachlesen. Die Releases von Drittanbietern sollten wie amorphe Blobs behandelt werden, die Sie unverändert in Ihr eigenes System einchecken. Wenn Sie sich die Änderungen zwischen der von Ihnen verwendeten Version und späteren Versionen ansehen müssen, können Sie dies tun und, falls Sie möchten, Patches für die alte Version erstellen, die die von Ihnen gewünschten Änderungen enthalten.
Außerdem scheint es einfach viel zu kompliziert für eine so kleine Codeänderung zu sein, die vorgenommen werden muss.
Wenn Ihr Erstellungsprozess ausreichend komplex ist, sollte das Hinzufügen nicht schwieriger sein als das Hinzufügen Ihres eigenen Codes. Es ist ein kleiner Arbeitsaufwand, bis der Entpackungs- / Patch- / Build-Prozess automatisch abläuft, aber sobald er abgeschlossen ist, ist er für immer abgeschlossen. Möglicherweise gibt es jetzt einen Fehler, aber in Zukunft könnten es zwanzig sein. Wenn ja, sind Sie viel glücklicher, dass Sie jetzt die Grundlagen dafür gelegt haben, um all das zu unterstützen, denn die nächsten 19 Jahre werden weniger Arbeit erfordern.