In this specific case, it's a bug in an API of an internally-used library that other developers use.
Se quegli altri sviluppatori ritenevano che il comportamento fosse una funzionalità, è probabile che lo abbiano usato e abbiano creato software funzionante su di esso. La correzione del bug probabilmente interromperà il codice esistente e ti daranno la colpa per questo. Ciò rende la correzione del bug un compromesso, e devi considerare
-
è davvero importante correggere il bug, ad esempio perché c'è un alto rischio di far sì che gli utenti della tua API blocchino le loro applicazioni nel caso in cui il bug non sia corretto? O si tratta solo della coerenza dell'API?
-
o è più importante mantenere il software esistente stabile e la libreria compatibile all'indietro?
La risposta alla domanda non è sempre semplice, devi prendere in considerazione il numero di possibili utenti della tua API, la quantità potenziale di lavoro che dovranno modificare il loro software, la quantità di software che si interromperà se tu cambia la tua API, ma anche i rischi di ciò che potrebbe accadere se non correggi l'API.
Solo perché si documenta la modifica del bugfix in un "elenco di modifiche irrisolte nella prossima major release" non rendi felici i tuoi clienti - se lo fai, ci dovrebbe essere almeno qualche ragionamento a prova di proiettile perché non puoi permettere al API come era prima. Spesso mantenere la compatibilità con le versioni precedenti è più importante della correzione di un bug. Quindi aggiustalo solo se puoi stimare l'impatto sulla tua base di utenti e il loro software e sei certo che non produrrai sforzi irragionevoli per loro quando tenteranno di aggiornare la tua ultima versione della libreria. E se non hai abbastanza informazioni per fare una buona stima su questo, sarà probabilmente meglio non cambiare il comportamento.
(E sì, se stai per fare una modifica API che non è retrocompatibile, i tuoi numeri di versione devono esprimerlo chiaramente, non importa se lo chiami "bugfix" o meno).