我正在与一位同事谈论我们使用的某些软件包的一种相当意外/不受欢迎的行为。尽管我们有一个简单的修复(或至少是解决方法),没有任何明显的副作用,但他强烈建议通过硬修补并将补丁发布到上游来扩展相关代码,希望在将来的某个时候被接受。事实上,我们会针对多个软件包的特定版本维护补丁,这些补丁会自动应用于每个新版本。主要论点是这是正确的做法,而不是“丑陋”的解决方法或脆弱的猴子补丁。另一方面,我更喜欢实用性而不是纯度,我的一般经验法则是“无补丁”>“猴子补丁”>“硬补丁”,至少对于(关键)错误修复以外的任何东西。
所以我想知道是否就何时更好地(硬)补丁、猴子补丁或只是尝试解决不能完全按照人们想要的方式解决第三方包达成共识。它是否主要与补丁的原因(例如修复错误、修改行为、添加缺少的功能)、给定的包(大小、复杂性、成熟度、开发人员响应能力)、其他原因或没有一般规则和一个应该根据具体情况决定吗?