我正在和一位同事谈论我们使用的某些软件包的一个相当意外/不受欢迎的行为。尽管我们有一个简单的修复(或至少是解决方法),没有任何明显的副作用,但他强烈建议通过硬修补并将补丁发布到上游来扩展相关代码,希望在将来的某个时候被接受。事实上,我们针对多个软件包的特定版本维护补丁,这些补丁会自动应用于每个新版本。主要论点是,这是正确的做法,而不是“丑陋”的解决方法或脆弱的猴子补丁。另一方面,我更喜欢实用性而不是纯粹性,我的一般经验法则是“无补丁”>“猴子补丁”>“硬补丁”,至少对于除(关键)错误修复之外的任何内容都是如此。
因此,我想知道何时最好进行(硬)修补、猴子修补或只是尝试解决无法完全满足人们需求的第三方软件包,是否存在共识。它主要与补丁的原因(例如修复错误、修改行为、添加缺失的功能)、给定的包(大小、复杂性、成熟度、开发人员响应能力)、其他原因有关,或者没有通用规则和一个应该根据具体情况决定?
打补丁是“正确的事情”,这是有原因的:对于开源软件,如果您发现了真正的错误,或者需要您怀疑其他人也可能需要的功能,则打补丁并向上游提交补丁是一种方法回馈社区,并为使软件整体变得更好做出贡献。如果补丁被接受,这对您或您公司的声誉来说是免费的+1。没有人会因为他们在简历上向社区贡献了太多有用的开源代码示例而感到悲伤......
并不是说我们总是在当时、在战壕里做正确的事情。但是,如果我们要对最佳实践进行抽象讨论,那么正确的优先顺序似乎是“修补并提交”> 聪明的解决方法 > 找到一个效果更好的包 > 丑陋的猴子补丁;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)